编程实现对电路的分析

% Circuit parameters

r = round(100*rand(8,1))
v0 = round(100*randn)

% Kirchoff‘s voltage law

A = [1 -1  0  0
     0  1 -1  0
    -1  0  1  0
     0 -1  0  0
     0  0 -1  1
     1  0  0  0
     0  0  0 -1
    -1  0  0  1]

% Symbolically

symr = sym(‘[r12 r13 r14 r23 r34 r25 r35 r45]‘);
R = A‘*diag(symr)*A

% Numerically 

R = A‘*diag(r)*A;
b = [0 0 0 v0]‘
i = R\[0 0 0 v0]‘

% Kirchoff‘s current law

B = [1 -1  0  0
     1  0 -1  0
     1  0  0 -1
     0  1 -1  0
     0  0  1 -1
     0  1  0  0
     0  0  1  0
     0  0  0  1]

% Symbolically

symg = sym(‘[g12 g13 g14 g23 g34 g25 g35 g45]‘);
G = B‘*diag(symg)*B

% Numerically 

g = 1./r;
g35 = g(7);
G = B‘*diag(g)*B
c = [0 0 g35*v0 0]‘
v = G\c

% Check consistency

d = [0 0 0 0 0 0 v0 0]‘;
[(B*v-d)./(A*i) r]

以上matlab程序对电路的特性进行了模拟、仿真。

其中电路图的形状是这样的:

其中电流的方向均为顺时针方向。

根据电路中给出的这些参量,结合KCLKirchoff‘s current law,KVLKirchoff‘s voltage law来分析之。

X = randn returns a random scalar drawn from the standard normal distribution.

sym Create the symbolic variables

X = rand returns a single uniformly distributed random number in the interval (0,1).

X = rand(n) returns an n-by-n matrix of random numbers

其中下面这条语句返回的是一个符号变量构成的行向量。

>> sym(‘[r12 r13 r14 r23 r34 r25 r35 r45]‘)

ans =

[ r12, r13, r14, r23, r34, r25, r35, r45]

进一步分析,将其置于矩阵的对角线位置上,得到的矩阵的形状是这样的:

>> symr = sym(‘[r12 r13 r14 r23 r34 r25 r35 r45]‘);

>> diag(symr)

ans =

[ r12,   0,   0,   0,   0,   0,   0,   0]

[   0, r13,   0,   0,   0,   0,   0,   0]

[   0,   0, r14,   0,   0,   0,   0,   0]

[   0,   0,   0, r23,   0,   0,   0,   0]

[   0,   0,   0,   0, r34,   0,   0,   0]

[   0,   0,   0,   0,   0, r25,   0,   0]

[   0,   0,   0,   0,   0,   0, r35,   0]

[   0,   0,   0,   0,   0,   0,   0, r45]

>> A‘*diag(symr)*A

ans =

[ r12 + r14 + r25 + r45,            -r12,            -r14,            -r45]

[                  -r12, r12 + r13 + r23,            -r13,               0]

[                  -r14,            -r13, r13 + r14 + r34,            -r34]

[                  -r45,               0,            -r34, r34 + r35 + r45]

求得的是电阻矩阵。

时间: 2024-10-23 15:39:59

编程实现对电路的分析的相关文章

电工电子--第二章--电路的分析方法

