线性代数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_Y\quad\quad\quad-V_U=100\\-2V_X+12V_Y-3V_Z\quad\quad\quad=100\\\quad\quad\quad-3V_Y+15V_Z-4V_U=100\\-V_X\quad\quad\quad\quad-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&10\end{pmatrix} A=⎝⎜⎜⎛9−20−1−212−300−315−4−10−410⎠⎟⎟⎞,常数矩阵 b = ( 100 100 100 100 ) \boldsymbol{b}=\begin{pmatrix}100\\100\\100\\100\end{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。
写博不易,敬请支持:
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!
线性代数Python计算:解可逆系数矩阵线性方程组相关推荐
- 线性代数Python计算:线性方程组的通解
对齐次线性方程组 {a11x1+a12x2+⋯+a1nxn=0a21x1+a22x2+⋯+a2nxn=0⋯⋯⋯am1x1+am2x2+⋯+amnxn=0(1)\begin{cases}a_{11}x_ ...
- 线性代数Python计算导引
线性代数是深度学习的数学基础之一,理论完备,方法经典.Python是当下AI系统首选开发工具,易学好用.教学中攒下两者结合的多个课题,覆盖大学理工科<线性代数>课程内容,写成博文以飨读者. ...
- 线性代数Python计算:线性变换的值域与核
设数域PPP上的向量空间PnP^nPn的线性变换TTT,在某个基下其变换矩阵A=(α1,α2,⋯,αn)\boldsymbol{A}=(\boldsymbol{\alpha}_1,\boldsymbo ...
- 线性代数Python计算:向量空间坐标变换
向量空间中两组基AAA和BBB之间相互线性表示构成的矩阵为过渡阵.若两组基中之一为自然基,譬如AAA为自然基,则基BBB的各向量在自然基下的坐标即构成基AAA到基BBB的过渡阵P\boldsymbol ...
- 线性代数Python计算:向量的模及向量间的夹角
numpy的dot函数计算两个向量α\boldsymbol{\alpha}α和β\boldsymbol{\beta}β的内积: dot(a,b)\text{dot(a,b)}dot(a,b) 两个参数 ...
- 线性代数Python计算:向量组的最大无关组计算
对给定的mmm-维向量组 α1=(a11a21⋮am1),α2=(a12a22⋮am2),⋯,αn=(a1na2n⋮amn)\boldsymbol{\alpha}_1=\begin{pmatrix}a ...
- 线性代数Python计算:消元法与矩阵初等变换
对线性方程组 {a11x1+a12x2+⋯+a1nxn=b1a21x1+a22x2+⋯+a2nxn=b2⋯⋯⋯am1x1+am2x2+⋯+amnxn=bn\begin{cases}a_{11}x_1+ ...
- 线性代数Python计算:Python的布尔代数
设B={0,1}B=\{0,1\}B={0,1},定义BBB上的或.与.非运算如下 构成布尔代数(B,∨,∧,¬)(B,\vee,\wedge,\neg)(B,∨,∧,¬). Python中所有的关系 ...
- 线性代数Python计算:Python数系
Python作为计算机程序设计语言,受计算机物理结构的限制,无法表示出完整的整数集合ℤ.有理数集合ℚ.实数集合ℝ及复数集合ℂ.然而,Python所模拟的ℤ.ℚ.ℝ和ℂ在大多数实际应用中可以满足需求. ...
最新文章
- Pytorch中用于深度学习常见的激活函数
- oracle监听错误与hosts文件配置
- 数据库设计中的范式形式
- CSS滤镜实现火狐、IE兼容
- boost::geometry::coordinate_system用法的测试程序
- 挂牌一年,关于 5G 的 9 个变化
- 【Android】Activity的四种launchMode
- UI-- Empty Application 新建空工程
- matlab 增加图像对比度_计算机视觉学习笔记6 图像直方图与直方图均衡化
- 【CodeForces - 722C】Destroying Array(并查集,时光倒流)
- videojs插件使用
- 如何在create-react-app中使用Workbox构建自定义PWA
- 10年10亿才能烧好电子商务?
- 解决zabbix-4系列监控图形中文乱码问题
- python返回值函数_Python函数的返回值(一)
- 架构运维篇(一):Centos7/Linux安装jdk环境
- 在标准宽带光纤上实现量子加密
- Python使用Reportlab处理PDF数据 - 创建pdf库文件
- 【青少年编程】【四级】计算三角形面积
- windows下Spacy安装说明