python正方形阴影面积计算_利用Python求阴影部分的面积实例代码

一、前言说明

今天看到微信群里一道六年级数学题,如下图,求阴影部分面积

a9bd6316a0585e7929936e0828c57689.png

看起来似乎并不是很难,可是博主添加各种辅助线,写各种方法都没出来,不得已而改用写Python代码来求面积了

二、思路介绍

1.用Python将上图画在坐标轴上,主要是斜线函数和半圆函数

b755596c9e5a0dc213cde96a6f88c383.png

2.均匀的在长方形上面洒满豆子(假设是豆子),求阴影部分豆子占比*总面积

fcf2e6a1632328b28ad5455062322875.png

三、源码设计

1.做图源码

import matplotlib.pyplot as plt

import numpy as np

def init():

plt.xlabel('X')

plt.ylabel('Y')

fig = plt.gcf()

fig.set_facecolor('lightyellow')

fig.set_edgecolor("black")

ax = plt.gca()

ax.patch.set_facecolor("lightgray") # 设置ax区域背景颜色

ax.patch.set_alpha(0.1) # 设置ax区域背景颜色透明度

ax.spines['right'].set_color('none')

ax.spines['top'].set_color('none')

ax.xaxis.set_ticks_position('bottom')

ax.yaxis.set_ticks_position('left')

ax.spines['bottom'].set_position(('data', 0))

ax.spines['left'].set_position(('data', 0))

# 原下半函数

def f1(px, r, a, b):

return b - np.sqrt(r**2 - (px - a)**2)

# 斜线函数

def f2(px, m, n):

return px*n/m

# 斜线函数2

def f3(px, m, n):

return n-1*px*n/m

if __name__ == '__main__':

r = 4 # 圆半径

m = 8 # 宽

n = 4 # 高

a, b = (4, 4) # 圆心坐标

init()

x = np.linspace(0, m, 100*m)

y = np.linspace(0, n, 100*n)

# 半圆形

y1 = f1(x, r, a, b)

plt.plot(x, y1)

# 矩形横线

plt.plot((x.min(), x.max()), (y.min(), y.min()), 'g')

plt.plot((x.min(), x.max()), (y.max(), y.max()), 'g')

plt.plot((x.max(), x.max()), (y.max()+2, y.max()+2), 'g') # 画点(8,6)避免图形变形

# 矩形纵向

plt.plot((x.min(), x.min()), (y.min(), y.max()), 'g')

plt.plot((x.max(), x.max()), (y.min(), y.max()), 'g')

# 斜线方法

y2 = f2(x, m, n)

plt.plot(x, y2, 'purple')

# 阴影部分填充

xf = x[np.where(x <= 0.5*x.max())]

plt.fill_between(xf, y.min(), f1(xf, r, a, b), where=f1(xf, r, a, b) <= f2(xf, m, n),

facecolor='y', interpolate=True)

plt.fill_between(xf, y.min(), f2(xf, m, n), where=f1(xf, r, a, b) > f2(xf, m, n),

facecolor='y', interpolate=True)

# 半圆填充

plt.fill_between(x, y1, y.max(), facecolor='r', alpha=0.25)

plt.show()

Draw.py

2.计算源码,其中side是要不要计算图形边框上的点,理论上side只能为True;t设置越大运行时间越长也越精准

import numpy as np

def f1(px, r, a, b):

return b - np.sqrt(r**2 - (px - a)**2)

def f2(px, m, n):

return px*n/m

if __name__ == '__main__':

r = 4 # 圆半径

m = 8 # 宽

n = 4 # 高

a, b = (4, 4) # 圆心坐标

t = 100 # 精度

xs = np.linspace(0, m, 2*t*m)

ys = np.linspace(0, n, t*n)

# 半圆形

y1 = f1(xs, r, a, b)

# 斜线

y2 = f2(xs, m, n)

numin = 0

numtotel = 0

side = True # 是否计算边框

for x in xs:

for y in ys:

if not side:

if (x <= 0) | (x >= 8) | (y <= 0) | (y >= 4):

continue

numtotel += 1

if x >= 4:

continue

y1 = f1(x, r, a, b)

y2 = f2(x, m, n)

if y1 - y2 >= 0:

