Skip to content
Starslayerx edited this page Apr 7, 2021 · 6 revisions

SymPy 是用于符号数学的 Python 库。 它旨在成为功能齐全的计算机代数系统。 SymPy 包括从基本符号算术到微积分,代数,离散数学和量子物理学的功能。 它可以在 LaTeX 中显示结果。
Sympy基础模块:

  1. 微积分模块(sympy.integrals)
  2. 离散数学模块(sympy.discrete)
  3. 方程求解模块(sympy.slovers)
  4. 矩阵模块(sympy.matrices)
  5. 物理学模块(sympy.physcis)
  6. 统计学模块(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

高等数学

1、表达式与表达式求值:

#--------多项式求解--------

#定义变量

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)

2、函数方程求解:

#解方程 有限解

#定义变量

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])

3、求和

img

import sympy

#定义变量
n=sympy.Symbol('n')
f=2*n



#前面参数放函数,后面放变量的变化范围
s=sympy.summation(f,(n,1,100))
print(s)

4、解带有求和式的方程 :

img

#解释一下,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)

5、求极限

  • 注意,math包中sin和很多数学函数会报错,要用sympy中的,无穷大用 sympy.oo 表示

img

img

img

#求极限使用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)

6、求导

#求导使用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)

7、求定积分

img

#求定积分用 integrate方法
x=sympy.Symbol('x')
f=2*x



#参数传入 函数,积分变量和范围
result=sympy.integrate(f,(x,0,1))
print(result)

8、以下计算多重积分:

img

img

#求多重积分,先求里面的积分,再求外面的
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)

9、求不定积分

img 结果是 img

#求不定积分其实和定积分区别不大
x=sympy.Symbol('x')

f=(sympy.E**x+2*x)

f_=sympy.integrate(f,x)

print(f_)

10、数学符合补充:

#数学符合

#虚数单位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)

11、公式展开与折叠

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)

符号函数绘图

  1. 二维曲线画图
    使用sympy.plot()函数绘图: plot(表达式, 变量取值范围, 属性 = 属性值)

    x = sympy.symbols('x')
    sympy.plot(sympy.sin(x), (x, -2*sympy.pi, 2*sympy.pi))

    sinx
    若要在同一个图上绘制多个图像使用这种格式:
    plot(表达式1, 表达式2, 变量取值范围, 属性 = 属性值)
    或者
    plot((表达式1, 变量取值范围1), (表达式2, 变量取值范围2))

  2. 三维曲面绘图
    绘制曲面图形 img

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

    sqrt

  3. 绘制隐函数
    绘制隐函数: poly

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

    yinhanshu

Clone this wiki locally