# Sympy符号计算（使用python求导，解方程组）

### Sympy符号计算

##### 什么是符号计算？

>>> import math
>>> math.sqrt(9)
3.0

>>> math.sqrt(8)
2.82842712475

>>> import sympy
>>> sympy.sqrt(3)
sqrt(3)

# 符号结果可以象征性地简化
>>> sympy.sqrt(8)
2*sqrt(2)


>>> from sympy import *
>>> x = symbols('x')
>>> a = Integral(cos(x)*exp(x), x)
>>> Eq(a, a.doit())
Eq(Integral(exp(x)*cos(x), x), exp(x)*sin(x)/2 + exp(x)*cos(x)/2)


∫ e x cos ⁡ ( x ) d x = e x sin ⁡ ( x ) 2 + e x cos ⁡ ( x ) 2 \int e^{x} \cos (x) d x=\frac{e^{x} \sin (x)}{2}+\frac{e^{x} \cos (x)}{2}

##### 在使用前在SymPy变量必须定义

>>> from __future__ import division
>>> from sympy import *
>>> x, y, z, t = symbols('x y z t')
>>> k, m, n = symbols('k m n', integer=True)
>>> f, g, h = symbols('f g h', cls=Function) # 定义函数符号变量

>>> from sympy import symbols
>>> x, y = symbols('x y')  # 定义变量
>>> expr = x + 2*y
>>> expr
x + 2*y
>>> expr + 1
x + 2*y + 1
>>> expr - x
2*y
>>> x*expr
x*(x + 2*y)

# 符号形式转换
>>> from sympy import expand, factor
>>> expanded_expr = expand(x*expr)
>>> expanded_expr
x**2 + 2*x*y
>>> factor(expanded_expr)
x*(x + 2*y)

import math
from sympy import *
init_printing()

math.sqrt(2)


1.4142135623730951 \displaystyle 1.4142135623730951

sqrt(2)


2 \displaystyle \sqrt{2}

pi


π \displaystyle \pi

x,y,z,a,b,c,n,r = symbols('x,y,z,a,b,c,n,r')
alpha,beta,gamma,theta = symbols('alpha,beta,gamma,theta')

log(alpha**beta)+gamma


γ + log ⁡ ( α β ) \displaystyle \gamma + \log{\left(\alpha^{\beta} \right)}

sin(x)**2+cos(y)**2


sin ⁡ 2 ( x ) + cos ⁡ 2 ( y ) \displaystyle \sin^{2}{\left(x \right)} + \cos^{2}{\left(y \right)}

mu,sigma = symbols('mu,sigma')
mu,sigma


( μ ,   σ ) \displaystyle \left( \mu, \ \sigma\right)

b = exp(-(x-mu)**2/(2*sigma)**2)
b


e − ( − μ + x ) 2 4 σ 2 \displaystyle e^{- \frac{\left(- \mu + x\right)^{2}}{4 \sigma^{2}}}

### 求导

(x**2).diff()


2 x \displaystyle 2 x

sin(x).diff()


cos ⁡ ( x ) \displaystyle \cos{\left(x \right)}

(x**2+x*y+y**2).diff(x)


2 x + y \displaystyle 2 x + y

diff(x**2+x*y+y**2,y)


x + 2 y \displaystyle x + 2 y

diff(x**3+x**2+2*x+x*y+y**2,x,2)


2 ( 3 x + 1 ) \displaystyle 2 \left(3 x + 1\right)

(x**3+x**2+2*x+x*y+y**2).diff(x,2)


2 ( 3 x + 1 ) \displaystyle 2 \left(3 x + 1\right)

(x**3+x**2+2*x+x*y+y**2).diff(x,2).expand() # expand()展开式子


6 x + 2 \displaystyle 6 x + 2

b


e − ( − μ + x ) 2 4 σ 2 \displaystyle e^{- \frac{\left(- \mu + x\right)^{2}}{4 \sigma^{2}}}

b.diff(x)


− ( − 2 μ + 2 x ) e − ( − μ + x ) 2 4 σ 2 4 σ 2 \displaystyle - \frac{\left(- 2 \mu + 2 x\right) e^{- \frac{\left(- \mu + x\right)^{2}}{4 \sigma^{2}}}}{4 \sigma^{2}}

b.diff(x,2)


( − 2 + ( μ − x ) 2 σ 2 ) e − ( μ − x ) 2 4 σ 2 4 σ 2 \displaystyle \frac{\left(-2 + \frac{\left(\mu - x\right)^{2}}{\sigma^{2}}\right) e^{- \frac{\left(\mu - x\right)^{2}}{4 \sigma^{2}}}}{4 \sigma^{2}}

b.diff(x).diff(x)


− e − ( − μ + x ) 2 4 σ 2 2 σ 2 + ( − 2 μ + 2 x ) 2 e − ( − μ + x ) 2 4 σ 2 16 σ 4 \displaystyle - \frac{e^{- \frac{\left(- \mu + x\right)^{2}}{4 \sigma^{2}}}}{2 \sigma^{2}} + \frac{\left(- 2 \mu + 2 x\right)^{2} e^{- \frac{\left(- \mu + x\right)^{2}}{4 \sigma^{2}}}}{16 \sigma^{4}}

07-08 1045
07-30 3006
05-11 2986
08-16 984
11-15 5008
12-18 2741
06-05 333
09-02 109
02-03 2169
07-16 1492

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