if y2 - y > 0:

numin += 1

if (y2 - y == 0) and side:

numin += 1

elif y2 - y1 > 0:

if y1 - y > 0:

numin += 1

if (y2 - y == 0) and side:

numin += 1

print(32*numin/numtotel)

calc.py

四、最后小结

1.此种算法t为100时,阴影面积为1.268;t为1000时,阴影面积为1.253,已经非常接近正确答案(正确答案1.252)

2.举一反三,类似于这种不规则的面积,只要可以写出来函数,就可以求解面积.

2.下面有三种求解方法,第三种表示比大学高数还难看懂,你们呢?

d737d415cd24f6c77873c85de7882c54.png

aa64f91ac0cdc056b5488053d79cd61b.png

8ff8c54702640588cfa2d7d062093d1f.png

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/497602.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Yann LeCun力挺观点:算法对AI提升不大,奇点仍然很遥远

来源&#xff1a;AI前线策划&#xff5c;Tina&#xff0c;译者&#xff5c;薛命灯、核子可乐、Debra什么是奇点&#xff08;Singularity&#xff09;&#xff1f;奇点是指在未来某个假想的时间点&#xff0c;因为技术发展太过迅速&#xff0c;以致于达到我们无法理解的地步。奇…

Arthas-MathGame

import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.concurrent.TimeUnit; /*** MathGame.<br>* author gongqiang <br>* version 1.0.0 2021年6月4日<br>* see * since JDK 1.5.0*/ public class MathGame {pr…

python matplotlib 散点图_python matplotlib散点图颜色

我试图用x和y网格创建散点图&#xff0c;其中每个点通过预先指定的值获得颜色&#xff1a;{x: 1, y: 2, value: n}我有一个x和y的列表和另一个值列表&#xff0c;尝试使用这个&#xff1a;^{pr2}$错误&#xff1a;Traceback (most recent call last):File "C:\python3.6.6…

PNAS:神经元网络对于长期记忆的重要性

来源&#xff1a;中国生物技术网概要&#xff1a;大脑如何长期存储记忆一直是神经科学家的一个永恒的谜团。大脑如何长期存储记忆一直是神经科学家的一个永恒的谜团。在一项新研究中&#xff0c;来自挪威奥斯陆大学整合神经可塑性研究中心(CINPLA)的研究人员发现&#xff0c;神…

mid函数怎么用mysql_MySQL MID()函数的用法详解(代码示例)-mysql教程-学派吧

在MySQL中&#xff0c;MID()函数返回从指定位置开始的子字符串。MID()和SUBSTR()都是SUBSTRING()的同义词。基本语法是这样的:MID(str,pos,len)这里&#xff0c;str是字符串&#xff0c;pos是起始子字符串的位置&#xff0c;len是一个可选参数&#xff0c;它决定从起始位置返回…

线程WAITING--BlockingQueueDemo

import java.util.Random; import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue;/*** TODO 在此写上类的相关说明.<br>* author gongqiang <br>* version 1.0.0 2021年6月2日<br>* see * since JDK 1.5.0*/ public…

语音入口大战升级!亚马逊Alexa放招:即插即用,霸占你所有空间

来源&#xff1a;AI科技大本营&#xff08;微信ID&#xff1a;rgznai100)翻译 | 刘畅编辑 | Donna&#xff0c;波波大多数人都认为&#xff0c;智能音箱就是语音入口之争的主战场……比如双十一期间&#xff0c;阿里巴巴不惜血本也要99元强推天猫精灵&#xff0c;亏损数亿终于砸…

python开发基本流程_第一阶段:Python开发基础 day06  Python基础语法入门--流程控制(二)...

一、上节课内容回顾三种格式化输出占位符format格式化f-String格式化基本运算符算术运算符比较运算符逻辑运算符赋值运算符身份运算符运算符的优先级流程控制之if判断单分支结构双分支结构多分支结构if判断的嵌套二、流程控制之while循环2.1 什么是循环当你需要重复干一件事情&…

解密人类变革时代:2018年13大科技趋势

来源&#xff1a;中国智慧城市导刊近日&#xff0c;美国著名创投研究机构CB Insights发布了《13 Trends Shaping Tech In 2018》报告&#xff0c;在通过对过去一年的科技研究归总分析后&#xff0c;CB Insights公布了2018年将会兴起并重塑科技行业的13大趋势。汽车可“订阅”使…

线程Blocked--SynchronizedDemo

import java.util.Random;/*** TODO 在此写上类的相关说明.<br>* author gongqiang <br>* version 1.0.0 2021年6月3日<br>* see * since JDK 1.5.0*/ public class SynchronizedDemo {/*** 中间值.*/private Integer value;/*** param args*/public static …

redis取出list最边的一个_六、Redis列表(list)类型参考记录(1)

列表(list)类型可以存储一个有序的字符串列表。常用操作是向列表两端添加元素&#xff0c;或者获得列表的某个片段。列表类型内部使用双向链表(bouble linked list)实现&#xff0c;因此向两端添加元素的时间复杂度为O(1)&#xff0c;获取越接近两端的元素速度就越快。缺点通过…

NovuMind 首秀 CES,展示业界最高性能的 AI 芯片

来源&#xff1a;极客公园概要&#xff1a;神秘低调的硅谷创业公司 NovuMind 亮相本届 CES&#xff0c;向业界首次展示其自主研发的高性能、低功耗的 AI 芯片&#xff0c;为业界带来前所未有的超强算力。2017 年被称作是「人工智能芯片元年」&#xff0c;各路巨头和创业公司奋力…

死锁Waiting--DeadLockDemo

import java.util.concurrent.locks.ReentrantLock;/*** 死锁演示.<br>* author gongqiang <br>* version 1.0.0 2021年6月4日<br>* see * since JDK 1.5.0*/ public class DeadLockDemo {/*** param args*/public static void main(String[] args) {Reentra…

bochs镜像java模拟器_bochs模拟器镜像下载-bochs模拟器win10镜像下载精简版-手机腾牛网...

bochs模拟器win10镜像是专为安卓手机用户打造的一个镜像文件&#xff0c;这个镜像需要与bochs模拟器配合使用&#xff0c;安装后就可以安装win10系统了&#xff0c;让你在安卓手机上也能体验win10操作系统的各种种功能&#xff0c;欢迎下载体验。镜像简介Bochs是一个x86硬件平台…

MIT重磅报告:一文看清AI商业化现状与未来

来源&#xff5c;公众号“AI 前线”&#xff0c;&#xff08;ID&#xff1a;ai-front&#xff09;作者&#xff5c;MIT斯隆管理评论编辑&#xff5c;Emily人工智能显然已经成为 2017 年最为火热的话题之一&#xff0c;越来越多的企业开始关注并探索人工智能的相关实践。为了了解…

Arthas 思维导图笔记

https://www.processon.com/view/link/60b9cd711efad420f6d868a8

揭秘高盛区块链报告:区块链技术在五大领域从理论走向实践 | 附报告下载

来源&#xff1a;亿欧概要&#xff1a;目前对区块链潜在作用讨论的焦点在于使用分布式账本建立去中心化市场&#xff0c;并削弱现有中间商的控制权&#xff0c;但区块链的潜力比这种单薄的说法来得更加细致也更加深远。最近&#xff0c;区块链很火&#xff0c;资本市场沾上“区…

java jcombobox 获取值_从java中的JComboBox获取字符串值

我正在做一个testJComboBox程序.一旦我选择了jCombobox的输出,我就会得到我需要的字符串值.但是,它不起作用.这是我的代码&#xff1a;import java.awt.*;import javax.swing.*;import java.awt.event.*;public class TestJCB extends JFrame {private JLabel genderL;private …

星级评分--演进式部署

1、组件初始配置 2、改进版加入半星评分 3、所有服务都改 1、组件初始配置 2、改进版加入半星评分 3、所有服务都改

CES现场低调的主线,近在咫尺的5G商业化 | CES2018技术趋势

来源&#xff1a;36氪概要&#xff1a;5G的商业化眼看就要来了。同之前几年一样&#xff0c;在今年的CES上&#xff0c;5G也注定是关键词之一。5G技术的商用在日渐迫近&#xff0c;高通、英特尔等公司都在为此努力。5G作为一种基础性的技术&#xff0c;相比于时下风头正盛的AI、…