本篇文章主要探討python的sympy的安裝和使用。有一定的參考價(jià)值,有需要的朋友可以參考一下,跟隨小編一起來(lái)看解決方法吧。
創(chuàng)新互聯(lián)擁有網(wǎng)站維護(hù)技術(shù)和項(xiàng)目管理團(tuán)隊(duì),建立的售前、實(shí)施和售后服務(wù)體系,為客戶提供定制化的成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、網(wǎng)站維護(hù)、BGP機(jī)房服務(wù)器托管解決方案。為客戶網(wǎng)站安全和日常運(yùn)維提供整體管家式外包優(yōu)質(zhì)服務(wù)。我們的網(wǎng)站維護(hù)服務(wù)覆蓋集團(tuán)企業(yè)、上市公司、外企網(wǎng)站、成都商城網(wǎng)站開(kāi)發(fā)、政府網(wǎng)站等各類型客戶群體,為全球成百上千家企業(yè)提供全方位網(wǎng)站維護(hù)、服務(wù)器維護(hù)解決方案。1.安裝
pip3 install sympy
建議使用anaconda,里面有大量的科學(xué)包,方便使用!
2.使用
我會(huì)根據(jù)我的理解和官方教程來(lái)進(jìn)行使用,英語(yǔ)好的可以直接去官網(wǎng)看,防止我可能出現(xiàn)的理解誤差。
請(qǐng)認(rèn)真看注釋!
from sympy import * //引入包
x = symbols('x') //聲明變量'x'
a = Integral(cos(x)*exp(x),x) //
print(Eq(a,a.doit()))
Symbol()函數(shù)定義單個(gè)數(shù)學(xué)符號(hào);symbols()函數(shù)定義多個(gè)數(shù)學(xué)符號(hào)
3.數(shù)學(xué)符號(hào)
學(xué)了那么久python,忽然發(fā)現(xiàn)自己連數(shù)學(xué)符號(hào)都不會(huì)打,趁這次機(jī)會(huì)學(xué)習(xí)一下好了。
sqrt:根號(hào)
pi:圓周率
exp(x):exe^xex
詳見(jiàn)《python之math庫(kù)的使用》
復(fù)數(shù)的表示
aComplex = 1 + 2j //申明一個(gè)復(fù)數(shù)
aComplex
(1+2j)
aComplex.real //復(fù)數(shù)實(shí)部
1.0
aComplex.imag //復(fù)數(shù)虛部
2.0
aComplex.conjugate() //共軛復(fù)數(shù)
(1-2j)
// 取整除 - 向下取接近除數(shù)的整數(shù)
比較運(yùn)算符
== 等于 - 比較對(duì)象是否相等 (a == b) 返回 False。
!= 不等于 - 比較兩個(gè)對(duì)象是否不相等 (a != b) 返回 True。
> 大于 - 返回x是否大于y (a > b) 返回 False。
< 小于 - 返回x是否小于y。所有比較運(yùn)算符返回1表示真,返回0表示假。這分別與特殊的變量True和False等價(jià)。注意,這些變量名的大寫(xiě)。 (a < b) 返回 True。
>= 大于等于 - 返回x是否大于等于y?! ?a >= b) 返回 False。
<= 小于等于 - 返回x是否小于等于y?! ?a <= b) 返回 True。
賦值運(yùn)算符
以下假設(shè)變量a為10,變量b為20:
運(yùn)算符 描述 實(shí)例
= 簡(jiǎn)單的賦值運(yùn)算符 c = a + b 將 a + b 的運(yùn)算結(jié)果賦值為 c
+= 加法賦值運(yùn)算符 c += a 等效于 c = c + a
-= 減法賦值運(yùn)算符 c -= a 等效于 c = c - a
*= 乘法賦值運(yùn)算符 c *= a 等效于 c = c * a
/= 除法賦值運(yùn)算符 c /= a 等效于 c = c / a
%= 取模賦值運(yùn)算符 c %= a 等效于 c = c % a
**= 冪賦值運(yùn)算符 c **= a 等效于 c = c ** a
//= 取整除賦值運(yùn)算符 c //= a 等效于 c = c // a
:= 海象運(yùn)算符,可在表達(dá)式內(nèi)部為變量賦值。Python3.8 版本新增運(yùn)算符?! ≡谶@個(gè)示例中,賦值表達(dá)式可以避免調(diào)用 len() 兩次:if (n := len(a)) > 10: print(f"List is too long ({n} elements, expected <= 10)")
示例:
4.擴(kuò)展運(yùn)用
折疊表達(dá)式
factor()函數(shù)可以折疊表達(dá)式(提取公因子),而expand()函數(shù)可以展開(kāi)表達(dá)式(類似于一般式)
舉個(gè)例子:x3+y2x2+zxx^3+y^2x^2+zxx3+y2x2+zx,折疊后:x(x2+y2x+z)x(x^2+y^2x+z)x(x2+y2x+z).
import math
import sympy
x,y,z = symbols('x y z')
expr = x**3+(x**2)*(y**2)+z*x
f_expr = factor(expr)
e_expr = expand(f_expr)
print(f_expr)
print(e_expr)
輸出結(jié)果:
x*(x**2 + x*y**2 + z)
x**3 + x**2*y**2 + x*z
表達(dá)式化簡(jiǎn)
simplify()函數(shù)可以對(duì)表達(dá)式進(jìn)行化簡(jiǎn),相當(dāng)于合并同類項(xiàng)
from sympy import *
x,y = symbols('x y')
expr=(2*x)**3*(-5*x*y**2)
s_expr=simplify(expr)
print(s_expr)
輸出: -40*x**4*y**2
求解方程組
一元方程組,例:6x+6(x?2000)=1500006x+6(x-2000)=1500006x+6(x?2000)=150000, (需要移項(xiàng))
from sympy import *
x = Symbol('x')
print(solve(6*x + 6*(x-2000)-150000,x)) //默認(rèn)使用一邊為0來(lái)求解
二元一次方程組,例:
from sympy import *
x,y = symbols('x y')
print(solve([x + y-10,2*x+y-16],[x,y]))
輸出: {x: 6, y: 4}
n元同理,不再示例。
一元二次方程組
from sympy import *
x,y = symbols('x y')
a,b,c = symbols('a b c')
expr = a*x**2 + b*x + c
s_expr = solve(expr, x) //告知要解的參數(shù)
print(s_expr)
輸出 :[(-b + sqrt(-4*a*c + b**2))/(2*a), -(b + sqrt(-4*a*c + b**2))/(2*a)]
微積分Calculus
一個(gè)非常重點(diǎn)的內(nèi)容,請(qǐng)認(rèn)真看并記住!
求極限
Sympy是使用limit(表達(dá)式,變量,極限值)函數(shù)來(lái)求極限的
例子:lim?y→0sin(x)x\displaystyle \lim_{y \to0}\frac{sin(x)}{x}y→0limxsin(x)
from sympy import *
x,y = symbols('x y')
expr = sin(x)/x
l_expr = limit(expr, x, 0)
print(l_expr)
結(jié)果為1
求導(dǎo)鄭州人流醫(yī)院 http://m.zzzy120.com/
可以使用diff(表達(dá)式,變量,求導(dǎo)的次數(shù))函數(shù)對(duì)表達(dá)式求導(dǎo)(matlab也和這個(gè)差不多)
例子:sin(x)exsin(x)e^xsin(x)ex
from sympy import *
x,y = symbols('x y')
expr = sin(x)*exp(x)
diff_expr = diff(expr, x)
diff_expr2 = diff(expr,x,2) //n階導(dǎo)同理
print(diff_expr)
print(diff_expr2)
求不定積分
Sympy是使用integrate(表達(dá)式,變量)來(lái)求不定積分的
例子:exsin(x)+excos(x)e^xsin(x)+e^xcos(x)exsin(x)+excos(x)
from sympy import *
x,y = symbols('x y')
expr=exp(x)*sin(x) + exp(x)*cos(x)
i_expr=integrate(expr,x)
print(i_expr)
輸出原函數(shù):exp(x)*sin(x)
求定積分
Sympy同樣是使用integrate()函數(shù)來(lái)做定積分的求解,
例子:sin(x2)sin(x^2)sin(x2)
from sympy import *
x,y = symbols('x y')
expr=sin(x**2)
i_expr=integrate(expr, (x, -oo, oo))
print(i_expr)
輸出:sqrt(2)*sqrt(pi)/2 即:2π2\frac{\sqrt 2 \sqrt \pi}{2}22π (哭了,手算算不出來(lái),無(wú)法驗(yàn)證)
注意:
本人也是一個(gè)初學(xué)者,如有不對(duì)的地方望批評(píng)指正!
5.其他函數(shù)及參數(shù)的用法
這個(gè)涉及的知識(shí)就會(huì)比較深了,一般只有較高級(jí)的運(yùn)用才會(huì)使用的到,一般仿照上面的代碼使用就可以解決絕大多數(shù)問(wèn)題,純個(gè)人想加深理解,選讀 (等我有能力的時(shí)候再看下源碼吧!)
傳參:
from sympy import *
x = symbols('x')
fx = 5*x+4
# 使用evalf函數(shù)傳值
y1 = fx.evalf(subs={x:6})
print(y1)
微分:
矩陣:
構(gòu)建矩陣:
from sympy import *
# 一緯矩陣
m1 = Matrix([1, 2, 3])
#二維矩陣
m2 = Matrix([[1, -1], [3, 4], [0, 2]])
print(latex(m1)
print(latex(m2))
輸出:
\left[\begin{matrix}1\\2\\3\end{matrix}\right]
\left[\begin{matrix}1 & -1\\3 & 4\\0 & 2\end{matrix}\right]
完了,有些看不懂,趕緊去查查! 詳情請(qǐng)看《LaTeX之?dāng)?shù)學(xué)公式及符號(hào)的語(yǔ)法及表達(dá)》
擴(kuò)展知識(shí):
Eq():創(chuàng)建方程 (例:Eq(x**7+a^2,0) 等式的左邊和右邊
solve:求解方程
部分單詞擴(kuò)展:
integral :積分
indefinite:不定積分 definite:定積分
differential:微分
eigenvalues:特征值
看完上述內(nèi)容,你們對(duì)python的sympy大概了解了嗎?如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
本文名稱:pythonsympy的安裝和使用-創(chuàng)新互聯(lián)
URL地址:http://aaarwkj.com/article28/dpgijp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、全網(wǎng)營(yíng)銷推廣、定制開(kāi)發(fā)、定制網(wǎng)站、動(dòng)態(tài)網(wǎng)站、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容