sympy是乙個python的科學計算庫,用一套強大的符號計算體系完成諸如多項式求值、求極限、解方程、求積分、微分方程、級數展開、矩陣運算等等計算問題。雖然matlab的類似科學計算能力也很強大,但是python以其語法簡單、易上手、異常豐富的三方庫生態,個人認為可以更優雅地解決日常遇到的各種計算問題。
目錄1.解方程組solve()
2.求極限limit()
3.微分(導數)diff()
4.積分
4-1.定積分integrate()
4-2.求不定積分integrate(),dsolve()
5.序列sequence()
6.矩陣matrix()
7.其他
0.準備工作
from sympy import *
1.解方程組solve()
x,y = symbols(『x y』)
result = solve([eq(y,1-x),eq(3x+2y,5)],[x,y])
print(result)
2.求極限limit(?
n = symbol(『n』)
print(limit(((n+3)/(n+2))**n, n, oo))
e3.微分(導數)diff()
x = symbols(『x』)
f = x**2 + 2*x + 1 # 定義函式f(x)
f\displaystyle x^ + 2 x + 1
diff(f,x,1) # 函式f(x)對x求1次導
\displaystyle 2 x + 2
4.積分
4-1.定積分integrate()
x,t = symbols(『x t』)
fx = integrate(sin(t)/(pi-t),(t,0,x))
s = integrate(fx,(x,0,pi))
print(s)fx2
\displaystyle \operatorname + \operatorname
4-2.求不定積分integrate(),dsolve()
x = symbol(『x』)
s = integrate(e**x + 2*x,x)
s\displaystyle x^ + e^
f = function(『f』)
eq1 = eq(derivative(f(x),x),x*cos(x))
pprint(eq1)
y = dsolve(eq1,f(x))
pprint(y)
integrate(eq1)
d──(f(x)) = x⋅cos(x)
dxf(x) = c₁ + x⋅sin(x) + cos(x)
\displaystyle f = x \sin + \cos
5.序列sequence()
s = sequence(x, (x, 1, 10))
print(list(s))
print(summation(s.formula, (x, s.start, s.stop)))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
556.矩陣matrix()
m = matrix([[1, 2], [3, 4], [0, 3]])
n = matrix([2, 2])
m*n\displaystyle \left[\begin6\14\6\end\right]
7.雜項
『』『1.常用的sympy內建符號』』』
i # 1-1.虛數單位i
e # 1-2.自然對數的底e
oo # 1-3.無窮大oo
pi # 1-4.圓周率pi
『』『2.sympy的初等運算:加+減-乘*除/,次方開方,對數,階乘,三角函式,表示式求值』』』
23 # eg:2的3次方
8(1/3) # eg:8開3次方
log(1000,10) # eg:以10為底1000的對數
log(e) # eg:自然對數
factorial(4)
sin(pi) # 以sin函式為例
x,y = symbols(『x y』)
f = 2*x + y
f.evalf(subs=)
f.subs()
n = symbol(『n』,integer = true)
summation(2 * n,(n,1,100))
eq(3x+2y,5)
r1 = rational(1/10)
r2 = rational(1/10)
r3 = rational(1/10)
val = (r1 + r2 + r3) * 3
print(val.evalf())
print((1/10 + 1/10 + 1/10) * 3) # 沒有有理化會存在小錯誤
cos(x).series(x, 0, 10)
『』『3.其他』』』
pprint(e**x + 2*x)
x,y,z = symbols(『x y z』)
print(latex(x**2+y/1+z))
expand((x + 1) ** 2)
simplify((x2-x-6)/(x2-3*x))
a = cos(x)**2 - sin(x)**2
b = cos(2*x)
a.equals(b)
0.900000000000000
0.9000000000000001
x2⋅x + ℯ
x^ + y + z
true
常微分方程數值解上機
二步顯式 adams 法和gear 法求解,y 0 1,步長分別為h 0.1和h 0.05 1.程式文字 二步顯式 adams法 clc y 1 1 h 0.1 y 2 y 1 2 h y 1 3 h n 1 h fori 2 n y i 1 y i 3 h y i h y i 1 3 h endt...
常微分方程數值解法 python實現
研究生課程 應用數值分析 結課了,使用python簡單記錄了下常微分方程數值解法。y y i h i f x i,y i y 0 y a end right y x y 1 0 leq x leq 1 y 0 1 end right yi format xi,yi xi,yi xi h,y retu...
MATLAB學習筆記 常微分方程的數值解
常微分方程數值求解的命令 求常微分方程的數值解,matlab的命令格式為 t,y solver odefun tspan,y0,options 其中solver選擇ode45等函式名,odefun為根據待解方程或方程組編寫的m檔名,tspan為自變數的區間 t0,tf 即準備在那個區間上求解,y0表...