需要解的方程組為:
x + y + z = 26 x - y = 1 2x - y + z = 18
下面進入代碼實現:
1.導入數學計算庫 numpy
import numpy as np
2.生成未知數系數的三維數組,注意📢位置對應
W = np.array([[1,1,1],[1,-1,0],[2,-1,1]])
3.由方程組的值形成數組
result = np.array([26,1,18])
4.求得W逆矩陣W_inv
W_inv = np.linalg.inv(W)
5.
由方程未知數(x,y,z)形成的數組:vxyz = np.array([x,y,z]),
得到以上方程式的矩陣乘法等式:W * vxyz = result,
讓等式兩邊點乘W的逆矩陣,
得到等式:np.dot(Winv,W*vxyz) = np.dot( W_inv,result),
其中W_inv式W的逆矩陣,np.dot()是矩陣點乘函數,
由於矩陣與其逆矩陣相乘得1,進一步推導出 vxyz = np.dot( W_inv, result),
求得 vxyz 的值,即求得該方程組的解
vxyz = np.dot(W_inv,result)
6.打印出求得的系數
v = list(vxyz) print("得到的值:") print("x=%d" %v[0]) print("y=%d" %v[1]) print("z=%d" %v[2])
7.運行結果
x = 10 y = 9 z = 7
這個程序可以進一步擴展,例如增加未知數的個數,隨着未知數不斷增多,會逐漸感受到程序解方程的效率。
結束語:
最近真是
to be continued...