python应用-scipy,numpy,sympy计算微积分

Glory ·
更新时间:2024-09-21
· 943 次阅读

python应用-scipy,numpy,sympy计算微积分

今天来讲一下使用python进行微积分运算,python有很多科学计算库都可以进行微积分运算,当然如果知晓微积分计算的原理也可以自己编程实现。

下面我们用三种方式进行积分运算圆周率pi

numpy计算pi

import os import numpy as np #pi=4(1-1/3+1/5-1/7+1/9-.......) n = 100000 print(np.sum(4.0 / np.r_[1:n:4, -3:-n:-4])) #3.141572693

讲解一下上面的代码
首先,这里的编程思路来源于一个公司,代码中也有注解

pi=4((1-1/3+1/5-1/7+1/9-1/11+1/13…)
这个公式怎么来的,实话说我也不知道
上面的代码思路就是,不可能说按照上面的公式计算无数项从1-1/3+1/5…到无穷项,所以我们就尽可能地去计算,去逼近真实结果,事实上,别的微积分计算函数也不能说就能计算无穷多项,其实也只是一种尽可能地逼近。上面的代码是取了1-1/3…1/99999。取到这个范围。
还要提到一个方法np.r_[]是指按行连接两个矩阵

所以如果我们呢自己去编程其实也是这样的一个思路

下面我给大家举一个很典型的例子。

计算微函数y=x2y=x^2y=x2从0-5的积分,积分思路:将0-5的y=x2y=x^2y=x2图像进行切分,切成1000000个小矩形再求他们的面积和,说到这里很多人可能想起了高等数学教材上有关于这一节的积分知识。

下面给出代码:

import os import numpy as np #pi=4(1-1/3+1/5-1/7+1/9-.......) n=1000000 print(sum((5/1000000)*(np.linspace(0,5,1000000)**2)))

在这里插入图片描述
如果你用数学积分的知识计算,积分结果应该为125/3,上述结果的精确度已经达到0.00001了,下面给出图形并给出绘图代码方便大家形象化了解

x=np.linspace(0,5,1000) y=x**2 plt.figure() plt.xlabel('x') plt.ylabel('y') plt.plot(x,y,label="$y=x^2$") plt.legend() x=np.linspace(0,5,100) for i in x: x_z=[] y_z=[] x_z.append(i) y_z.append(0) x_z.append(i) y_z.append(i**2) plt.plot(x_z,y_z) plt.show()

运行结果:

原创文章 53获赞 13访问量 1463 关注 私信 展开阅读全文
作者:Mr Gao



NumPy 微积分 scipy Python

需要 登录 后方可回复, 如果你还没有账号请 注册新账号