重点: 支路电流法 叠加定理 戴维宁定理. 电子技术:数电,模电. 2.1 电阻串并联连接的等效变换 电流源 的 电压是由外电路决定的. ①电压源模型和电流源模型的等效关系只是对外电路而言,对电源内部则是不等效的. 当电压源开路时,I=0,电源内阻Ro上不损耗功率. 当电流源开路时,电源内部仍有电流,内阻Ro上有功率损耗. ②等效变换时,注意两电源参考方向的对应关系,即理想电压源电压的极性与理想电流源电流的方向. 开路是空气最为负载,空气的绝缘性是非常大的 G:电导(电阻的倒数) 单位为西(门子

无锁编程与有锁编程的性能对比与分析

最近维护的一个网络服务器遇到性能问题,于是就对原有的程序进行了较大的框架改动.改动最多的是线程工作模式与数据传递方式,最终的结果是改变锁的使用模式.经过一番改进,基本上可以做到 GMb 网卡全速工作处理.在 性能达标之后,一度在想有没有什么办法使用更加轻量级锁,或者去掉锁的使用,为此搜索一些相关的研究成果,并做了一些实验来验证这些成果,因而就有这篇文章.希望有做类似工作的同行可以有所借鉴.如果有人也有相关的经验,欢迎和我交流. 1 无锁编程概述 本节主要对文献 [1] 进行概括,做一些基础知识的

.Net中的并行编程-3.ConcurrentQueue实现与分析

在上文<.Net中的并行编程-2.ConcurrentQueue的实现与分析> 中解释了无锁的相关概念,无独有偶BCL提供的ConcurrentQueue也是基于原子操作实现, 由于ConcurrentQueue的代码较多所以本文主要分析几个常用操作: 入队(EnQueue) .出队(TryDequeue) .是否为空(IsEmpty).获取队列内元素数量(Count). 一.ConcurrentQueue内部结构: 1.实现原理 众所周知,在普通的非线程安全队列有两种实现方式: 1.使用数组

电路电阻分析

概述 初中阶段的电路几乎都是分析电阻,故整理常用的电阻分析方法如下 目录有些名字是我瞎编的 简单电路 基本等价变换 对称电路 简单电路 基本关系设第$i$个电阻大小为$R_i$ 串联 根据性质“电流相同”,得电阻为$\Sigma{n}{i=1}{R_i}$ 并联 根据性质“电压相同”,得电阻为$\frac{1}{\Sigma{n}{i=1}{\frac{1}{R_i}}}$ 转换方法 将局部成简单关系的电阻合并,不断重复此过程,可以证明剩下的网络永远是简单电路 基本等价变换 性质 无电阻的导线可

结对编程——队友代码的优缺点分析

一·项目的需求分析 需求文档中给出5个需求,第一个是用户的登录要求用户名和密码相匹配,并且有着初始的出题类型:需求二则限制题目的操作数和取值范围: 需求三要求我们输入题目数量,这里给出限定条件10-30个题目并且要求同一位老师的题目不能一样:需求四则要我们满足切换出题类型:需求五则 是对题目保存路径和文件的要求. 二·代码优缺点分析 main函数大体框架为:一个循环加一个if的判断语句来确定登陆对象,并且每一个登录对象都有一个唯一的标识,eg:张三1的标识为(0,1),再将其标 识传递给user

hadoop 编程规范(hadoop专利分析)

网上有很多hadoop例子,但是不难发现,即使是一个wordcount都有很多不一样的地方,我们不可能总拿着别人的例子跑,所以自己要总结出一套规范,让api即使更新也能马上适应过来.这里也以hadoop 专利分析作为炮灰 右键新建map/reduce项目,然后点击项目右键Mapper,Reducer,MapperReduce Driver 并且在MapperReduce Driver 里填上刚才新建的Mapper,Reducer的类名,建好后,并修改 MapperReduce Driver里的路

并发编程--AbstractQueuedSynchronizer介绍和原理分析

AbstractQueuedSynchronizer是并发编程包中最重要的类,是并发编程包的实现基层.简单来说,AbstractQueuedSynchronizer提供了一个基于FIFO的队列,用于存储处于阻塞状态的线程:提供了一个volatile修改的state变量,用于作为锁获取的标识位,对于FIFO队列和state的操作都是通过Unsafe这个类来实现CAS原子操作. AQS的功能可以分为两类:独占功能和共享功能,它的所有子类中,要么实现了并使用了它独占锁功能的API,要么使用了共享锁的功

《C专家编程》第三章——分析C语言的声明

前面一章我们已经说过C语言存在的一些问题和它晦涩的地方,让我们对这门神奇的语言有了更深的了解.现在这一章则集中精力来讨论C语言的声明,分为三块,首先是说明C语言声明晦涩难懂的原因和声明是如何形成的,其次就是学习怎样对C语言的声明进行分析,另外本文将详细来探讨一个分析C语言声明的工具--cdecl,分析和编写它的源代码. C语言的声明晦涩难懂这一点应该是名不虚传的,比如说下面这个声明: void (*signal(int sig, void(*func) (int)))(int); 这可不是吓人的

正弦稳态电路的分析

RLC串联电路如图(a)所示,其中R=15Ω,L=12mH,C=5μF,端电压uS=100(2^(1/2))cos(5000t)V. 试求: (1)电路中的电流i(瞬时表达式)和各元件的电压相量: (2)电路的等效导纳和并联等效电路. 解(1)计算各部分阻抗为: ZR=15Ω ZL=jωL=j60Ω ZC=-j(1/ωC)=-j40Ω Zeq=ZR+ZL+ZC=(15+j20)Ω =25∠53.13°Ω 电流相量为 I·=U·S/Zeq=(100∠0°)/(25∠53.13°)A=4∠-53.1