- 深度学习全书:公式+推导+代码+TensorFlow全程案例
- 陈昭明
- 504字
- 2023-08-31 20:37:34
2-2-3 联立方程式求解
在中学阶段,我们通常会以高斯消去法(Gaussian Elimination)解联立方程式。以下列方程式为例:
x+y =16
10x+25y =250
将第一个方程式两边乘以-10,加上第二个方程式,即可消去x,变成
−10(x+y)=−10(16)
10x+25y=250
简化为
15y=90
得到y=6,再代入任一方程式,得到x=10。
以上过程,如果以线性代数求解就简单多了。
(1)以矩阵表示:A为方程式中未知数(x, y)的系数,B为等号右边的常数且AX = B。
(2)其中,则X = A-1 B。证明如下:
①两边各乘A-1得
A-1AX = A-1 B
②A-1A等于单位矩阵,且任一矩阵乘以单位矩阵,还是等于原矩阵,故
X = A-1 B
③以上式求得(x, y)。注意:前提是A须为非奇异矩阵。
以下程序均收录在02_03_联立方程式求解.ipynb。
(1)以NumPy库求解上述联立方程式。程序代码如下:
![](https://epubservercos.yuewen.com/E1A109/26581885501428906/epubprivate/OEBPS/Images/Figure-P37_629269.jpg?sign=1739122415-jp9ka0jXIjMZefWrfZvrAMx8JfVnPSmF-0-446f373f8f846de93cf90369edcd4617)
①inv(A):A的反矩阵。
②执行结果:x=10,y=6。
③也可以直接使用np.linalg.solve()函数求解。程序代码如下:
![](https://epubservercos.yuewen.com/E1A109/26581885501428906/epubprivate/OEBPS/Images/Figure-P37_629276.jpg?sign=1739122415-Q344O1yz1GCNzdoxLw2TEhcl5AtCO0i6-0-f0de1836f1b61db36a83216cc4fb8554)
(2)画图,交叉点即联立方程式的解。程序代码如下:
![](https://epubservercos.yuewen.com/E1A109/26581885501428906/epubprivate/OEBPS/Images/Figure-P37_629283.jpg?sign=1739122415-1uAsQABZKAaTM9pkGecxFvYxtVkGf82A-0-f763bcc2f36ad01d093c0b4c3ed6aab2)
执行结果:如图2.8所示。
![](https://epubservercos.yuewen.com/E1A109/26581885501428906/epubprivate/OEBPS/Images/Figure-P37_629290.jpg?sign=1739122415-QBM8DJ4KsVfXBaDpmvmrSYo0SUaQBv7U-0-9da2a1a2115b4fc785a972e4feb7811c)
图2.8 交叉点即联立方程式的解
(3)以NumPy库求解下列联立方程式。
−1x+3y =−72
3x+4y−4z=−4
−20x−12y+5z =−50
程序代码如下:
![](https://epubservercos.yuewen.com/E1A109/26581885501428906/epubprivate/OEBPS/Images/Figure-P38_629731.jpg?sign=1739122415-mZUcF9ndVD1EAFwdGlfotUbfyaR9jq1X-0-0e014be4306658ab07a8212b2e1adda7)
①执行结果:(x, y, z)=(12, -20, -10)。
②也可以使用SymPy库求解,直接将联立方程式整理在等号左边,使用solve()函数,参数内的多项式均假设等号(=)右边为0。
![](https://epubservercos.yuewen.com/E1A109/26581885501428906/epubprivate/OEBPS/Images/Figure-P38_629738.jpg?sign=1739122415-BMw0hadxF66KpcmpbIAUaEyPevFFUWVD-0-0c87d89907a9507008c4e19e56a9a758)