科学计算设计数值计算和符号计算,在python中作基础数值计算用numpy和scipy工具库,作符号运算用sympy工具库
sympy工具库–符号运算
符号运算基本知识
1.利用symbols函数创建符号变量构造多个符号变量时中间以空格分隔
2.利用符号变量创建表达式
3.利用符号表达式的subs方法计算表达式的符号值,利用evalf或n方法获得任何对象的浮点近似值
sympy处理有理数的合并,化简
- together函数计算有理数的加法
- apart函数计算有理数的除法
上述together函数实现了分式的通分,apart函数实现了分式的化简
用sympy做符号函数画图
支持二维曲线,三维曲面,隐函数等的画图
sympy在高等数学中的符号解
可以用于求极限,求导数,级数求和,泰勒展开,不定积分和定积分,求方程的解
scipy工具库–数值运算
scipy工具库是对numpy的功能扩展,提供了许多高级数学函数,如微积分,方程求解等
scipy常用模块
微积分模块支持数值积分和微分方程数值解的功能
1.利用quad函数求函数的一重积分,f通常采用lamba函数的形式
2.利用dblquad,tplquad函数求多重积分
求非线性方程(组)的数值解
fsolve函数第一个参数是函数f,由于方程可能不止一个解,后面的参数是guess的解的估计值
高等数学问题的符号解和数值解
求非线性方程组的数值解
一般阶数大于等于5以上的非线性方程组无法找到准确的解的表达式,只能通过一些特殊的方法找到方程在误差范围内的数值解
二分法
python求解
import numpy as np
def binary_search(f,eps,a,b):
c=(a+b)/2
while np.abs(f(c))>eps:
if f(a)*f(c)<0 :b=c
else :a=c
c=(a+b)/2
return c
f=lambda x:x**3-2*x-5
print("二分法求得的根为:",binary_search(f,0.5e-3,2,3))
运行结果
二分法求得的根为: 2.09454345703125
牛顿迭代法
线性代数问题的符号解和数值解
可以求矩阵的行列式,秩,逆矩阵,构造特殊矩阵(单位矩阵),求向量的模等
- sympy求解线性方程组的符号解
- numpy求解线性方程组的数值解