程序员用SymPy

程序员用SymPy

为什么要用SymPy?

数学公式化简、推理、因式分解。作为程序员还可以挖掘一下它启发式推理的潜力。

怎样安装?

sympy只有一个依赖项就是mpmath,安装命令如下,建议在python3环境下安装。

pip3 install mpmath
pip3 install sympy

如果会用docker的话就更简单了,只需要运行下面一条命令,然后根据日志提示的token访问本机的8888端口,IDE和运行环境就都好了。当然了下面这种方式如果您一点开发经验都没有,还是需要折腾一段时间的,要理解docker、python、jupyter等等。

docker run --name NB_Demo -d -p 8888:8888 jupyter/demo

怎样使用?

一、打印数学公式

  • 打印为位图方式
from sympy import *
x= symbols('x')
init_printing(use_unicode=True)
integrate(exp(x)*sin(x) + exp(x)*cos(x), x)

e x s i n ( x ) e^{x} sin(x) exsin(x)

  • 打印为ASCII码
pprint(Integral(sqrt(1/x), x), use_unicode=False)
  /          
 |           
 |     ___   
 |    / 1    
 |   /  -  dx
 | \/   x    
 |           
/         
  • 打印为LaTeX
print(latex(Integral(sqrt(1/x), x)))
\int \sqrt{\frac{1}{x}}\, dx

二、因式合并与展开

  • 因式展开
from sympy import *
x, y, z = symbols('x y z')
init_printing(use_unicode=True)
expand((x+1)**2)

x 2 + 2 x + 1 x^{2} + 2 x + 1 x2+2x+1

  • 因式合并
factor(x**2*z + 4*x*y*z + 4*y**2*z)

z ( x + 2 y ) 2 z (x + 2 y)^{2} z(x+2y)2

  • 三角函数、矩阵都可以
# 展开三角函数
expand((cos(x) + sin(x))**2)

s i n 2 ( x ) + 2 s i n ( x ) c o s ( x ) + c o s 2 ( x ) sin^{2}{(x)} + 2sin{(x)} cos{(x)} + cos^{2}{(x)} sin2(x)+2sin(x)cos(x)+cos2(x)

# 因式合并三角函数
factor(cos(x)**2 + 2*cos(x)*sin(x) + sin(x)**2)

( s i n ( x ) + c o s ( x ) ) 2 ({sin(x)} +cos{(x)})^{2} (sin(x)+cos(x))2

三、求解

solveset(Eq(x**2, 1), x)

x 2 = 1 ( x = 1 , x = − 1 ) x^{2}=1 (x=1, x=-1) x2=1(x=1,x=1)

四、矩阵运算

由于显示不出来效果这里略过

总结

非常感兴趣SymPy符号推理的部分,看官方文档说用的启发式算法。有机会深究一下其实现机理。

猜你喜欢

转载自blog.csdn.net/killingbow/article/details/109279671