节点电压法求解一阶二阶电路方程参数

一、原理阐释

节点电压法是电路的系统分析方法之一,所谓节节点电压法
点电压是指电路中任一节点与参考节点之间的电压,该电路分析方法的本质是先利用KVL 定理将各支路电流用节点电压表示,然后只列n-1 个节点的KCL 方程(n 为所分析电路的节点数)。
支路电流法既列KVL 方程又列KCL 方程,回路电流法只列KVL 方程,与这两种电路分析方法相比,当电路的节点数较少,支路数较多时,采用节点电压法简单,因为列的方程数较少。特别是当有理想电压源直接并接在两节点之间时,只要灵活应用节点电压法,便可以进一步减少所列的方程数。
以电路中节点电压为未知量,根据KCL写出独立的节点电流方程,然后联立求解出节点电压的方法。
对多支路两节点电路的计算尤为简便。
节点电压是指电路中任一点到参考点之间的电压,参考点人为选择.常以接地点为参考点。

二、求解方法

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

三、编程思路

通过矩阵来存储数据,数据间的关系通过设定相应的关系矩阵。然后矩阵的运算方程求解出所有的节点电压。考虑到matlab对于矩阵的运算来说最为方便且对基本操作较为熟悉,故此次仅采用matlab来实现,日后期待学习更好的软件来实现界面优化和功能拓展。

四、实现代码

clc
n=input('输入结点数:');%输入节点数
b=input('输入电压定义支路数: ');
Y=zeros(n,n);%存储电导信息
B=zeros(n,b);%存储流入结点的电流源
C=zeros(b,n);%存储受控源电路的电压电流关系
D=zeros(b,b);%存储已知电流关系的电阻
e=zeros(n,1);%计算结点电压值
iv=zeros(b,1);%存储电压定义支路电流
J=zeros(n,1);%存储流出电流代数和
E=zeros(b,1);%用结点电压和支路电流表示电压定义支路的支路特性
flag=1;
while flag==1
    type=menu('选择输入类型','电导','电阻','电压源','电流源','VCVS','CCVS','VCCS','CCCS','结束');
    switch type
        case 1    %电导
            i=input('输入第一个结点编号: ');
            j=input('输入第二个结点编号: ');
            g=input('输入电导值/s:');
            Y(i,i)=Y(i,i)+g;
            Y(j,j)=Y(j,j)+g;
            Y(i,j)=Y(i,j)-g;
            Y(j,i)=Y(j,i)-g;
        case 2     %电阻
            i=input('输入第一个结点编号: ');
            j=input('输入第二个结点编号: ');
            k=input('输入电压定义支路号: ');%第k条电压定义支路
            R=input('输入电阻值/欧: ');
            B(i,k)=B(i,k)+1;
            B(j,k)=B(j,k)-1;
            C(k,i)=1;
            C(k,j)=-1;
            D(k,k)=-R;
        case 3   %独立电压源
            i=input('输入第一个结点编号: ');
            j=input('输入第二个结点编号:');
            k=input('输入电压定义支路号: ');
            Es=input('输入电压值/V: ');
            B(i,k)=B(i,k)+1;
            B(j,k)=B(j,k)-1;
            C(k,i)=1;
            C(k,j)=-1;
            E(k,1)=Es;
        case 4 %独立电流源
            i=input('输入第一个结点: ');
            j=input('输入第二个结点: ');
            Is=input('输入电流值/A: ');
            J(i,1)=J(i,1)-Is;
            J(j,1)=J(j,1)+Is;
        case 5 %电压控制电压源VCVS
            i=input('输入第一个结点: ');
            j=input('输入第二个结点: ');
            l=input('输入控制支路第一个结点: ');
            m=input('输入控制电路第二个结点: ');
            k=input('输入VCVS所在的电压定义支路号: ');
            a=input('输入VCVS控制系数: ');
            B(i,k)=B(i,k)+1;
            B(j,k)=B(j,k)-1;
            C(k,i)=+1;
            C(k,j)=-1;
            C(k,l)=-a;
            C(k,m)=a;
        case 6   %电流控制电压源CCVS
            i=input('输入第一个结点: ');
            j=input('输入第二个结点: ');
            k=input('输入CCVS所在的电压定义支路号: ');
            l=input('输入控制支路电压定义支路数: ');
            rm=input('输入CCVS的控制系数: ');
            B(i,k)=B(i,k)+1;
            B(j,k)=B(j,k)-1;
            C(k,i)=1;
            C(k,j)=-1;
            D(k,l)=-rm;
        case 7 %电压控制电流源VCCS
            k=input('输入电流源的第一个结点: ');
            l=input('输入电流源的第二个结点: ');
            i=input('输入控制支路的第一个结点: ');
            j=input('输入控制支路的第二个结点: ');
            gm=input('输入VCCS的控制系数: ');
            Y(k,i)=Y(k,i)+gm;
            Y(k,j)=Y(k,j)-gm;
            Y(l,i)=Y(l,i)-gm;
            Y(l,j)=Y(l,j)+gm;
        case 8 %电流控制电流源CCCS
            i=input('输入受控电流源支路的第一个结点: ');
            j=input('输入受控电流源支路的第二个结点: ');
            k=input('输入控制源所在的电压定义支路数: ');
            h=input('输入控制系数: ');
            B(i,k)=B(i,k)+h;
            B(j,k)=B(j,k)-h;
        case 9
            flag=0;
    end
end
O=cat(2,Y,B);%横向拼接矩阵
disp(O);
P=cat(2,C,D);%横向拼接矩阵
disp(P);
matrix1=cat(1,O,P);%Y,B,C,D矩阵的拼接
disp(matrix1);
matrix1(1,:)=[];
matrix1(:,1)=[];
matrix2=cat(1,e,iv);
disp(matrix2);
matrix3=cat(1,J,E);
disp(matrix3);
matrix3(1,:)=[];
answer=(matrix1)\(matrix3);
disp(answer);
for a=1:n-1
  screen=strcat('结点  ',num2str(a+1),'处电压');
  disp(screen);
  disp(answer(a,1));
end

五、样例展示

1、无受控源

在这里插入图片描述

在这里插入图片描述

2、含受控源电路

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值