python定义函数求面积公式_python求积分面积的几个方法
示例
已知积分公式如下
求[0.5,5]上积分,即求下图阴影部分面积
根据积分公式求源函数等于:
则确切解等与F(5)-F(0.5)=3.9002072872864524
当不知道源函数时使用以下方法可以求得积分面积
首先定义函数
def func(x):
return np.cos(np.pi) * np.exp(-x) + 1
1、通过迭代计算每个步长矩形面积求和
x = np.linspace(0.5, 5, 1000)
dx = (5-0.5)/1000
y = func(x)
area = np.sum(y * dx)
结果等于:3.8994262124710404
2、通过scipy模块quad直接求积分
area, error = quad(func, 0.5, 5)
quad的结果是 3.9002072872864515
3、使用蒙特卡洛模拟估算积分面积
原理是已知区间【0.5,5】上矩形面积,在矩形范围内随机打点,统计在阴影部分点的占比,从而估算出阴影部分面积。
k = 0
for i in range(N):
r_x = np.random.uniform(low=0.5, high=5, size=1)
r_y = np.random.uniform(low=0, high=1, size=1)
c_v = func(r_x)
if r_y <= c_v:
k += 1
area = k / N * 4.5
蒙特卡洛的结果是 3.9393
所有代码如下
# @Time : 2020/8/26
# @Author : 大太阳小白
# @Software: PyCharm
# @blog:https://blog.csdn.net/weixin_41579863
import numpy as np
from scipy.integrate import quad
from matplotlib import pyplot as plt
def func(x):
return np.cos(np.pi) * np.exp(-x) + 1
def drawing_question(fig):
x = np.linspace(0, 6, 1000)
y = func(x)
fig = plt.figure()
ax1 = fig.add_subplot()
ax1.axis([np.min(x), np.max(x), 0, np.max(y)]) # 坐标范围
ax1.plot(x, y, label="$cos(π)e^{-x}+1$") # 画曲线,带图示
ax1.fill_between(x, y1=y, y2=0, where=(x >= 0.5) & (x <= 5), # 填充积分区域
facecolor='blue', alpha=0.2)
ax1.text(0.5 * (0.7 + 4), 0.4, r"$\int_{0.5}^5(cos(π)e^{-x}+1)\mathrm{d}x$",
horizontalalignment='center', fontsize=14) # 增加说明文本
ax1.legend() # 显示图示
plt.show()
def area_sum():
x = np.linspace(0.5, 5, 1000)
dx = (5-0.5)/1000
y = func(x)
area = np.sum(y * dx)
return area
def area_quad():
area, error = quad(func, 0.5, 5)
return area
def montecarlo(N=5000):
k = 0
for i in range(N):
r_x = np.random.uniform(low=0.5, high=5, size=1)
r_y = np.random.uniform(low=0, high=1, size=1)
c_v = func(r_x)
if r_y <= c_v:
k += 1
area = k / N * 4.5
return area
def montecarlo_show(N=5000):
k = 0
x0 = []
x1 = []
for i in range(N):
r_x = np.random.uniform(low=0.5, high=5, size=1)
r_y = np.random.uniform(low=0, high=1, size=1)
c_v = func(r_x)
if r_y <= c_v:
k += 1
x0.append([r_x, r_y])
else:
x1.append([r_x, r_y])
x = np.linspace(0, 6, 1000)
y = func(x)
x0 = np.array(x0)
x1 = np.array(x1)
fig = plt.figure()
ax1 = fig.add_subplot()
ax1.axis([np.min(x), np.max(x), 0, np.max(y)])
ax1.plot(x, y, label="$cos(π)e^{-x}+1$")
ax1.scatter(x0[:, 0], x0[:, 1])
ax1.scatter(x1[:, 0], x1[:, 1])
ax1.fill_between(x, y1=y, y2=0, where=(x >= 0.5) & (x <= 5),
facecolor='blue', alpha=0.2)
ax1.text(0.5 * (0.7 + 4), 0.4, r"$\int_{0.5}^5(cos(π)e^{-x}+1)\mathrm{d}x$",
horizontalalignment='center', fontsize=14) # 增加说明文本
ax1.legend() # 显示图示
plt.show()
if __name__ == '__main__':
# drawing_question()
original = lambda x: np.exp(-x) + x
print('期望值是:', original(5)-original(0.5))
print('基于矩形面积求和的结果是', area_sum())
print('quad的结果是', area_quad())
print('蒙特卡洛的结果是', montecarlo())
montecarlo_show(N=500)
本文地址:https://blog.csdn.net/weixin_41579863/article/details/108239755
希望与广大网友互动??
点此进行留言吧!
python定义函数求面积公式_python求积分面积的几个方法相关推荐
- python定义函数的组成部分有_Python文档学习笔记(4)--定义函数
定义函数 关键字 def 引入函数的定义.其后必须跟有函数名和以括号标明的形式参数列表.组成函数体的语句从下一行开始,且必须缩进. 执行 一个函数会引入一个用于函数的局部变量的新符号表. 因此,在函数 ...
- python定义函数的关键字是_python 函数定义
python 函数 ---------------- ---------------- ---------------- ---------------- def test(x): print(x) ...
- python定义函数的组成部分有_Python学习笔记之函数的定义和作用域实例详解
本文实例讲述了Python函数的定义和作用域.分享给大家供大家参考,具体如下: 定义函数 默认参数: 可以向函数中添加默认参数,以便为在函数调用中未指定的参数提供默认值 # 如果调用 cylinder ...
- python定义函数后怎么输出_python中如何定义函数返回值
返回值简介: 简单介绍print和return的区别,print仅仅是打印在控制台,而return则是将return后面的部分作为返回值作为函数的输出,可以用变量接走,继续使用该返回值做其它事. 函数 ...
- python定义函数的组成部分有_Python基础11- 函数之自定义函数
自定义函数语法结构: def fun1([x],[y],....): 语句1 语句2 使用def语句来定义函数,在def后依次写出函数名.小括号.参数(可无).冒号,然后缩进写函数体 1.无参函数: ...
- python定义函数以什么开头_python中下划线开头函数是什么
python用下划线作为变量前缀和后缀指定特殊变量 _xxx 不能用'from module import *'导入 __xxx__ 系统定义名字 __xxx 类中的私有变量名 核心风格:避免用下划线 ...
- python求导函数公式_python怎么实现函数求导
python实现函数求导的方法是:1.利用sympy库中的symbols方法传入x和y变量:2.利用sympy库中的diff函数传入需要求导的函数即可返回求导之后的结果. python利用sympy库 ...
- python如何调用函数计算出成绩的不及格率_(求excle公式:95分以上为优、94分-85分为良、84分-75分为中、74分-60分为合格、60分以下为不合格)excel成绩及格率...
Excle中怎么找出指定行 ①excel中的数据筛选功能.可以操作,选择表头的任意一个单元格,单击菜单栏"数据"--->"筛选"--->" ...
- python定义函数
python 定义函数 def functionName(list of parameters):#函数定义时并不会执行,调用时才执行functionBodyreturn value 有参数有返回值 ...
最新文章
- 百度运营专家:互联网运营必读书目(实用推荐)
- 福利 | 全网疯传免费领,一整套算法课程,拿走不谢!
- 2021年春季学期期末统一考试 成本管理 试题
- Web前后端笔记-vue封装http请求添加signature及后端(Java)解析并验证
- weblogic 调优参数
- 架构实战项目心得(一):技术和工具
- Tech-Ed2004的收获
- 记录自己在厦门两年来的面试经历--完结篇
- AndroidStudio:设计一个能在图片上涂鸦的程序
- Latch up 闩锁效应
- 网络通信基础——网络协议
- java调用百度语音接口
- 什么是STM32的ISP?
- Windows下装MySQL
- mysql经典sql语句大全_经典SQL语句大全(sql查询语句大全集锦)
- 哲理故事300篇(上)
- 面试笔记@MySQL
- 【面经】今天又一名读者斩获蚂蚁金服Offer,就是这么简单!!
- vue3 动态传值给子组件
- 安卓APP安装兼容性[应用是非正式发布版本, 当前设备不支持安装。]