![深度学习全书:公式+推导+代码+TensorFlow全程案例](https://wfqqreader-1252317822.image.myqcloud.com/cover/894/47216894/b_47216894.jpg)
上QQ阅读APP看书,第一时间看更新
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=1739392488-to6e2I5eRlf7M1l5dffcxFIeqoFLXogy-0-6eab6826e9c8aa2d9859cea7d8d94261)
①inv(A):A的反矩阵。
②执行结果:x=10,y=6。
③也可以直接使用np.linalg.solve()函数求解。程序代码如下:
![](https://epubservercos.yuewen.com/E1A109/26581885501428906/epubprivate/OEBPS/Images/Figure-P37_629276.jpg?sign=1739392488-STwcib6YljWRsss8twqjPZkxmG4HAiLU-0-825e4ad3637ede303271964cb5df7100)
(2)画图,交叉点即联立方程式的解。程序代码如下:
![](https://epubservercos.yuewen.com/E1A109/26581885501428906/epubprivate/OEBPS/Images/Figure-P37_629283.jpg?sign=1739392488-V3OtVTZbvchxExXePIT5E5qzVpzx5BBr-0-60f862740abf756c5c820bdbd29614ff)
执行结果:如图2.8所示。
![](https://epubservercos.yuewen.com/E1A109/26581885501428906/epubprivate/OEBPS/Images/Figure-P37_629290.jpg?sign=1739392488-2qbIi1O8hd7cpHFGAMC8BKHVg4NwgK5g-0-38c85f8335ddf1236450e6f077ee4b5e)
图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=1739392488-NvEOENyctoFxppI2eUyhzM2rup7Qm2i0-0-35e4bee9ab80a9ca8952d3b1012636c2)
①执行结果:(x, y, z)=(12, -20, -10)。
②也可以使用SymPy库求解,直接将联立方程式整理在等号左边,使用solve()函数,参数内的多项式均假设等号(=)右边为0。
![](https://epubservercos.yuewen.com/E1A109/26581885501428906/epubprivate/OEBPS/Images/Figure-P38_629738.jpg?sign=1739392488-oK2e699hfnJ4PKvKpsIehYHcPqBokvFJ-0-baa6f5c89c513cb13ee59a679be3abfc)