close

前言:
想利用medium為自己記錄一下學習歷程,並能透過分門別類去讓自己再次複習
學習使用Sympy模組
先安裝此模組
pip install sympy
導入sympy模組中的Symbol
from sympy import Symbol,symbols,sympify,solve
from sympy.plotting import plot

1.利用Symbol定義符號
x = Symbol(“x”)
print(x+x+2)
→ 2*x+2

2.使用name來了解所定義符號
print(x.name)→ ‘x’

3.定義多個符號變數
a= Symbol(‘a’)
b= Symbol(‘b’)
c= Symbol(‘c’)

import sympols使用symbols()簡化
a,b,c = symbols(‘a,b,c’)

4.符號的運算
y = Symbol(‘y’)
z= 5*x+6*y+x*y
print(z)
→x*y+5*x+6*y

5.將數值帶入公式,使用subs({x:n…}),subs()的參數是字典
eq = 5*x + 6*y
result = eq.subs({x:1,y:2})
print(result)
→17

6.將字串轉為數學表達式
aq = input(‘請輸入公式:’), 輸入:x**3+5*x**2+6*x-8
aq = sympify(aq)
f = 2*aq
print(f)
→ 2*x**3 + 10*x**2 + 12*x — 16
results = aq.subs({x:1})
print(results)
→4

7.利用solve()解一元二次方程式,所獲得的結果是以串列方式傳回
bq = 3*x+5–8
print(solve(bq))
→[1]

8.解一元二次方程式
cq = x**2+5*x-6
print(solve(cq))
→[-6, 1]

9.解含未知數的方程式,第二個參數x宣告解哪個符號
a,b,c = symbols(‘a,b,c’)
dq = a*x*x+b*x+c
print(solve(dq,x))
→[(-b + sqrt(-4*a*c + b**2))/(2*a), -(b + sqrt(-4*a*c+ b**2))/(2*a)]

10.解聯立方程式,得到的解以字典顯示
y = Symbol(‘y’)
eq1 = 3*x+2*y-6
eq2 = 9*x+y-3
print(solve((eq1,eq2)))
→{x: 0, y: 3}
接著利用subs()來做驗證
ans=solve((eq1,eq2))
ans1=eq1.subs({x:ans[x],y:ans[y]})
ans2=eq2.subs({x:ans[x],y:ans[y]})
print(ans1,ans2) →0 0

11.使用Sympy模組繪製座標圖(sympy.plotting的plot)
plot(3*x-2)

3x-2(1).png

12.設定繪圖的x軸區間,設定在-5到5

plot((3*x-2),(x,-5,5))

3x-2(2).png

13.增加繪圖標題與軸標題
plot((3*x-2),(x,5,-5),title=”Sympy”,xlabel=’x’,ylabel=‘3x-2’)

3x-2(3).png

14. 多函數圖形
plot((3*x-2),(2*x+2))

3x-2(4).png

15. 使用plot()中的show,show = False則不會顯示圖形

16.使用不同顏色繪圖,預設是藍色,下面第二條用紅色顯示
line = plot(3*x-2,2*x+2,show = False)
line[1].line_color = ‘r’
line.show()

3x-2(5).png

17.圖表增加圖例,增加legend = True
line = plot(3*x-2,2*x+2,legend = True,show = False)
line[1].line_color = ‘r’
line.show()
3x-2(6).png

arrow
arrow
    創作者介紹
    創作者 Kevin 的頭像
    Kevin

    Kevin的部落格

    Kevin 發表在 痞客邦 留言(0) 人氣()