導(dǎo)入
from __future__ import division
from sympy import *
x,y,z=symbols('x,y,z')
k,m,n=symbols('k,m,n',integer=Ture)
f,g,h=map(Function,'fgh')
數(shù)字表達(dá)式
符號(hào)
symbols(),var()函數(shù)用于賦值,可通過關(guān)鍵詞指定假設(shè)條件驹止。
var("x0,y0,x1,y1")
x=symbols("x",positive=True)
數(shù)值毙替,運(yùn)算符與函數(shù)
符號(hào)運(yùn)算
表達(dá)式變換和化簡(jiǎn)
simplify()
用于對(duì)數(shù)學(xué)表達(dá)式進(jìn)行化簡(jiǎn)践樱;
radsimp()
對(duì)表達(dá)式的分母進(jìn)行有理化厂画;
expand()
根據(jù)用戶設(shè)置的標(biāo)志參數(shù)對(duì)表達(dá)式進(jìn)行展開;
factor()
對(duì)多項(xiàng)式進(jìn)行因式分解拷邢;
…
simplify((x+2)**2-(x+1)**2)
radsimp(1/(sqrt(5)+2*sqrt(2)))
expand(sin(x+y),trig=True)
factor(15*x**2+2*y-3*x-10*x*y)
方程
在Sympy中袱院,表達(dá)式可以直接表示為值為0的方程。也可以使用Eq()
創(chuàng)建方程瞭稼。solve()
可以對(duì)方程進(jìn)行符號(hào)求解忽洛,其第一個(gè)參數(shù)為方程的表達(dá)式,其后的參數(shù)為未知變量环肘。
a,b,c = symbols("a,b,c")
solve(a*x**2+b*x+c,x)
微分
Derivative
是表示導(dǎo)函數(shù)的類欲虚,它的第一個(gè)參數(shù)是需要進(jìn)行求導(dǎo)的數(shù)學(xué)函數(shù),第二個(gè)參數(shù)是求導(dǎo)的自變量悔雹。但并不會(huì)進(jìn)行求導(dǎo)運(yùn)算复哆。
t = Derivative(sin(x),x)
t
>>> D(sin(x),x)
如果希望進(jìn)行實(shí)際的運(yùn)算,可調(diào)用其doit()
方法:
t.doit()
>>> cos(x)
也可以直接使用diff()
函數(shù)或表達(dá)式的diff()
方法來計(jì)算:
diff(sin(2*x),x)
>>> 2*cos(2*x)
sin(2*x).diff(x)
>>> 2*cos(2*x)
添加更多的符號(hào)參數(shù)表示高階導(dǎo)數(shù):
diff(sin(2*x),x,x)
>>> -4*sin(2*x)
多個(gè)變量表示n階偏導(dǎo)
diff(sin(x*y),x,2,y,3)
>>> x*(x**2*y**2*cos(x*y)+6*x*y*sin(x*y)-6*cos(x*y))
微分方程
dsolve()
可以對(duì)微分方程進(jìn)行符號(hào)求解腌零。第一個(gè)參數(shù)是帶未知函數(shù)的表達(dá)式梯找,第二個(gè)參數(shù)是需要進(jìn)行求解的未知函數(shù)。
f=Function("f")
dsolve(Derivation(f(x),x)-f(x),f(x))
>>> f(x) == C1*exp(x)
積分
integrate()
可以計(jì)算定積分和不定積分
- integrate(f,x): 計(jì)算不定積分
- integrate(f,(x,a,b): 計(jì)算定積分
- integrate(f,x,y): 計(jì)算雙重不定積分
- integrate(f,(x,a,b),(y,a,b)): 計(jì)算雙重定積分
計(jì)算定積分時(shí)益涧,可以用oo表示正無窮
integrate(sin(x),x)
>>> -cos(x)
和Derivative
對(duì)象表示微分表達(dá)式類似锈锤,Integral
對(duì)象表示積分表達(dá)式:
e=Integral(x*sin(x),x)
>>> e
as_sum()
方法可以將定積分轉(zhuǎn)換為近似求和公式,將積分區(qū)域分割成N個(gè)小矩形的面積之和:
Integral(sin(x),(x,0,1)).as_sum(5)
>>> sin(1/10)/5+sin(3/10)/5+sin(1/2)/5+sin(7/10)/5+sin(9/10)/5