SymPy符號整理
- 定義變量(符號):symbols
- 定義函數:Function
SymPy函數整理
積分與泰勒展開
- 表達式展開:expand()
expand(,complex=True):表達式分為實數、虛數兩部分
- 泰勒展開:series(函數表達式,自變量,0,余項次數)
- 不定積分運算:integrate(表達式,自變量)
定積分運算:integrate(表達式,(自變量,積分下界,積分上屆))
- 算式中x換成y:subs(x,y)
IN:
import numpy as np
from sympy import *
#將x定義為符號
x=Symbol("x",real=True)
#創建多個符號:x,y,r=symbols('x,y,r')
#參數:positive=True,表示符號為正
#var():快速創建變量和Symbol對象
#泰勒展開
tmp=series(exp(I*x),x,0,10)
tmp
#獲得tmp實部
re(tmp)
#獲得tmp虛部
im(tmp)
OUT:
1 + I*x - x**2/2 - I*x**3/6 + x**4/24 + I*x**5/120 - x**6/720 - I*x**7/5040 + x**8/40320 + I*x**9/362880 + O(x**10)
x**8/40320 - x**6/720 + x**4/24 - x**2/2 + re(O(x**10)) + 1
表達式化簡
- 化簡數學表達式:simplify()
- 分母有理化:radsimp()
- 通分:fraction()
- 約分:trim()
- 三角函數化簡:trigsimp()
deep=True:對所有子表達式化簡
recursive=True:遞歸進行最大程度化簡
- 乘法展開:mul()
- 整數次冪展開:multinomial()
- log展開:expand()
- 合並同類項:collect()
IN:
var("a,b,x")
#展開eq得到eq2
eq=(1+a*x)**3+(1+b*x)**2
eq2=expand(eq)
eq2
#合並同類項
collect(eq2,x)
#得到x的各次冪系數,如獲得x的二次項系數
p=collect(eq2,x,evaluate=False)
p[x**2]
OUT:
a**3*x**3 + 3*a**2*x**2 + 3*a*x + b**2*x**2 + 2*b*x + 2
a**3*x**3 + x**2*(3*a**2 + b**2) + x*(3*a + 2*b) + 2
3*a**2 + b**2
解方程
- 解方程:solve()
IN:
var("a,b,c")
#解一元二次方程
solve(a*x**2+b*x+c,x)
#解二元二次方程,結果每個元組表示方程的一組解
solve((x**2+x*y+1,y**2+x*y+2),x,y)
OUT:
[(-b + sqrt(-4*a*c + b**2))/(2*a), -(b + sqrt(-4*a*c + b**2))/(2*a)]
[(-sqrt(3)*I/3, -2*sqrt(3)*I/3), (sqrt(3)*I/3, 2*sqrt(3)*I/3)]
微分
- 得到導函數:t=Derivative(f(x),x)
- 計算出導函數:t.doit()
- 高階導函數:Derivative(f(x),x,3)
- 多個變量導函數:Derivative(f(x,y),x,2,y,3)
- 微分方程符號求解:dsolve((Derivative(f(x),x)-f(x),f(x))
hint=best,返回最簡單的解,得到最簡單的顯函數表達式
積分
- 不定積分運算:integrate(表達式,自變量)
- 定積分運算:integrate(表達式,(自變量,積分下界,積分上屆))
- 二重不定積分運算:integrate(表達式,x,y)
- 二重定積分運算:integrate(表達式,(x,a,b),(y,c,d))
- 計算出積分函數:doit()
- 無法表示為初等函數的積分——數值計算:evalf()
(不夠精確,且不適合計算無窮積分)
其他
一些基礎語句補充:
- E:自然底數
- I:虛數單位
- pi:π
- **:^
- exp():e^x
參考資料
- 《Python科學計算》