![深度学习全书:公式+推导+代码+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=1739003085-yz4AmZHdHleAAJA43FFb10eB8U6O7CCe-0-b2b4ca67fcba498e7ec0c72c064553e7)
①inv(A):A的反矩阵。
②执行结果:x=10,y=6。
③也可以直接使用np.linalg.solve()函数求解。程序代码如下:
![](https://epubservercos.yuewen.com/E1A109/26581885501428906/epubprivate/OEBPS/Images/Figure-P37_629276.jpg?sign=1739003085-WE5uY1ZTuPNZ4RW8E48xuHENTyXp9h1s-0-40a0a91f313edf78078daf378e4da90d)
(2)画图,交叉点即联立方程式的解。程序代码如下:
![](https://epubservercos.yuewen.com/E1A109/26581885501428906/epubprivate/OEBPS/Images/Figure-P37_629283.jpg?sign=1739003085-nUtLxXEdGJSqtz0gpyvbfyWy7FYVCy3o-0-da07d089331b735f77e791911ccc7c4a)
执行结果:如图2.8所示。
![](https://epubservercos.yuewen.com/E1A109/26581885501428906/epubprivate/OEBPS/Images/Figure-P37_629290.jpg?sign=1739003085-Dv8d7bXyr4rr7v3dF2MHQaSuhLulNgs8-0-cd2f66724a5772f7d199ca5286f86e73)
图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=1739003085-ezc1cPYI6Mc4Xa5VRp127TGtMyA9TbQD-0-8b89122dacddd488e326e442e5ff71ee)
①执行结果:(x, y, z)=(12, -20, -10)。
②也可以使用SymPy库求解,直接将联立方程式整理在等号左边,使用solve()函数,参数内的多项式均假设等号(=)右边为0。
![](https://epubservercos.yuewen.com/E1A109/26581885501428906/epubprivate/OEBPS/Images/Figure-P38_629738.jpg?sign=1739003085-0vcBOWkqb5eXT7nzrDiHYWQLEhmguJQE-0-c4662d3461a7f6cc4cf2af5b59b7010a)