-
Notifications
You must be signed in to change notification settings - Fork 0
Sympy
Starslayerx edited this page Apr 7, 2021
·
6 revisions
SymPy 是用于符号数学的 Python 库。 它旨在成为功能齐全的计算机代数系统。 SymPy 包括从基本符号算术到微积分,代数,离散数学和量子物理学的功能。 它可以在 LaTeX 中显示结果。
Sympy基础模块:
- 微积分模块(sympy.integrals)
- 离散数学模块(sympy.discrete)
- 方程求解模块(sympy.slovers)
- 矩阵模块(sympy.matrices)
- 物理学模块(sympy.physcis)
- 统计学模块(sympy.stats)
import sympy
# 单个值
a = sympy.Symbol('a')
# 定义多个值
x = sympy.symbols('x')
y, z = sympy.symbols('y z') # 也可以这样 y, z = sympt.symbols('y, z')
x1, x2, x3, x4 = sympy.symbols('x1:5')
使用sympy.n()
或sympy.evalf()
函数可以取浮点数任意精度近似值
print("{}, {}, {}".format(sympy.pi, sympy.pi.evalf(3), sympy.pi.n(5)))
pi, 3.14, 3.1416
#--------多项式求解--------
#定义变量
x=sympy.Symbol('x')
fx=5*x+4
#使用evalf函数传值
y1=fx.evalf(subs={x:6})
print(y1)
#多元表达式
x=sympy.Symbol('x')
y=sympy.Symbol('y')
fx=x*x+y*y
result=fx.evalf(subs={x:3,y:4})
print(result)
#解方程 有限解
#定义变量
x=sympy.Symbol('x')
y=sympy.Symbol('y')
fx=x*3+9
#可求解直接给出解向量
print(sympy.solve(fx,x))
#解方程无穷多解
#定义变量
x=sympy.Symbol('x')
y=sympy.Symbol('y')
fx=x*3+y**2
#得到是x与y的关系式,
print(sympy.solve(fx,x,y))
#解方程组
#定义变量
x=sympy.Symbol('x')
y=sympy.Symbol('y')
f1=x+y-3
f2=x-y+5
sympy.solve([f1,f2],[x,y])
import sympy
#定义变量
n=sympy.Symbol('n')
f=2*n
#前面参数放函数,后面放变量的变化范围
s=sympy.summation(f,(n,1,100))
print(s)
#解释一下,i可以看做是循环变量,就是x自己加五次
#先定义变量,再写出方程
x=sympy.Symbol('x')
i=sympy.Symbol('i')
f=sympy.summation(x,(i,1,5))+10*x-15
result=sympy.solve(f,x)
print(result)
- 注意,math包中sin和很多数学函数会报错,要用sympy中的,无穷大用 sympy.oo 表示
#求极限使用limit方法
#定义变量与函数
x=sympy.Symbol('x')
f1=sympy.sin(x)/x
f2=(1+x)**(1/x)
f3=(1+1/x)**x
#三个参数是 函数,变量,趋向值
lim1=sympy.limit(f1,x,0)
lim2=sympy.limit(f2,x,0)
lim3=sympy.limit(f3,x,sympy.oo)
print(lim1,lim2,lim3)
#求导使用diff方法
x=sympy.Symbol('x')
f1=2*x**4+3*x+6
#参数是函数与变量
f1_=sympy.diff(f,x)
print(f1_)
f2=sympy.sin(x)
f2_=sympy.diff(f2,x)
print(f2_)
#求偏导
y=sympy.Symbol('y')
f3=2*x**2+3*y**4+2*y
#对x,y分别求导,即偏导
f3_x=sympy.diff(f3,x)
f3_y=sympy.diff(f3,y)
print(f3_x)
print(f3_y)
#求定积分用 integrate方法
x=sympy.Symbol('x')
f=2*x
#参数传入 函数,积分变量和范围
result=sympy.integrate(f,(x,0,1))
print(result)
#求多重积分,先求里面的积分,再求外面的
x,t=sympy.symbols('x t')
f1=2*t
f2=sympy.integrate(f1,(t,0,x))
result=sympy.integrate(f2,(x,0,3))
print(result)
结果是
#求不定积分其实和定积分区别不大
x=sympy.Symbol('x')
f=(sympy.E**x+2*x)
f_=sympy.integrate(f,x)
print(f_)
#数学符合
#虚数单位i
sympy.I
#自然对数低e
sympy.E
#无穷大
sympy.oo
#圆周率
sympy.pi
#求n次方根
sympy.root(8,3)
#求对数
sympy.log(1024,2)
#求阶乘
sympy.factorial(4)
#三角函数
sympy.sin(sympy.pi)
sympy.tan(sympy.pi/4)
sympy.cos(sympy.pi/2)
x=sympy.Symbol('x')
#公式展开用expand方法
f=(1+2*x)*x**2
ff=sympy.expand(f)
print(ff)
#公式折叠用factor方法
f=x**2+1+2*x
ff=sympy.factor(f)
print(ff)
-
二维曲线画图
使用sympy.plot()
函数绘图:plot(表达式, 变量取值范围, 属性 = 属性值)
x = sympy.symbols('x') sympy.plot(sympy.sin(x), (x, -2*sympy.pi, 2*sympy.pi))
若要在同一个图上绘制多个图像使用这种格式:
plot(表达式1, 表达式2, 变量取值范围, 属性 = 属性值)
或者
plot((表达式1, 变量取值范围1), (表达式2, 变量取值范围2))
-
三维曲面绘图
绘制曲面图形sympy.plotting.plot3d(sympy.sin(sympy.sqrt(x**2+y**2)), (x, -10, 10), (y, -10, 10), xlabel = '$x$', ylabel = '$y$')
-
绘制隐函数
绘制隐函数:sympy.plot_implicit(sympy.Eq((x - 1) ** 2 + (y -2 ) ** 3, 4), (x, -6, 6), (y, -2, 4), xlabel = '$x$', ylabel = '$y$')