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−30​0−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计算:解可逆系数矩阵线性方程组相关推荐

  1. 线性代数Python计算:线性方程组的通解

    对齐次线性方程组 {a11x1+a12x2+⋯+a1nxn=0a21x1+a22x2+⋯+a2nxn=0⋯⋯⋯am1x1+am2x2+⋯+amnxn=0(1)\begin{cases}a_{11}x_ ...

  2. 线性代数Python计算导引

    线性代数是深度学习的数学基础之一,理论完备,方法经典.Python是当下AI系统首选开发工具,易学好用.教学中攒下两者结合的多个课题,覆盖大学理工科<线性代数>课程内容,写成博文以飨读者. ...

  3. 线性代数Python计算:线性变换的值域与核

    设数域PPP上的向量空间PnP^nPn的线性变换TTT,在某个基下其变换矩阵A=(α1,α2,⋯,αn)\boldsymbol{A}=(\boldsymbol{\alpha}_1,\boldsymbo ...

  4. 线性代数Python计算:向量空间坐标变换

    向量空间中两组基AAA和BBB之间相互线性表示构成的矩阵为过渡阵.若两组基中之一为自然基,譬如AAA为自然基,则基BBB的各向量在自然基下的坐标即构成基AAA到基BBB的过渡阵P\boldsymbol ...

  5. 线性代数Python计算:向量的模及向量间的夹角

    numpy的dot函数计算两个向量α\boldsymbol{\alpha}α和β\boldsymbol{\beta}β的内积: dot(a,b)\text{dot(a,b)}dot(a,b) 两个参数 ...

  6. 线性代数Python计算:向量组的最大无关组计算

    对给定的mmm-维向量组 α1=(a11a21⋮am1),α2=(a12a22⋮am2),⋯,αn=(a1na2n⋮amn)\boldsymbol{\alpha}_1=\begin{pmatrix}a ...

  7. 线性代数Python计算:消元法与矩阵初等变换

    对线性方程组 {a11x1+a12x2+⋯+a1nxn=b1a21x1+a22x2+⋯+a2nxn=b2⋯⋯⋯am1x1+am2x2+⋯+amnxn=bn\begin{cases}a_{11}x_1+ ...

  8. 线性代数Python计算:Python的布尔代数

    设B={0,1}B=\{0,1\}B={0,1},定义BBB上的或.与.非运算如下 构成布尔代数(B,∨,∧,¬)(B,\vee,\wedge,\neg)(B,∨,∧,¬). Python中所有的关系 ...

  9. 线性代数Python计算:Python数系

    Python作为计算机程序设计语言,受计算机物理结构的限制,无法表示出完整的整数集合ℤ.有理数集合ℚ.实数集合ℝ及复数集合ℂ.然而,Python所模拟的ℤ.ℚ.ℝ和ℂ在大多数实际应用中可以满足需求. ...

最新文章

  1. Pytorch中用于深度学习常见的激活函数
  2. oracle监听错误与hosts文件配置
  3. 数据库设计中的范式形式
  4. CSS滤镜实现火狐、IE兼容
  5. boost::geometry::coordinate_system用法的测试程序
  6. 挂牌一年,关于 5G 的 9 个变化
  7. 【Android】Activity的四种launchMode
  8. UI-- Empty Application 新建空工程
  9. matlab 增加图像对比度_计算机视觉学习笔记6 图像直方图与直方图均衡化
  10. 【CodeForces - 722C】Destroying Array(并查集,时光倒流)
  11. videojs插件使用
  12. 如何在create-react-app中使用Workbox构建自定义PWA
  13. 10年10亿才能烧好电子商务?
  14. 解决zabbix-4系列监控图形中文乱码问题
  15. python返回值函数_Python函数的返回值(一)
  16. 架构运维篇(一):Centos7/Linux安装jdk环境
  17. 在标准宽带光纤上实现量子加密
  18. Python使用Reportlab处理PDF数据 - 创建pdf库文件
  19. 【青少年编程】【四级】计算三角形面积
  20. windows下Spacy安装说明

热门文章

  1. 输出100以内所有能被7整除的数
  2. CCNA考试情况及心得体会
  3. C语言学习--while()循环
  4. 密钥交换算法(DH算法)
  5. freebsd 启用网关
  6. 快速扩展在线文档产品特性的9个开源项目
  7. JT1078流媒体服务器的开发
  8. 计算机网络应用层详解
  9. 关于flask入门教程-ajax+echarts实现地图热力图
  10. 天地图离线瓦片的打包与发布(GeoServer)