栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

线性代数Python计算:解可逆系数矩阵线性方程组

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

线性代数Python计算:解可逆系数矩阵线性方程组

numpy的linalg模块中solve函数解可逆系数矩阵的线性方程组。该函数的调用接口为
solve(A, b) text{solve(A, b)} solve(A, b)
参数A表示系数矩阵 A boldsymbol{A} A,b表示常数矩阵 b boldsymbol{b} b。若A表示的系数矩阵可逆,返回方程组 A x = b boldsymbol{Ax}=boldsymbol{b} Ax=b的解,否则报错。
例1 下图中(a)表示一电路网络,每条线上标出的数值是电阻,E点接地。向X,Y,Z和U四点通入电流,强度均为 100 100 100安培。求X,Y,Z,U四点处的电位。

解:设定进入X,Y,Z,U四点流向电路的电路为 I 1 I_1 I1​, I 2 I_2 I2​, I 3 I_3 I3​, I 4 I_4 I4​, I 5 I_5 I5​, I 6 I_6 I6​, I 7 I_7 I7​, I 8 I_8 I8​(见图中(b))。运用基尔霍夫定律知,
{ I 1 + I 2 − I 3 = 100 I 3 + I 4 − I 5 = 100 I 5 + I 6 − I 7 = 100 I 7 + I 8 − I 1 = 100 . begin{cases} I_1+I_2-I_3=100\I_3+I_4-I_5=100\I_5+I_6-I_7=100\I_7+I_8-I_1=100 end{cases}. ⎩⎪⎪⎪⎨⎪⎪⎪⎧​I1​+I2​−I3​=100I3​+I4​−I5​=100I5​+I6​−I7​=100I7​+I8​−I1​=100​.
设X,Y,Z,U四点处的电位分别为 V X V_X VX​, V Y V_Y VY​, V Z V_Z VZ​, V U V_U VU​。由欧姆定律知 I = V R I=frac{V}{R} I=RV​,其中I,R,V分别表示电流,电阻,电位。于是,
I 1 = V X − V U I_1=V_X-V_U I1​=VX​−VU​, I 2 = 6 V X I_2=6V_X I2​=6VX​, I 3 = 2 V Y − 2 V X I_3=2V_Y-2V_X I3​=2VY​−2VX​, I 4 = 7 V Y I_4=7V_Y I4​=7VY​
I 5 = 3 V Z − 3 V Y I_5=3V_Z-3V_Y I5​=3VZ​−3VY​, I 6 = 8 V Z I_6=8V_Z I6​=8VZ​, I 7 = 4 V U − 4 V Z I_7=4V_U-4V_Z I7​=4VU​−4VZ​, I 8 = 5 V U I_8=5V_U I8​=5VU​
代入电流方程组得
{ 9 V X − 2 V Y − V U = 100 − 2 V X + 12 V Y − 3 V Z = 100 − 3 V Y + 15 V Z − 4 V U = 100 − V X − 4 V Z + 10 V U = 100 . begin{cases} quad9V_X-2V_Yquadquadquad-V_U=100\-2V_X+12V_Y-3V_Zquadquadquad=100\quadquadquad-3V_Y+15V_Z-4V_U=100\-V_Xquadquadquadquad-4V_Z+10V_U=100 end{cases}. ⎩⎪⎪⎪⎨⎪⎪⎪⎧​9VX​−2VY​−VU​=100−2VX​+12VY​−3VZ​=100−3VY​+15VZ​−4VU​=100−VX​−4VZ​+10VU​=100​.
该方程组的系数矩阵为 A = ( 9 − 2 0 − 1 − 2 12 − 3 0 0 − 3 15 − 4 − 1 0 − 4 10 ) boldsymbol{A}=begin{pmatrix}9&-2&0&-1\-2&12&-3&0\0&-3&15&-4\-1&0&-4&10end{pmatrix} A=⎝⎜⎜⎛​9−20−1​−212−30​0−315−4​−10−410​⎠⎟⎟⎞​,常数矩阵 b = ( 100 100 100 100 ) boldsymbol{b}=begin{pmatrix}100\100\100\100end{pmatrix} b=⎝⎜⎜⎛​100100100100​⎠⎟⎟⎞​。用下列代码计算该方程组的解。

import numpy as np                          #导入numpy
from fractions import Fraction as F         #导入Fraction
np.set_printoptions(formatter={'all':lambda x:
                               str(F(x).limit_denominator())})
A=np.array([[9,-2,0,-1],                    #系数矩阵A
            [-2,12,-3,0],
            [0,-3,15,-4],
            [-1,0,-4,10]])
b=np.array([100,100,100,100])               #常数矩阵b
X=np.linalg.solve(A, b)                     #解方程
print(X.reshape(4,1))                       #输出解

程序的第5~8行设置方程组的系数矩阵A,第9行设置常数矩阵b,第10行调用numpy.linalg的solve函数,传递参数A和b,计算方程组 A x = b boldsymbol{Ax}=boldsymbol{b} Ax=b的解X。运行程序,输出

[[210100/12907]
 [188400/12907]
 [183300/12907]
 [223400/12907]]

即即X,Y,Z,U四点处电位 V X = 210100 12907 V_X=frac{210100}{12907} VX​=12907210100​, V Y = 188400 12907 V_Y=frac{188400}{12907} VY​=12907188400​, V Z = 183300 12907 V_Z=frac{183300}{12907} VZ​=12907183300​, V U = 223400 12907 V_U=frac{223400}{12907} VU​=12907223400​。
写博不易,敬请支持:
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/971643.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号