線性代數

      在〈線性代數〉中尚無留言

使用 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()

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *