节点电压法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

节点电压法
节点电压法的计算机编程实现
学院:
专业:
班级:
学号:
目录
1.问题与假设 (2)
1.1课题研究价值 (2)
1.2问题的简化与假设 (2)
1.3节点电压法求解过程 (2)
2.建模过程 (2)
2.1节点电压法的简介 (2)
2.2模型的建立 (3)
2.3节点电压法线性方程组的原理与求解 (3)
3.算法实现 (4)
3.1MATLAB源代码 (4)
3.2实例演示 (6)
4.心得体会 (7)
5.参考文献 (8)
1.问题与假设
1.1课题研究价值
节点电压是一种求解对象的电路计算方法。

节点电压是在为电路任选一个节点作为参考点(此点通常编号为“0”),并令其电位为零后,其余节点对该参考点的电位。

在一个拥有多个电子元器件且物理拓扑结构确定的电路中,当电路中各处的电压电流均处于稳定状态时,如何求出加载在各个元器件上的电压?实际生活中,比较复杂的电路运用电脑程序求解为解决问题提供了方便。

1.2问题的简化与假设
假设电路属于集总电路,即电路中电压电流的效应不受电路线度的影响并且在接通瞬间完成。

同时电路中的电子元器件仪限于电阻,电容,电感以及容性和感性器件。

电路中只有独立的稳定电压源,不含受控电压源或电流源。

1.3节点电压法求解过程
第一步:把电压源与阻抗的串联形式化为电流源与阻抗的并联形式
第二步:标出结点,并把其中一个结点选为参考结点(一般为0电位点)
第三步:列出结点电压方程。

列方程方法:自电导乘以该结点电压+∑与该结点相邻的互电导乘以相邻结点的电压=流入该结点的电流源的电流-流出该结点电流源的电流
[注:这里的“+”是考虑了互导纳是电导的相反数,如果不考虑相反数的话,这个“+”就得写为“-”]
第四步:联立求解出上面所有的结点电压方程。

2.建模过程
2.1节点电压法的简介
电路中各个器件两端接入电路并且与其他器件相连接,相连接处构成了节点,因此加载在电路元件上的电压即为元器件两端的电势差,因此我们可以将把求器件上的电势差的问题化为求元器件两端的电势。

这种方法称为节点电压法,是电路分析中最常用的方法。

使用节点电压法首先选择一个结点作为参考结点,其余结点与参考结点之间的电压称为结点电压。

结点电压的方向均由结点指向参考结点。

2.2模型的建立
图2—1节点电压法示例图
如图2—1所示,图中R1、R2、R3、R4、R5、R6均为电阻,Us6、Us3为电压源,is5为电流源。

①、②、③为电路的三个节点,0为零点势的节点。

电路中各个节点都有导线连接,构成一个连通图。

由于电压源和二极管这样的元器件是有正负极之分的,因此所构成的图也是一个有向图。

由于两个节点之间的边是带有权值的,该权值即为元器件的阻抗在集总电路中,每个节点均满足基尔霍夫电流定律(KCL ):流出该节点的所有支路电流之和为零,如公式2-1所示。

1021()
n k i i ==-∑
2.3节点电压法线性方程组的原理与求解
若电路中有N 个节点,因此具有N 个电势值,在假设1个节点接地作为零电势参考节点之后,剩下N-1个未知的电势,需要有N-1个方程解出所有的未知量。

除去M 个电源的端点,根据KCL 可以列出N-2M 个节点方程。

对于节点n,与其余各个节点m 都相连(不相连的可以设其阻抗为无穷大)可列出节点电压方程。

而由电源两端的电势差等于电源电动势这一条件,可得出类似的方程M 个,由于在电源两端有非电场力对电子做功因此在这样的节点处有外部的能量输入,因此在这样的两个节点之间的权值不再只是消耗电能的阻抗,因此在这两个节点处就无法利用KCL 解决如果把整个电压源看做一个大的节点,则电源两端流出的电流之
和为0,同样满足KCL 这个条件约束。

由于电路中存在M 个电压源,因此同样可以列出M 个形如YU=I 的节点方程组。

于此,可以列出N-M 个YU=I 方程,M 个电势差方程,联立求解。

3.算法实现
利用矩阵,将节点之间各支路的阻抗和电势差储存起来。

对于电压源,两个方向的权值互为相反数。

初始时阻抗值均为无穷大,各节点之问的电压差均为零。

生成矩阵时,对图各节点进行遍历,生成电导,电流增广矩阵,最后化简求解。

3.1MATLAB源代码
NUM=4;%节点数
R=ones(NUM,NUM);%储存电阻的矩阵
I=zeros(NUM,1);%储存电流源的矩阵
for a=1:NUM
for b=1:NUM
R(a,b)=realmax;%矩阵中的值大于浮点数
end
end
para=1;
while para==1%输入选择
Type=menu('输入选择','电阻','电流源','结束');
Switch type
case1
node1=input('enter the first node of the element:');
node2=input('enter the second node of the element:');
parameter=input('input resistance');
R(node1,node2)=parameter;
R(node2,node1)=parameter;
case2
node1=input('the first node of the element:');
node2=input('the second node of the element:');
parameter=input('current source');
I(node1,1)=parameter;
I(node2,1)=-parameter;
case3
Para=0;%exit end
end
end
A=zeros(NUM,NUM);%电导矩阵
B=zeros(NUM,1);%电流源矩阵
tracer=1;
for a=1:NUM
for B=1:NUM
if a~=b
A(a,a)=A(a,a)+1/R(a,b);%节点总跨导
if b~=a
A(a,b)=-1/R(a,b);%互导
end
end
end
for a=1:NUM
if I(a,1)~=0
B(a,1)=I(a,1);
end
end
A(:,1)=0;%设第1节点为0,为接地combine=[A,B]; answer=rref(combine);
for a=1:NUM-1%显示节点电压
screen=strcat('节点电压',num2str(a+1));
disp(screen);
disp(answer(a,NUM+1));
end
enter the first node of the element:2 enter the second node of the element:4 input resistance:3
enter the first node of the element:1 enter the second node of the element:2 input resistance:1
enter the first node of the element:4 enter the second node of the element:3 input resistance:0.5
enter the first node of the element:1 enter the second node of the element:3 input resistance:1/3
the first node of the element:4
the second node of the element:1 current source:-9
the first node of the element:2
the second node of the element:3 current source:2
3.2实例演示
图3-1实例演示电路图
如图3-1所示,图中有4个节点,G2=1/3,G1=1,G5=1,G4=1/2,Us1=9V,Us3=2V 在MATLAB的命令NUM后输入4,然后运行MATLAB,会出现图3-2所示的对话框。

图3-2对话框
对话框自上而下分别代表电阻,电流源及输入结束按钮。

再按下resistance 的按钮后,按如下方式输入。

enter the first node of the element:2
enter the second node of the element:4
input resistance:3
代表在2,4节点之间接入3欧姆电阻
the first node of the element:4
the second node of the element:1
Voltage source:-9
代表在4,1节点之间加入-9V 电压源,说明1节点为电源负极。

依次输入,最后按“end ”结束输入,如此可得到(3-1所示式子):()4111122545313300
0,()
(3-1)
n n S n n n n n s u U U G U G G U I G I G G u u u u ?==?-+++=??--++=??-=节点4电压为0V,解得1,2,3节点电压分别为:9V,7.412V,5.412V。

4.心得体会
忙碌了一个多星期,在大家的共同努力下,我们总算将此程序设计出来。

尽管不是自己独立完成,但仍然很高兴,因为在设计的过程中,让我了
解到要设计一个大型程序,查找资料是至关重要的,在他人的基础上,再根据自己所学进行修改与调试,最后设计出自己想要的程序,这过程艰辛,但只要你持之以恒,成功指日可待。

另外平时扎实的基础也很关键,因为如果你平时学得就不怎么样,那么你面对这么一个比较有难度的程序,你可能会望而却步,看他人的程序都是个难点,更别说让你自己去设计。

为了解决此类问题,最好就是多向同学,老师请教,不要怕难为情。

尤其是老师,评他们多年的编写程序的经验,要解决我们的问题,对他们来说只是小小case 。

在设计这个程序时,我们刚开始是根据老师给我们提供的资料,用visio 画图以及循环将框架设计出来,但是接下去便无从下手了,计算是个关键和难点,我们也查了相应的资料,为了方便设计程序,我们选用电压源来做课程设计,这样计算问题解决了。

接下去就是程序中的按键问题,我们开始并不知道是怎么输入的,所以关于按键这个函数就只能我们自己设计,还好手头有类似的资料,经过自己的反复尝试以及与与同学的讨论,这也不难,最好还是被我们搞定了。

最后就是改进,这个设计的方法很死板,都一个类型,所以我们希望能够改进成万能的程序,虽然这很困难,但是这些只要你自己愿意去尝试,问题都可以迎刃而解的。

从这一个多星期的设计过程中,我看到了大家的拼搏与努力,也让我知道团队精神得难能可贵,尽管一年下来大家不怎么有多大接触,但是彼此之间的友谊已经在我们心里扎根生底,在遇到问题时,我们会共同进退,每个人都很慷慨不会因为是通过自己艰辛劳动设计出来的东西而不准他人剽窃了。

总之,这次设计程序让我受益良多,我会好好珍惜像这种难得的机会
5.参考文献
[1]刘少元,等.算法基础[M].北京工业出版社,2007.
[2]于澄波,张文新,等.MATALB基础算法[M].浙江大学出版社,2011.
[3]周雄安,周晓林,等.MATLAB工具箱的应用[M].北京大学出版社,2006.
[4]邱关源,等.电路原理[M].西安交通大学出版社,2004.。

相关文档
最新文档