Python 基于积分原理计算定积分并可视化数值积分计算的动画过程

简介: 积分原理计算定积分并可视化

一、问题描述


有这样一个问题,如下所示:



image.png


二、代码实现


1.  并基于积分原理计算 image.png 的值  


deffunc(x):
returnx**3+1down=0upper=1interval=np.linspace(start=down, stop=upper, num=100)
result=0foriinrange(0, len(interval) -1):
left=interval[i]
right=interval[i+1]
width=right-leftheight=func(left)
area=width*heightresult+=areaprint(f"{result:.2f}")


结果如下:



取 50 个矩形计算数值积分的时候,已经可以得到 1.24 的结果。


2. 可视化积分的动画过程


导入需要的依赖库:


importnumpyasnpimportmatplotlib.pathaspathimportmatplotlib.pyplotaspltimportmatplotlib.patchesaspatchesfromIPython.displayimportHTMLfrommatplotlib.animationimportFuncAnimationimportwarningswarnings.filterwarnings("ignore")


其中,numpy 用来生成点数据,path 是用来生成路径,patches 通过路径连接绘制图像。


更新函数如下:


# 更新函数defupdate(frame):
globalpoints, verts, codes# x轴间隔距离  每个bindx= (interval[1] -interval[0]) /binspoints=np.append(points, [[frame, func(frame)]], axis=0)
verts=np.append(verts,
                          [[frame, 0], [frame, func(frame)], [frame+dx, func(frame)], [frame+dx, 0]], axis=0)
ln[0].set_data(list(zip(*points)))
codes.extend([path.Path.MOVETO] + [path.Path.LINETO] *3)
barpath=path.Path(verts, codes)
patch=patches.PathPatch(barpath,
facecolor='blue',
edgecolor='yellow', alpha=0.6)
ax.add_patch(patch)
returnpatch, ln[0]


初始化 fig 对象与 FuncAnimation 启动动画:


fig, ax=plt.subplots(figsize=(6, 4), dpi=100)
ax.axis(interval)
globalpoints, verts, codescodes= []
verts=np.empty((0, 2), np.float64)
points=np.empty((0, 2), np.float64)
plt.rcParams['font.sans-serif'] = ['Times New Roman']
plt.rcParams['axes.unicode_minus'] =Falseln=plt.plot([], [], 'ro')
# 设置坐标轴刻度标签的大小plt.tick_params(axis='x', direction='out',
labelsize=12, length=3.6)
plt.tick_params(axis='y', direction='out',
labelsize=12, length=3.6)
# x y 轴标签   标题   字体设置plt.xlabel("x", 
fontdict={"size": 16, "weight": "bold", "color": "black"})
plt.ylabel("f(x)",
fontdict={"size": 16, "weight": "bold", "color": "black"}
          )
plt.grid(alpha=0.48, ls=":")
# FuncAnimation动画  传入fig对象、更新函数 framesanim=FuncAnimation(fig, update,
frames=np.linspace(*interval[:2], bins),
                        )


Python代码跑起来,如下所示:



补充学习:


https://blog.csdn.net/lhys666/article/details/123451524

https://blog.csdn.net/lhys666/article/details/122776649

目录
相关文章
|
3天前
|
机器学习/深度学习 人工智能 算法
机械视觉:原理、应用及Python代码示例
机械视觉:原理、应用及Python代码示例
|
2天前
|
新零售 分布式计算 数据可视化
数据分享|基于Python、Hadoop零售交易数据的Spark数据处理与Echarts可视化分析
数据分享|基于Python、Hadoop零售交易数据的Spark数据处理与Echarts可视化分析
|
4天前
|
数据采集 数据可视化 数据处理
Python从入门到精通的文章3.3.1 深入学习Python库和框架:数据处理与可视化的利器
Python从入门到精通的文章3.3.1 深入学习Python库和框架:数据处理与可视化的利器
|
10天前
|
数据可视化 算法 数据挖掘
PYTHON实现谱聚类算法和改变聚类簇数结果可视化比较
PYTHON实现谱聚类算法和改变聚类簇数结果可视化比较
|
11天前
|
Python 数据可视化 索引
PYTHON用GARCH、离散随机波动率模型DSV模拟估计股票收益时间序列与蒙特卡洛可视化
PYTHON用GARCH、离散随机波动率模型DSV模拟估计股票收益时间序列与蒙特卡洛可视化
24 0
PYTHON用GARCH、离散随机波动率模型DSV模拟估计股票收益时间序列与蒙特卡洛可视化
|
11天前
|
Python Serverless API
Python风险价值计算投资组合VaR、期望损失ES
Python风险价值计算投资组合VaR、期望损失ES
25 0
Python风险价值计算投资组合VaR、期望损失ES
|
11天前
|
存储 机器学习/深度学习 数据可视化
Python面板时间序列数据预测:格兰杰因果关系检验Granger causality test药品销售实例与可视化
Python面板时间序列数据预测:格兰杰因果关系检验Granger causality test药品销售实例与可视化
57 6
|
11天前
|
机器学习/深度学习 数据可视化 算法
PYTHON用决策树分类预测糖尿病和可视化实例
PYTHON用决策树分类预测糖尿病和可视化实例
17 0
|
11天前
|
数据可视化 算法 Python
python中的copula:Frank、Clayton和Gumbel copula模型估计与可视化
python中的copula:Frank、Clayton和Gumbel copula模型估计与可视化
25 0
|
12天前
|
自然语言处理 数据可视化 Python
python主题建模可视化LDA和T-SNE交互式可视化
python主题建模可视化LDA和T-SNE交互式可视化
16 0