#本文整理自实验楼,https://www.shiyanlou.com/courses/729,本文直接按照python3格式编写,可以直接执行
#SymPy是符号数学的Python库。它的目标是成为一个全功能的计算机代数系统,同时保持代码简洁、易于理解和扩展。
#SymPy完全是用Python写的,并不需要外部的库。
#例1:解下列二元一次方程
# 2x-y=3
# 3x+y=7
import sympy
#将变量x,y符号化
x = sympy.Symbol('x')
y = sympy.Symbol('y')
#print(type(x))查看x类型
#以上代码也可写作
#x, y = sympy.symbols('x y')
#表达式写法
#加号 +
#减号 -
#除号 /
#乘号 *
#指数 **
#对数 sympy.log()
#e的指数次幂 sympy.exp()
#解方程用solve函数,解一元方程用法
#solve(x*2-4,x),solve返回类型为dict
i=sympy.solve([2 * x - y - 3, 3 * x + y - 7],[x, y])
print (i)
#print(type(i))
#运行结果为{y: 1, x: 2}
#例2:limit函数求极限
#[(n+3)/(n+2)]^n ,n趋紧无穷大,求极值
#print ( sympy.limit(((x+3)/(x+2))**x, x, sympy.oo) )
#以上代码也可写作
n = sympy.Symbol('n')
s = ((n+3)/(n+2))**n
#print(type(s))
print ( sympy.limit(s, n, sympy.oo) )
#符号介绍:
#sympy.oo 无穷大(标识方式是两个小写字母o连接在一起)
#sympy.E e
#sympy.pi 圆周率
#例3:不定积分
x = sympy.Symbol('x')
print( sympy.integrate(sympy.cos(x),x) )
#例4: 定积分
x, t = sympy.symbols('x t')
m = sympy.integrate( sympy.sin(t)/(sympy.pi-t) , (t,0,x) )
#t表示积分变量,0表示积分下限,x表示积分上限
print(m)
#例5: 微分函数
x = sympy.Symbol('x')
print( sympy.diff(sympy.sin(x),x) )
print( sympy.diff(sympy.sin(x),x,2) )#2阶导数
#例6:解微分方程 y'=2xy
f = sympy.Function('f')
x = sympy.Symbol('x')
print ( sympy.dsolve(sympy.diff(f(x),x) - 2*f(x)*x,f(x)) )
#例7: 矩阵化简
# (a11 a12 a13) (x1)
# (x1,x2,x3)*|a12 a22 a23|*|x2|
# (a13 a23 a33) (x3)
x1,x2,x3 = sympy.symbols('x1 x2 x3')
a11,a12,a13,a22,a23,a33 = sympy.symbols('a11 a12 a13 a22 a23 a33')
m = sympy.Matrix([[x1,x2,x3]])
n = sympy.Matrix([[a11,a12,a13],[a12,a22,a23],[a13,a23,a33]])
v = sympy.Matrix([[x1],[x2],[x3]])
f = m * n * v
print (f)
print ( f[0].subs({x1:1, x2:1, x3:1}) ) #令x1,x2,x3都为1