使用 Python 描述線性代數的圖形,是學習數學的最好方法。
安裝套件
pip install matplotlib numpy plotly
G.py
G.py 內容如下
import pylab as plt
def init(x, y):
plt.xlim(x)
plt.ylim(y)
plt.plot([0,0],[-1000,1000], c='k', linewidth=0.5)
plt.plot([-1000,1000],[0,0], c='k', linewidth=0.5)
一元一次方程式
一元一次方程式 $(y = 0.7x +5)$,此方程式為二維空間中的一條直線。
0.7 稱為斜率(slope),5 稱為偏移量(bias),也就是 x 為 0 時的 y 值。
import pylab as plt
import numpy as np
from G import init
init([-50,50],[-50,50])
n=11
x=np.linspace(-40,40, n)
a = 0.7 # slope
b = 5
y=a * x + b
plt.plot(x,y, c='b')
print(f" x 值 : {x}")
print(f" y 值 : {y}")
plt.show()
結果 :
x 值 : [-40. -32. -24. -16. -8. 0. 8. 16. 24. 32. 40.]
y 值 : [-23. -17.4 -11.8 -6.2 -0.6 5. 10.6 16.2 21.8 27.4 33. ]

一元 n 次方程式
二維空間中的任何一條曲線都可以使用一元 n 次方程式表示。
$(y = 0.0014x^4 – 0.0018x^3 – 0.1228x^2 + 0.4x + 1)$ 一元四次方程式的圖型如下
import pylab as plt
import numpy as np
from G import init
init([-15,15],[-6,6])
n=100
x=np.linspace(-10,10, n)
a = 0.0014
b = -0.0018
c = -0.1228
d = 0.4
e = 1
y=a * np.pow(x,4) + b * np.pow(x,3) + c * np.pow(x,2) + d * np.pow(x,1) +e
plt.plot(x,y, c='b')
print(f" x 值 : {x}")
print(f" y 值 : {y}")
plt.show()

二元 n 階方程式 3D 曲線
底下代碼可以在 3D 立体空間中,畫出一條區線
import plotly.graph_objects as go
import numpy as np
fig=go.Figure()
x = np.linspace(0, 10, 100)
y = np.linspace(0, 10, 100)
z = (-0.6 * np.pow(x, 4) + 0.1 * np.pow(y, 4) +
+0.3 * np.pow(x, 3) + 5.5 * np.pow(y, 3) +
+0.4 * np.pow(x, 2) + 3 * np.pow(y, 2) +
-10 * np.pow(x, 1) + 1.5 * np.pow(y, 1) +
2
) * 1e-6
fig.add_trace(
go.Scatter3d(
x=x,
y=y,
z=z,
mode='lines'
)
)
fig.show()
二元 n 階方程式 3D 曲面
底下可以在 3D 立体空間中畫出一平面
import plotly.graph_objects as go import numpy as np fig=go.Figure() x = np.linspace(0, 10, 100) y = np.linspace(0, 10, 100) x, y = np.meshgrid(x, y) z = (-0.6 * np.pow(x, 4) + 0.1 * np.pow(y, 4) + +0.3 * np.pow(x, 3) + 5.5 * np.pow(y, 3) + +0.4 * np.pow(x, 2) + 3 * np.pow(y, 2) + -10 * np.pow(x, 1) + 1.5 * np.pow(y, 1) + 2 ) * 1e-6 fig.add_trace( go.Surface( x=x, y=y, z=z, opacity=0.6, ) ) fig.show()
