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

目录
相关文章
|
2月前
|
Python
【10月更文挑战第10天】「Mac上学Python 19」小学奥数篇5 - 圆和矩形的面积计算
本篇将通过 Python 和 Cangjie 双语解决简单的几何问题:计算圆的面积和矩形的面积。通过这道题,学生将掌握如何使用公式解决几何问题,并学会用编程实现数学公式。
165 60
|
29天前
|
搜索推荐 Python
快速排序的 Python 实践:从原理到优化,打造你的排序利器!
本文介绍了 Python 中的快速排序算法,从基本原理、实现代码到优化方法进行了详细探讨。快速排序采用分治策略,通过选择基准元素将数组分为两部分,递归排序。文章还对比了快速排序与冒泡排序的性能,展示了优化前后快速排序的差异。通过这些分析,帮助读者理解快速排序的优势及优化的重要性,从而在实际应用中选择合适的排序算法和优化策略,提升程序性能。
34 1
|
2月前
|
机器学习/深度学习 数据可视化 Python
Python实用记录(三):通过netron可视化模型
使用Netron工具在Python中可视化神经网络模型,包括安装Netron、创建文件和运行文件的步骤。
44 2
Python实用记录(三):通过netron可视化模型
|
1月前
|
机器学习/深度学习 算法 编译器
Python程序到计算图一键转化,详解清华开源深度学习编译器MagPy
【10月更文挑战第26天】MagPy是一款由清华大学研发的开源深度学习编译器,可将Python程序一键转化为计算图,简化模型构建和优化过程。它支持多种深度学习框架,具备自动化、灵活性、优化性能好和易于扩展等特点,适用于模型构建、迁移、部署及教学研究。尽管MagPy具有诸多优势,但在算子支持、优化策略等方面仍面临挑战。
67 3
|
2月前
|
Python
【10月更文挑战第15天】「Mac上学Python 26」小学奥数篇12 - 图形变换与坐标计算
本篇将通过 Python 和 Cangjie 双语实现图形变换与坐标计算。这个题目帮助学生理解平面几何中的旋转、平移和对称变换,并学会用编程实现坐标变化。
66 1
|
2月前
|
机器学习/深度学习 移动开发 Python
【10月更文挑战第11天】「Mac上学Python 22」小学奥数篇8 - 排列组合计算
本篇将通过 Python 和 Cangjie 双语讲解如何计算排列与组合。这道题目旨在让学生学会使用排列组合公式解决实际问题,并加深对数学知识和编程逻辑的理解。
65 4
|
2月前
|
数据可视化 Python
【10月更文挑战第12天】「Mac上学Python 23」小学奥数篇9 - 基础概率计算
本篇将通过 Python 和 Cangjie 双语实现基础概率的计算,帮助学生学习如何解决简单的概率问题,并培养逻辑推理和编程思维。
53 1
|
29天前
|
数据采集 数据可视化 数据挖掘
使用Python进行数据分析和可视化
【10月更文挑战第33天】本文将介绍如何使用Python编程语言进行数据分析和可视化。我们将从数据清洗开始,然后进行数据探索性分析,最后使用matplotlib和seaborn库进行数据可视化。通过阅读本文,你将学会如何运用Python进行数据处理和可视化展示。
|
2月前
|
数据采集 Web App开发 数据可视化
Python爬虫教程:Selenium可视化爬虫的快速入门
Python爬虫教程:Selenium可视化爬虫的快速入门
|
2月前
|
数据采集 数据可视化 数据挖掘
使用Python进行数据处理与可视化——以气温数据分析为例
【10月更文挑战第12天】使用Python进行数据处理与可视化——以气温数据分析为例
257 0