百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

巧用python的矩阵运算来进行电路的计算和分析

itomcoil 2025-01-10 14:18 18 浏览

多元一次方程组

早在初中时,我们就学习过多元一次方程组的求程。

所谓多元一次组指的是含有有个未知数,并且含有未知数的项的次数都是1方程组。

一个简单的例子:

学校的篮球数比排球数的2倍多3个,足球数与排球数的比是2:3,三种球共48个,求三种球各有多少?

假设篮球个数为x1,排球个数为x2,足球个数为x3,

根据题目有以下的关系式成立:

对于多元一次方程组,最常用消元法来进行求解。

思路是经过各个方程组之间的线性运算,消去一些未知数,最终得到一个未知数的方程。

根据该方程解出未知数,再代回其它方程得到其它未知数的值。

整个过程非常繁琐,一不小心就会出错;

矩阵运算

在学习了矩阵运算之后,这一求解过程可以化为矩阵运算而大大简化;

跟初等数学里面学习的加、减、乘、除运算规则一样,伟大的数学家们也为矩阵运算制定了一些规则。

对于矩阵的加、减,限于文章篇幅,在此不作赘述。

对于矩阵的乘法,有以下的规则:

设有一个m行s列的矩阵表示为

一个s行n列的矩阵表示为

则矩阵A左乘于矩阵B所得到的矩阵C是这样一个矩阵:

  (1) 行数与(左矩阵)A相同,列数与(右矩阵)B相同,即C=

  (2) C的第i行第j列的元素由A的第i行元素与B的第j列元素对应相乘,再取乘积之和。

比如,两个矩阵:

计算,从规则(1),可以知道C是2行3列的矩阵。

每个元素的数值由规则(2)计算得到,比如:

第0行0列的数值为:

c00=1*1+2*-1=-1;

第0行1列的数值为:

c01=1*2+2*1=4;

依次算出各元素的数值,并表示为矩阵,得到:

对图1的多元一次方程组,我们做一些变形,

并把未知数表示为3行1列的矩阵,可以得到:

表示为:,然后就可以经过矩阵运算求解方程组。

左右两边同时左乘A的逆矩阵,得到:

N年前,matlab还能随意使用,做矩阵运算非常只是几条命令的事情,非常简单。

在被matlab抛弃的日子里,虽然对matlab还怀有深深的眷恋,无奈落花有意、流水无情;

我只能退而求其次用python来排遣寂寞。

利用,以下python脚本,

import numpy.matlib
import numpy as np
A=np.array([[1,-2,0],[0,3,-2],[1,1,1]])
Y=np.array([[3],[0],[48]])
X=np.matmul(np.linalg.inv(A),Y);

求得,[x1,x2,x3]=[23, 10, 15];

矩阵运算在电路计算、分析中的应用

在线性电路中,首先通过电路理论得到电路的线性方程组。

把线性方程组的求解转换为矩阵运算。

再用python编写脚本进行矩阵运算,就可以算出电路中的各电气参数;

如下图的电路分析题目,求解i1和i2;

根据网孔电流法,有:

化简得到:

编写python脚本,

import numpy.matlib
import numpy as np
A=np.array([[30,-20],[-20, 80]])
Y=np.array([[-10],[20]])
X=np.matmul(np.linalg.inv(A),Y);

计算得到[i1,i2]=[-0.2, 0.2];

总结

本文旨在介绍矩阵的概念、矩阵运算的规则,以及与多元一次方程组的关系。

并以一个简单的电路为例,介绍电路计算过程;

矩阵运算以及电路分析远不限于此,

另外通过符号的矩阵运算,可以得到电参数的解析表达式并对其化简,可以大大简化滤波电路的分析计算。

相关推荐

selenium(WEB自动化工具)

定义解释Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7,8,9,10,11),MozillaF...

开发利器丨如何使用ELK设计微服务中的日志收集方案?

【摘要】微服务各个组件的相关实践会涉及到工具,本文将会介绍微服务日常开发的一些利器,这些工具帮助我们构建更加健壮的微服务系统,并帮助排查解决微服务系统中的问题与性能瓶颈等。我们将重点介绍微服务架构中...

高并发系统设计:应对每秒数万QPS的架构策略

当面试官问及"如何应对每秒几万QPS(QueriesPerSecond)"时,大概率是想知道你对高并发系统设计的理解有多少。本文将深入探讨从基础设施到应用层面的解决方案。01、理解...

2025 年每个 JavaScript 开发者都应该了解的功能

大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发。1.Iteratorhelpers开发者...

JavaScript Array 对象

Array对象Array对象用于在变量中存储多个值:varcars=["Saab","Volvo","BMW"];第一个数组元素的索引值为0,第二个索引值为1,以此类推。更多有...

Gemini 2.5编程全球霸榜,谷歌重回AI王座,神秘模型曝光,奥特曼迎战

刚刚,Gemini2.5Pro编程登顶,6美元性价比碾压Claude3.7Sonnet。不仅如此,谷歌还暗藏着更强的编程模型Dragontail,这次是要彻底翻盘了。谷歌,彻底打了一场漂亮的翻...

动力节点最新JavaScript教程(高级篇),深入学习JavaScript

JavaScript是一种运行在浏览器中的解释型编程语言,它的解释器被称为JavaScript引擎,是浏览器的一部分,JavaScript广泛用于浏览器客户端编程,通常JavaScript脚本是通过嵌...

一文看懂Kiro,其 Spec工作流秒杀Cursor,可移植至Claude Code

当Cursor的“即兴编程”开始拖累项目质量,AWS新晋IDEKiro以Spec工作流打出“先规范后编码”的系统工程思维:需求-设计-任务三件套一次生成,文档与代码同步落地,复杂项目不...

「晚安·好梦」努力只能及格,拼命才能优秀

欢迎光临,浏览之前点击上面的音乐放松一下心情吧!喜欢的话给小编一个关注呀!Effortscanonlypass,anddesperatelycanbeexcellent.努力只能及格...

JavaScript 中 some 与 every 方法的区别是什么?

大家好,很高兴又见面了,我是姜茶的编程笔记,我们一起学习前端相关领域技术,共同进步,也欢迎大家关注、点赞、收藏、转发,您的支持是我不断创作的动力在JavaScript中,Array.protot...

10个高效的Python爬虫框架,你用过几个?

小型爬虫需求,requests库+bs4库就能解决;大型爬虫数据,尤其涉及异步抓取、内容管理及后续扩展等功能时,就需要用到爬虫框架了。下面介绍了10个爬虫框架,大家可以学习使用!1.Scrapysc...

12个高效的Python爬虫框架,你用过几个?

实现爬虫技术的编程环境有很多种,Java、Python、C++等都可以用来爬虫。但很多人选择Python来写爬虫,为什么呢?因为Python确实很适合做爬虫,丰富的第三方库十分强大,简单几行代码便可实...

pip3 install pyspider报错问题解决

运行如下命令报错:>>>pip3installpyspider观察上面的报错问题,需要安装pycurl。是到这个网址:http://www.lfd.uci.edu/~gohlke...

PySpider框架的使用

PysiderPysider是一个国人用Python编写的、带有强大的WebUI的网络爬虫系统,它支持多种数据库、任务监控、项目管理、结果查看、URL去重等强大的功能。安装pip3inst...

「机器学习」神经网络的激活函数、并通过python实现激活函数

神经网络的激活函数、并通过python实现whatis激活函数感知机的网络结构如下:左图中,偏置b没有被画出来,如果要表示出b,可以像右图那样做。用数学式来表示感知机:上面这个数学式子可以被改写:...