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} excos(x)dx=2exsin(x)+2excos(x)

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

通常,最好的做法是将Symbols分配给同名的Python变量,尽管有例外:符号名称可以包含Python变量名称中不允许的字符,或者可能只是想通过赋值长的符号来避免键入长名称名称为单字母Python变量。

>>> 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 1.4142135623730951

sqrt(2)

2 \displaystyle \sqrt{2} 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)} γ+log(αβ)

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

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

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}}} e4σ2(μ+x)2

求导

(x**2).diff()

2 x \displaystyle 2 x 2x

sin(x).diff()

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

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

2 x + y \displaystyle 2 x + y 2x+y

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

x + 2 y \displaystyle x + 2 y x+2y

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

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

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

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

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

6 x + 2 \displaystyle 6 x + 2 6x+2

b

e − ( − μ + x ) 2 4 σ 2 \displaystyle e^{- \frac{\left(- \mu + x\right)^{2}}{4 \sigma^{2}}} e4σ2(μ+x)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}} 4σ2(2μ+2x)e4σ2(μ+x)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}} 4σ2(2+σ2(μx)2)e4σ2(μx)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}} 2σ2

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值