python应用-scipy,numpy,sympy计算微积分
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()
运行结果:
下面介绍的积分方法都是直接调用方法了
在下面的例子中,使用SciPy中提供的数值积分函数quad()计算π:
π=∫−111−x2dx\pi=\int_{-1}^1\sqrt{1-x^2}dxπ=∫−111−x2dx
scipy积分代码:
from scipy.integrate import quad
print(quad(lambda x:(1-x**2)**0.5, -1, 1)[0] * 2 )
#3.141592653589797
如上面代码,quad,接受的第一个参数为一个函数,或者说一个积分公式,后面两个参数分别为积分下限和上限
下面用SymPy提供的符号积分函数integrate()对上面的公式进行积分运算,可以看到 运算的结果为符号表示的π:
代码:
from sympy import symbols, integrate, sqrt
x = symbols("x")
print(integrate(sqrt(1-x**2), (x, -1, 1)) * 2)
积分的方法为intergrate,我们需要先定义一个变量,然后传递参数,第一个参数为积分公式,第二个参数为积分上下限。
python应用-scipy,numpy,sympy计算微积分相关推荐
- Python使用scipy进行多项式计算与符号计算
本文代码主要演示如何使用poly1d进行多项式计算和符号计算. >>> from scipy import poly1d >>> p1 = poly1d([1,2, ...
- python3.7安装numpy库和matplotlib库_详解Python中的Numpy、SciPy、MatPlotLib安装与配置
用Python来编写机器学习方面的代码是相当简单的,因为Python下有很多关于机器学习的库.其中下面三个库numpy,scipy,matplotlib,scikit-learn是常用组合,分别是科学 ...
- python输入数组并计算_利用Python进行数据分析——Numpy基础:数组和矢量计算
利用Python进行数据分析--Numpy基础:数组和矢量计算 ndarry,一个具有矢量运算和复杂广播能力快速节省空间的多维数组 对整组数据进行快速运算的标准数学函数,无需for-loop 用于读写 ...
- 旋度的散度为零证明_(大牛分享)实列讲解:Python Sympy计算梯度、散度和旋度...
今天为大家带来的内容是:(大牛分享)实列讲解:Python Sympy计算梯度.散度和旋度 sympy有个vector 模块,里面提供了求解标量场.向量场的梯度.散度.旋度等计算,官方参考连接: ht ...
- python 利用Scipy计算person 和spearman相关系数
python 利用Scipy计算person 和spearman相关系数 觉得有用的话,欢迎一起讨论相互学习~ 学习以下两位大佬的讲解 (Pearson)皮尔逊相关系数和spearman相关系数(附p ...
- python如何安装Numpy、SciPy、MatPlotLib
飞天狐狸先前有一篇关于python如何安装Numpy.SciPy.MatPlotLib的文章,照做下来,有一些步骤用不到,有一些有差别,下面记录做法.OS=windows,python版本2.7.13 ...
- 层次聚类算法及通过python的scipy进行计算
目录 1.什么是层次聚类? 2. 如何用python实现 参考链接: 1.什么是层次聚类? 常用于 1维数据 的自动分组,如下图所示, 把数据用[主成分分析]的方法把数据从多维压缩为1维, 然后使用层 ...
- Python/Sympy计算梯度、散度和旋度
sympy有个vector 模块,里面提供了求解标量场.向量场的梯度.散度.旋度等计算,官方参考连接: http://docs.sympy.org/latest/modules/vector/inde ...
- Python中scipy中weibull分布的计算
scipy.stats.exponweib:scipy包中计算weibull分布的函数. from scipy.stats import exponweib 密度函数的格式:exponweib.pdf ...
最新文章
- (总结1)HTML5中新增加的表单元素
- 微信扫码支付模式二【无法回调】解决方案
- 被 C# 的 ThreadStatic 标记的静态变量,都存放在哪里了?
- java无符号 uuid,java实现无符号数转换、字符串补齐、md5、uuid、随机数示例
- 无人值守安装之cdrom_无人值守安装
- JavaScript将负数转换为正数
- 央视315曝光SDK事件,应用开发者如何避坑?
- openlayers入门开发系列之图层控制
- 如何判断lib是/md or /mt编译的
- 7个开源的TTS(文本转语音)系统
- 开发一款3D场景编辑器
- HDL.Companion.v2.8.R1.for.Windows linux64 编程开发软件
- 抽签助手|抽签助手2.8绿色免费版下载
- win10滑动关机代码bat_IT之家学院:十秒学会Win10滑动关机教程 - IT之家
- 人工智能如何自我进化
- Flutter CustomPainter实现半圆形饼图
- 应用程序,软件,小程序,APP的区别?
- 解决Win10系统过期失效问题的经验总结
- Response响应详解
- 用二极管、三极管和MOS管搭建逻辑门电路,你确定这些电路图不收藏?
热门文章
- 因数和以及因数个数和问题
- 批改网的英语作文老师设置不允许被粘贴的话,可以使用下面的办法使用复制粘贴功能,快速提交作文
- 先睹为快HTML6来了,看看它的新特性吧
- 如何用c语言对51单片机进行编程,C语言在51单片机编程中的应用技巧
- g6实现左右展开树图(思维导图)
- 将VS编译器默认为X64
- C语言小程序——数的重组
- discuz gbk php在utf8,UTF8怎么换成GBK - Discuz!-安装使用 - Discuz! 官方站 - Powered by Discuz!...
- Android项目---拼图小游戏(上)
- 2014-12-28 iframe,style,body style