Python在高等数学和线性代数中的应用

Python数学实验与建模学习

目录

1. SymPy工具库

1.1 符号运算基础

1.2 用SymPy做符号函数画图

 2. 高等数学的符号解

2.1 极限

2.2 导数 

2.3 级数求和 

2.4 泰勒展开 

2.5 不定积分和定积分 

2.6 代数方程 

2.7 微分方程 

3. 高等数学问题的数值解

3.1 一重积分

3.1.1 梯形计算

3.1.2 辛普森计算

3.2 多重积分

3.3 非线性方程数值解

3.3.1 二分法求根

3.3.2 牛顿迭代法求根

3.3.3 scipy工具库求解

 3.4 极值点的数值解

3.4.1 一元函数

3.4.2 多元函数

4. 线性代数的符号解和数值解

4.1 线性方程组

4.2 齐次线性方程组 nullspace

4.3 非齐次线性方程

4.4 特征值与特征向量

4.5 可逆矩阵与对角阵


1. SymPy工具库

1.1 符号运算基础

使用SymPy库进行符号计算,首先要建立符号变量及符号表达式。符号变量可以通过库中的symbols()创建。创建多个变量时以空格分隔。也可以将m0:3传入符号函数,生成如m0,m1,m2的符号序列,定义符号变量。

在符号计算中,可以使用evalf()或者n()的方法来获得任何对象的浮点近似值。subs()方法代入值示例如下:

from sympy import *
x,y,z=symbols('x  y  z')
m0,m1,m2,m3=symbols('m0:4')  #创建多个符号变量
x=sin(1)
print("x=",x); 
print("x=",x.evalf())
print("x=",x.n(16))  #显示小数点后16位数字
print("pi的两种显示格式:{},{}".format(pi,pi.evalf(3)))  #这里不能使用n()函数
expr1=y*sin(y**2)  #创建第一个符号表达式
expr2=y**2+sin(y)*cos(y)+sin(z)  #创建第二个符号表达式
print("expr1=",expr1)
print("y=5时,expr1=",expr1.subs(y,5))  #代入一个符号变量的值
print("y=2,z=3时,expr2=",expr2.subs({y:2,z:3}))  #代入y=2,z=3
print("y=2,z=3时,expr2=",expr2.subs({y:2,z:3}).n())  #以浮点数显示计算结果

together和apart方法使用示例如下:

from sympy import *
x1,x2,x3,x4=symbols('m1:5'); x=symbols('x')
print(x1/x2+x3/x4)
print(together(x1/x2+x3/x4))#展开
print((2*x**2+3*x+4)/(x+1))
print(simplify((2*x**2+3*x+4)/(x+1)))  #化简没有效果
print(apart((2*x**2+3*x+4)/(x+1)))

 1.2 用SymPy做符号函数画图

from sympy.plotting import plot
from sympy.abc import x , pi
from sympy.functions import sin,cos

plot((2*sin(x),(x,-6,6)),(cos(x + pi/4),(x,-5,5)))

 

from sympy.plotting import plot3d
from sympy.abc import x , pi
from sympy.functions import sin,sqrt

plot3d(sin(sqrt(x**2 + y**2)),(x,-10,10),(y,-10,10),xlabel = '$x$',ylabel = '$y$')

 

from sympy import plot_implicit as pt,Eq
from sympy.abc import x,y
pt(Eq((x-1)**2 + (y-2)**3,4),(x,-6,6),(y,-4,4),xlabel = '$x$',ylabel = '$y$')

2. 高等数学的符号解

2.1 极限

求极限用limit()

from sympy import *
x = symbols('x')
print(limit(sin(x)/x,x,0))#求出1
print(limit((1 + 1/x)**x,x,oo))#求出e

2.2 导数 

 

 求导数用diff()

from sympy import *
x,y = symbols('x y')
z = sin(x) + x**2 * exp(y)
#二阶偏导数
print(diff(z,x,2))#求出2*exp(y) - sin(x)
#一阶偏导数
print(diff(z,y))#求出x**2*exp(y)

2.3 级数求和 

factor可以把计算结果因式分解,级数求和用summation

from sympy import*
k,n=symbols ('k n')
print(summation(k**2, (k, 1,n)))#n**3/3 + n**2/2 + n/6
print(factor(summation(k**2, (k, 1,n))))#n*(n + 1)*(2*n + 1)/6
print(summation(1/k**2,(k,1,oo)))#pi**2/6
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值