节点牛顿拉夫逊法法matlab程序
matlab3节点牛顿拉夫逊潮流计算

1. Matlab3节点牛顿拉夫逊潮流计算简介Matlab是一种高度灵活的编程语言和数学工具,被广泛应用于科学计算和工程领域。
3节点牛顿拉夫逊潮流计算是一种电力系统分析方法,用于计算电力系统中各节点的电压和相角。
在本文中,我们将介绍如何使用Matlab进行3节点牛顿拉夫逊潮流计算,以及该方法的原理和应用。
2. 3节点牛顿拉夫逊潮流计算原理3节点牛顿拉夫逊潮流计算是一种基于潮流方程的迭代算法。
它通过不断迭代求解节点电压和相角,以达到系统在给定负荷下的稳态。
其核心原理是利用牛顿拉夫逊法迭代求解潮流方程,即功率平衡方程和节点电压方程,直至收敛得到结果。
3. Matlab在3节点牛顿拉夫逊潮流计算中的应用Matlab提供了丰富的数学工具和函数库,使其成为进行电力系统分析的理想工具。
在3节点牛顿拉夫逊潮流计算中,我们可以利用Matlab编写相应的算法和程序,对实际电力系统进行分析和计算。
通过Matlab的矩阵运算和迭代算法,可以高效地求解潮流方程,得到系统各节点的电压和相角。
4. 3节点牛顿拉夫逊潮流计算的应用3节点牛顿拉夫逊潮流计算在电力系统规划、运行和故障分析中具有重要的应用价值。
通过计算系统各节点的电压和相角,可以评估系统的电压稳定性和潮流分布,指导电力系统的规划和调度。
在系统发生故障时,可以利用3节点牛顿拉夫逊潮流计算分析系统的稳定性和可靠性,为故障处理提供依据。
5. 结语3节点牛顿拉夫逊潮流计算是一种重要的电力系统分析方法,Matlab作为一种强大的数学工具,为其提供了理想的支持和实现。
通过Matlab进行3节点牛顿拉夫逊潮流计算,可以高效地进行电力系统分析和计算,为电力系统的规划和运行提供科学依据。
希望本文可以帮助读者更加深入地了解3节点牛顿拉夫逊潮流计算及其在Matlab 中的应用。
6. Matlab3节点牛顿拉夫逊潮流计算的优势利用Matlab进行3节点牛顿拉夫逊潮流计算具有许多优势。
Matlab提供了丰富的数学函数和工具,能够快速高效地进行矩阵运算、迭代求解等操作,极大地简化了算法的实现。
csdn电力系统牛顿拉夫逊法潮流计算matlab

电力系统牛顿拉夫逊法潮流计算在实际应用中具有重要意义。
本文将结合CSND评台上的相关资料,从理论和实践两个角度对该方法进行介绍和分析。
文章首先解释了牛顿拉夫逊法的原理和基本概念,其次介绍了潮流计算在电力系统中的作用和意义。
文章分析了目前牛顿拉夫逊法在潮流计算中的应用情况,并详细探讨了该方法在MATLAB软件中的实现过程。
本文总结了牛顿拉夫逊法在电力系统潮流计算中的优缺点,并对未来的发展趋势进行了展望。
一、牛顿拉夫逊法原理和基本概念1.1 牛顿拉夫逊法的基本原理牛顿拉夫逊法(Newton-Raphson method)是一种用于解决非线性方程组的数值方法。
其基本思想是通过不断迭代,逐步逼近方程组的解。
具体而言,牛顿拉夫逊法首先利用当前点的切线来估计方程组的根,然后通过迭代计算逐步逼近真实的解。
该方法在数学和工程领域中得到了广泛的应用,尤其在电力系统潮流计算中发挥着重要作用。
1.2 牛顿拉夫逊法的基本步骤牛顿拉夫逊法的基本步骤可以总结为以下几点:(1)选择初始点:首先需要选择一个合适的初始点作为迭代的起始点;(2)计算雅可比矩阵:根据当前点的数值,计算出雅可比矩阵,该矩阵用于估计方程组的根;(3)更新迭代点:利用雅可比矩阵和当前点的值,计算出新的迭代点;(4)判断收敛性:判断新的迭代点是否满足收敛条件,如果满足则停止迭代,否则返回第(2)步继续计算。
以上就是牛顿拉夫逊法的基本步骤,通过不断迭代,最终可以得到方程组的解。
二、潮流计算在电力系统中的作用和意义2.1 潮流计算的概念潮流计算是电力系统中一种重要的分析方法,其主要目的是确定系统中各个节点的电压幅值和相角。
通过潮流计算可以得知系统中各元件的功率、电压、电流等信息,为系统的安全稳定运行提供重要数据支撑。
2.2 潮流计算的意义潮流计算在电力系统中具有重要的意义,主要体现在以下几个方面:(1)系统规划:在电力系统的规划设计阶段,潮流计算可以帮助工程师确定系统中各个节点的电压和功率分布,为系统的合理规划提供依据。
电力系统潮流计算牛顿拉夫迅法与PQ分解法通用MATLAB计算程序

此程序经40余同学使用检验,无误。
这是一个电气狗熬两个礼拜图书馆的成果,根据华中科技大学《电力系统分析》中原理编写,可用牛顿-拉夫逊和PQ分解法计算给定标幺值条件的潮流。
本人水平有限,仅供参考,欢迎一起找Bug。
2018/07/06 说明:由于本人变压器建模与PSASP不同,本人使用模型如下图,参数输入时请按该模型计算。
2018/06/18 主程序更新:增加补偿电容参数主程序% file name:chaoliu_lj.m% auther: 山东科技大学罗江% function:使用牛顿-拉夫逊法、PQ分解法计算潮流% updata:2018/6/18 13:22 增加补偿电容参数%节点类型标号%PQ节点 1%PV节点 2%slack节点 3%能计算给定标幺值网络,有且仅有一个平衡节点的潮流%注意:母线标号顺序要求:PQ节点-PV节点-平衡节点%若某元件不存在,其导纳为0,阻抗为infclear %清除工作空间变量clc %清屏%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%数据输入(标幺值)SB=100; %基准容量,单位MVA%母线基准电压Bus=[115 10.5 115 115];%交流线参数:I侧母线J侧母线阻抗1/2接地导纳Line=[4 1 0.06125+0.09527i 0;4 3 0.08469+0.12703i 0;1 3 0.13989+0.15501i 0];%变压器参数:I侧母线J侧母线阻抗变比%变压器阻抗归算到I侧Trans=[2 3 0.0137+0.2881i 0.9504];%加接地电容器补偿: 母线导纳Cap=[2 0.5i];%发电机参数:母线节点类型P V/U θGen=[4 3 1 0];%负荷参数:母线节点类型P Q%按参考方向,发电机发出功率(正值),负荷消耗功率(负值)Load=[1 1 -0.18 -0.06;2 1 -0.32 -0.12];mode=1; %1-极坐标下牛拉法,2-PQ分解法Tmax=50; %最大迭代次数limit=1.0e-4; %要求精度%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%变压器π型等效阻抗参数Zt=zeros(size(Trans,1),3);Zt(:,1)=Trans(:,3)./Trans(:,4);Zt(:,2)=Trans(:,3)./(1-Trans(:,4));Zt(:,3)=Trans(:,3)./(Trans(:,4).^2-Trans(:,4));Trans_pi=[Trans(:,1:2) Zt(:,1) 1./Zt(:,2) 1./Zt(:,3)];n=numel(Bus); %总节点数m=n-1; %PQ节点数for i=1:size(Gen,1)%数组行数if Gen(i,2)==2 %除去PV节点就是PQ节点m=m-1;endendfor i=1:size(Load,1)if Load(i,2)==2m=m-1;endend%PQ节点包含浮游节点,其PQ=0%提取P,Q,U向量P=zeros(1,n); %P,Q为原始数据,Pi,Qi为计算结果Q=zeros(1,n);U=ones(1,n); %电压初始值由此确定cita=zeros(1,n); %此处未知节点皆设为1.0∠0 %注意:此处角度单位为度,提取后再转换成弧度,后面计算使用弧度for i=1:size(Gen,1)if Gen(i,2)==1 %PQ节点P(Gen(i,1))=Gen(i,3);Q(Gen(i,1))=Gen(i,4);endif Gen(i,2)==2 %PV节点P(Gen(i,1))=Gen(i,3);U(Gen(i,1))=Gen(i,4);endif Gen(i,2)==3 %slack节点U(Gen(i,1))=Gen(i,3);cita(Gen(i,1))=Gen(i,4);endendfor i=1:size(Load,1)if Load(i,2)==1 %PQ节点P(Load(i,1))=Load(i,3);Q(Load(i,1))=Load(i,4);endif Load(i,2)==2 %PV节点P(Load(i,1))=Load(i,3);U(Load(i,1))=Load(i,4);endif Load(i,2)==3 %slack节点U(Load(i,1))=Load(i,3);cita(Load(i,1))=Load(i,4);endenddisp('初始条件:')disp('各节点有功:')disp(P);disp('各节点无功:')disp(Q);disp('各节点电压幅值:')disp(U);cita=(deg2rad(cita)); %角度转换成弧度disp('各节点电压相角(度):')disp(rad2deg(cita)); %显示依然使用角度%节点导纳矩阵的计算Y=zeros(n); %新建节点导纳矩阵y=zeros(n); %网络中的真实导纳%计算y(i,j)for i=1:size(Line,1) %与交流线联结的真实导纳ii=Line(i,1); jj=Line(i,2);y(ii,jj)=1/Line(i,3);y(jj,ii)=y(ii,jj);endfor i=1:size(Trans_pi,1) %与变压器联结的真实导纳ii=Trans_pi(i,1); jj=Trans_pi(i,2);y(ii,jj)=1/Trans_pi(i,3);y(jj,ii)=y(ii,jj);end%计算y(i,i)for i=1:size(Line,1) %与交流线联结的对地导纳ii=Line(i,1); jj=Line(i,2);y(ii,ii)=y(ii,ii)+Line(i,4);y(jj,jj)=y(jj,jj)+Line(i,4);endfor i=1:size(Trans_pi,1) %与变压器联结的对地导纳ii=Trans_pi(i,1); jj=Trans_pi(i,2);y(ii,ii)=y(ii,ii)+Trans_pi(i,4);y(jj,jj)=y(jj,jj)+Trans_pi(i,5);end%算上补偿电容for i=1:size(Cap,1)ii=Cap(i,1);y(ii,ii)=y(ii,ii)+Cap(i,2);end%由y计算Yysum=sum(y,1); %每一行求和for i=1:nfor j=1:nif i==jY(i,j)=ysum(i);elseY(i,j)=-y(i,j);endendenddisp('节点导纳矩阵:');disp(Y);G=real(Y); %电导矩阵B=imag(Y); %电纳矩阵%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%以上为基础数据整理%接下来是牛拉法的大循环%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%计算功率不平衡量[dP,dQ,Pi,Qi]=Unbalanced( n,m,P,Q,U,G,B,cita );disp('有功不平衡量:');disp(dP);disp('无功不平衡量:');disp(dQ);for i=1:Tmaxfprintf('第%d次迭代\n',i);%雅可比矩阵的计算if(mode==1)J=Jacobi( n,m,U,cita,B,G,Pi,Qi );disp('雅可比矩阵');disp(J);end%求解节点电压修正量if(mode==1)[dU,dcita]=Correct( n,m,U,dP,dQ,J );else[dU,dcita]=PQ_LJ( n,m,dP,dQ,U,B );enddisp('电压、相角修正量:');disp(dU);disp(rad2deg(dcita));%修正节点电压U=U+dU;cita=cita+dcita;disp('节点电压幅值:');disp(U);disp('节点电压相角:');disp(rad2deg(cita));%计算功率不平衡量[dP,dQ,Pi,Qi]=Unbalanced( n,m,P,Q,U,G,B,cita );disp('有功不平衡量:');disp(dP);disp('无功不平衡量:');disp(dQ);if (max(abs(dP))<limit && max(abs(dQ))<limit )break;end%ifend%for%迭代结束,判断收敛if (max(abs(dP))<limit && max(abs(dQ))<limit )disp('计算收敛');elsedisp('计算不收敛或未达到要求精度');end%打印功率fprintf('迭代总次数:%d\n', i);disp('节点电压幅值:');disp(U);disp('节点电压相角:');disp(rad2deg(cita));disp('有功计算结果:');disp(Pi);disp('无功计算结果:');disp(Qi);子程序一% filename:Unbalanced.m% author: 山东科技大学罗江% function: 计算功率不平衡量function [ dP,dQ,Pi,Qi ] = Unbalanced( n,m,P,Q,U,G,B,cita )%计算ΔPi有功的不平衡量for i=1:nfor j=1:nPn(j)=U(i)*U(j)*(G(i,j)*cos(cita(i)-cita(j))+B(i,j)*sin(cita(i)-cita(j)));endPi(i)=sum(Pn);enddP=P(1:n-1)-Pi(1:n-1); %dP有n-1个%计算ΔQi无功的不平衡量for i=1:nfor j=1:nQn(j)=U(i)*U(j)*(G(i,j)*sin(cita(i)-cita(j))-B(i,j)*cos(cita(i)-cita(j)));endQi(i)=sum(Qn);enddQ=Q(1:m)-Qi(1:m); %dQ有m个end%func子程序二% filename:Jacobi.m% author:山东科技大学罗江% function: 计算雅可比矩阵function [ J ] = Jacobi( n,m,U,cita,B,G,Pi,Qi )%雅可比矩阵的计算%分块H N K L%i!=j时for i=1:n-1for j=1:n-1H(i,j)=-U(i)*U(j)*(G(i,j)*sin(cita(i)-cita(j))-B(i,j)*cos(cita(i)-cita(j)));endendfor i=1:n-1for j=1:mN(i,j)=-U(i)*U(j)*(G(i,j)*cos(cita(i)-cita(j))+B(i,j)*sin(cita(i)-cita(j)));endendfor i=1:mfor j=1:n-1K(i,j)=U(i)*U(j)*(G(i,j)*cos(cita(i)-cita(j))+B(i,j)*sin(cita(i)-cita(j)));endendfor i=1:mfor j=1:mL(i,j)=-U(i)*U(j)*(G(i,j)*sin(cita(i)-cita(j))-B(i,j)*cos(cita(i)-cita(j)));endend%i==j时for i=1:n-1H(i,i)=U(i).^2*B(i,i)+Qi(i);endfor i=1:mN(i,i)=-U(i).^2*G(i,i)-Pi(i);endfor i=1:mK(i,i)=U(i).^2*G(i,i)-Pi(i);endfor i=1:mL(i,i)=U(i).^2*B(i,i)-Qi(i);end%合成雅可比矩阵J=[H N;K L];end子程序三% filename:Correct.m% author:山东科技大学罗江% function:修正节点电压function [ dU,dcita ] = Correct( n,m,U,dP,dQ,J )%求解节点电压修正量for i=1:mUd2(i,i)=U(i);enddPQ=[dP dQ]';dUcita=(-inv(J)*dPQ)';dcita=dUcita(1:n-1);dcita=[dcita 0];dU=(Ud2*dUcita(n:n+m-1)')';dU=[dU zeros(1,n-m)];end子程序四% filename:PQ_LJ.m% author:山东科技大学罗江% function:使用PQ分解法计算电压修正量function [ dU,dcita ] = PQ_LJ( n,m,dP,dQ,U,B )dP_U=dP./U(1:n-1);dQ_U=dQ./U(1:m);dUdcita=(-inv(B(1:n-1,1:n-1))*dP_U')';dcita=dUdcita./U(1:n-1);dU=(-inv(B(1:m,1:m))*dQ_U')';dU=[dU zeros(1,n-m)];dcita=[dcita 0];%补零end (使用时此括号删去。
matlab牛顿拉夫逊法与快速分解法的实现

一、概述MATLAB是一种强大的数学软件工具,它提供了许多优秀的数值计算和数据分析功能。
其中,牛顿拉夫逊法和快速分解法是两种常用的数值计算方法,它们在解决非线性方程组和矩阵分解等问题中具有重要的应用价值。
本文将介绍如何在MATLAB中实现这两种方法,并对它们的优缺点进行详细分析。
二、牛顿拉夫逊法的实现1. 算法原理牛顿拉夫逊法是一种用于求解非线性方程组的迭代算法。
它利用函数的一阶和二阶导数信息来不断逼近方程组的解,直到满足精度要求为止。
算法原理可以用以下公式表示:公式1其中,x表示解向量,F(x)表示方程组的函数向量,J(x)表示方程组的雅可比矩阵,δx表示解的更新量。
通过不断迭代更新x,最终得到方程组的解。
2. MATLAB代码实现在MATLAB中,可以通过编写函数来实现牛顿拉夫逊法。
以下是一个简单的示例代码:在这段代码中,首先定义了方程组的函数向量和雅可比矩阵,然后利用牛顿拉夫逊法进行迭代更新,直到满足精度要求为止。
通过这种方式,就可以在MATLAB中实现牛顿拉夫逊法,并应用于各种实际问题。
三、快速分解法的实现1. 算法原理快速分解法是一种用于矩阵分解的高效算法。
它利用矩阵的特定性质,通过分解为更小的子问题来加速计算过程。
算法原理可以用以下公式表示:公式2其中,A表示要分解的矩阵,L和U分别表示矩阵的下三角和上三角分解。
通过这种分解方式,可以将原始矩阵的计算量大大减小,提高求解效率。
2. MATLAB代码实现在MATLAB中,可以利用内置函数来实现快速分解法。
以下是一个简单的示例代码:在这段代码中,利用MATLAB内置的lu函数进行LU分解,得到矩阵的下三角和上三角分解。
通过这种方式,就可以在MATLAB中实现快速分解法,并应用于各种矩阵计算问题。
四、方法比较与分析1. 算法复杂度牛顿拉夫逊法和快速分解法在计算复杂度上有所不同。
牛顿拉夫逊法的迭代次数取决于所求解问题的非线性程度,通常需要较多的迭代次数。
牛顿—拉夫逊法潮流计算MATLAB程序

牛顿一拉夫逊法潮流计算程序By Yuluo%牛顿--拉夫逊法进行潮流计算n=i nput(' 请输入节点数:n=');n1=i nput('请输入支路数:n仁');isb=i nput(' 请输入平衡母线节点号:isb=');pr=i nput('请输入误差精度:pr=');B1=input('请输入由支路参数形成的矩阵:B1=');B2=input('请输入各节点参数形成的矩阵:B2=');X=input('请输入由节点参数形成的矩阵:X=');Y=zeros( n);e=zeros(1, n);f=zeros(1, n);V=seros(1, n);O=zeros(1, n);S1=zeros( n1); for i=1: nif X(i,2)~=0;p=X(i,1);丫(p,p)=1./X(i,2);endendfor i=1: n1if B1(i,6)==0p=B1(i,1);q=B1(i,2);else p=B1(i,2);q=B1(i,1);end丫(p,q)=Y(p,q)-1./(B1(i,3)*B1(i,5);Y(p,q)=Y(p,q);Y(p,q)=Y(q,q)+1./(B1(i,3)*B1(i,5F2)+B1(i,4)./2;丫(p,p)=Y(p,p)+1./B1(i,3)+B1(i,4)./2;end % 求导纳矩阵G=real(Y);B=imag(Y);for i=1: ne(i)=real(B2(i,3));f(i)=imag(B2(i,3));V(i)=B2(i,4);endfor i=1: nS(i)=B2(i,1)-B2(i,2);B(i,i)=B(i,i)+B2(i,5);endP=rea(S);Q=imag(S);ICT1=0;IT2=1;NO=2* n;N=NO+1;a=0;while IT2~=0IT2=0;a=a+1;for i=1: n;C(i)=0;D(i)=0;for j1=1: nC(i)=C(i)+G(i,j1)*e(j1)-B(i,j1)*f(j1);D(i)=D(i)+G(i,j1)*f(j1)+B(i,j1)*e(j1);endP仁C(i)*e(i)+f(i)*D(i);Q仁f(i)*C(i)-D(i)*e(i); % 求'P,Q'V2=e(i)A2+f(i)A2;if B2(i,6)~=3DP=P(i)-P1;DQ=Q(i)-Q1;for j1=1: nif j1~=isb&j1~=iX1=-G(i,j1)*e(i)-B(i,j1)*f(i);X2=B(i,j1)*e(i)-G(i,j1)*f(i);X3=X2;X4=-X1;p=2*i-1;q=2*j1-1;J(p,q)=X3;J(p,N)=DQ;m=p+1;J(m,q)=X1;J(m,N)=DP;q=q+1;J(p,q)=X4;J(m,q)=X2; end end else DP=P(i)-P1;DV=V(i)~2-V2;for j1=1: nif j1~=isb&j1~=iX1=-G(i,j1)*e(i)-B(i,j1)*f(i);X2=B(i,j1)*e(i)-G(i,j1)*f(i);X5=0;X6=0;p=2*i-1;q=2*j1-1;J(p,q)=X5;J(p,N)=DV;m=p+1;J(m,q)=X1;J(m,N)=DP;q=q+1;J(p,q)=X6;J(m,q)=X2;elseif j1==i&j1~=isbX仁-C(i)-G(i,i)*e(i)-B(i,i)*f(i);X2=-D(i)+B(i,i)*e(i)-G(i,i)*f(i);X5=-2*e(i);X6=-2*f(i);p=2*i-1;q=2*j1-1;J(p,q)=X5;J(p,N)=DV;m=p+1;J(m,q)=X1;J(m,N)=DP;q=q+1;J(p,q)=X6;J(m,q)=X2; end end end endend % 求雅可比矩阵for k=3:N0k1=k+1;N 1=N;for k2=k1:N1J(k,k2)=J(k,k2)./J(k,k);endJ( k,k)=1;k4=k-1;for k3=3:k4for k2=k1:N1J(k3,k2)=J(k3,k2)-J(k3,k)*J (k, k2);endJ(k3,k)=0;endendfor k3=k1:N0for k2=k1:N1J(k3,k2)=J(k3,k2)-J(k3,k)*J (k, k2);endJ(k3,k)=0;endendendfor k=3:2:N0-1L=(k+1)./2;e(L)=e(L)-J (k,N);k1=k+1;f(L)=f(L)-J(k1,N);endfor k=3:N0DET=abs (J(k, N));if DET>=prIT2=IT2+1endendICT2(a)=IT2ICT1=ICT1+1;for k=1: ndy(k)=sqrt(e(k)A2+f(k)A2);endfor i=1: nDy(k)=sqrt(e(k)A2+f(kF2);endfor i=1: nDy(ICT1,i)=dy(i);endend % 用高斯消去法解“ w=-J*V”disp('迭代次数');disp(ICTI);disp('没有达到精度要求的个数');disp(ICT2);for k=1: nV(k)=sqrt(e(k)A2+f(k)A2);O(k)=ata n(f(k)./e(k))*180./pi;endE=e+f*j;disp('各节点的实际电压标么值E为(节点号从小到大的排列):’);disp(E);disp('各节点的电压大小V为(节点号从小到大的排列):’);disp(V);disp('各节点的电压相角0为(节点号从小到大的排列):’);disp(O);for p=1: nC(p)=0;for q=1: nC(p)=C(p)+conj(丫(p,q))*conj(E(q));endS(p)=E(p)*C(p);enddisp('各节点的功率S为(节点号从小到大排列):’);disp(S);disp('各条支路的首端功率Si为(顺序同您输入B1时一样):‘);for i=1: n1if B1 ( i,6)==0p=B1(i,1);q=B1(i,2);else p=B1(i,2);q=B1(i,1);endSi(p,q)=E(p)*(conj(E(p))*conj(B1(i,4)./2)+(conj(E(p)*B1(i,5))-conj(E(q)))*con j(1./(B1(i,3)*B1(i,5))));disp(Si(p.q));enddisp('各条支路的末端功率Sj为(顺序同您的输入B1时一样):‘);for i=1: n1if B1(i,6)==0p=B1(i,1);q=B1(i,2);else p=B1(i,2);q=B1(i,1);endSj(q,p)=E(q)*(conj(E(q))*conj(B1(i,4)./2)+(xonj(E(q)./B1(i,5))-conj(E(p)))*xo nj(1./(B1(i,3)*B1(i,5))));disp(Sj(q,p));enddisp('各条支路的功率损耗DS为(顺序同您输入B1时一样):';for i=1: n1if B1(i,6)==0p=B1(i,1);q=B1(i,2);else p=B1(i,2);q=B1(i,1);endDS(i)=Si(p,q)+Sj(q,p);disp(DS(i));endfor i=1:ICT1Cs(i)=i;enddisp('以下是每次迭代后各节点的电压值(如图所示) ‘);plot(Cs,Dy),xlabel('迭代次数'),ylabel('电压'),title(' 电压迭代次数曲线');。
matlab牛顿法代码举例

matlab牛顿法代码举例使用 MATLAB 实现牛顿法的示例代码。
牛顿法(也称为牛顿-拉弗森方法)是一种在实数和复数域上求解方程的数值方法。
该方法使用函数和其导数的值来寻找函数零点的近似值。
function [root, iter] = newtonMethod(func, dfunc, x0, tol, maxIter) "%"newtonMethod 使用牛顿法求解方程"%"输入:"%"func - 目标函数"%"dfunc - 目标函数的导数"%"x0 - 初始猜测值"%"tol - 容差,求解精度"%"maxIter - 最大迭代次数"%"输出:"%"root - 方程的根"%"iter - 迭代次数x = x0;for iter = 1:maxIterfx = func(x);dfx = dfunc(x);if abs(dfx) < epserror('导数太小,无法继续迭代');endxnew = x - fx/dfx;if abs(xnew - x) < tolroot = xnew;return;endx = xnew;enderror('超过最大迭代次数');end"%"示例: 求解 x^3 - x - 2 = 0func = @(x) x^3 - x - 2;dfunc = @(x) 3*x^2 - 1;x0 = 1; "%"初始猜测值tol = 1e-6; "%"容差maxIter = 1000; "%"最大迭代次数[root, iter] = newtonMethod(func, dfunc, x0, tol, maxIter);fprintf('根是: "%"f, 在 "%"d 次迭代后找到\n', root, iter);在这个代码中,newtonMethod 函数接收一个函数 func 及其导数 dfunc,一个初始猜测值,容差和最大迭代次数 maxIter。
MATLAB牛顿迭代法

1。
定义函数function y=f(x)y=f(x);%函数f(x)的表达式endfunction z=h(x)z=h(x);%函数h(x)的表达式end2.主程序x=X;%迭代初值i=0;%迭代次数计算while i〈= 100%迭代次数x0=X-f(X)/h(X);%牛顿迭代格式if abs(x0—X)>0。
01;%收敛判断X=x0;else breakendi=i+1;endfprintf(’\n%s%.4f\t%s%d’,'X=’,X,’i=’,i) %输出结果牛顿迭代法(matlab)来源:徐力的日志背景:牛顿迭代法(Newton's method)又称为牛顿-拉夫逊方法(Newton—Raphson m ethod),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法.设r是f(x) = 0的根,选取x0作为r初始近似值,过点(x0,f(x0))做曲线y = f(x)的切线L,L的方程为y = f(x0)+f’(x0)(x—x0),求出L与x轴交点的横坐标x1 = x 0—f(x0)/f'(x0),称x1为r的一次近似值。
过点(x1,f(x1))做曲线y = f(x)的切线,并求该切线与x轴交点的横坐标x2 = x1—f(x1)/f'(x1),称x2为r的二次近似值。
重复以上过程,得r的近似值序列,其中x(n+1)=x(n)-f(x(n))/f’(x(n)),称为r的n+1次近似值,上式称为牛顿迭代公式.现用牛顿迭代法(matlab)求方程x^3-2x-1=0的根(—1)。
主函数:function[x,k]=Newtondd(f,x0,e)%%牛顿迭代法,求f(x)=0在某个范围内的根。
%%f为f(x),x0为迭代初值,e为迭代精度。
k为迭代次数x_a=x0;x_b=x_a—subs(f,x_a)/subs(diff(f),x_a);k=1;while abs(x_a-x_b)〉e,k=k+1;x_a=x_b;x_b=x_a-subs(f,x_a)/subs(diff(f),x_a); endx=x_b;运行:>〉syms x;>> f=(x^3-2*x—1)。
基于MATLAB的牛顿拉夫逊迭代法计算潮流(附加短路计算)

这个程序可以适用于三机九节点系统(参数见主程序),本来是想编一个通用各种结构的程序的,但是因为鄙人比较懒,老师留作业时候又没说要通用,就没改完。
惭愧啊。
不过大同小异啦。
有兴趣的慢慢改吧。
使用方法:按后文中给出的代码建立.m文件放在一个文件夹里面。
先运行Powerflow_main.m计算算例系统的潮流;然后运行ShortcircuitCalc.m计算算例系统三相短路电流;程序说明详见各.m文件注释部分,写的已经很详细了,慢慢看吧。
Powerflow_main.m文件代码如下:clear%牛顿拉夫逊迭代法计算潮流format short %规定参数数据显示精度%节点参数矩阵%第一列为节点编号%第二列表示有功注入P%第三列表示无功注入Q%第四列表示电压幅值U%第五列表示电压角度θ%第六列表示发电机x′%第七列表示发电机E′%第八列表示节点类型(2表示平衡节点,1表示PV节点,0表示PQ节点)Node_p=[ 1, 0, 0, 1.04 , 0, 0.3, 1.137, 2;2, 1.63, 0, 1.025, 0, 0.3, 1.211, 1;3, 0.85, 0, 1.025, 0, 0.3, 1.047, 1;4, 0, 0, 1.0, 0, 0, 0, 0;5, -1.25, -0.5, 1.0, 0, 0, 0, 0;6, -0.9, -0.3, 1.0, 0, 0, 0, 0;7, 0, 0, 1.0, 0, 0, 0, 0;8, -1, -0.35, 1.0, 0, 0, 0, 0;9, 0, 0, 1.0, 0, 0, 0, 0];count_s=0;countPV=0;for k=1:size(Node_p,1)if Node_p(k,8)==1countPV=countPV+1;else if Node_p(k,8)==2count_s=count_s+1;end;end;end;countPV;count_s;countPQ=size(Node_p,1)-1-countPV;%显示节点参数disp('节点参数如下:')disp(Node_p)%支路参数%第一列为首节点,第二列为末节点,第三列表示R,第四列表示X,第五列表示B/2 %第六列表示支路类型(1为变比为1的变压器元件;2为输电线元件;0为接地支路)Branch_p =[ 1, 4, 0 , 0.0576, 0 , 1;2, 7, 0 , 0.0625, 0 , 1;3, 9, 0 , 0.0586, 0 , 1;4, 5, 0.01 , 0.085 , 0.088 , 2;4, 6, 0.017 , 0.092 , 0.079 , 2;5, 7, 0.032 , 0.161 , 0.153 , 2;6, 9, 0.039 , 0.17 , 0.179 , 2;7, 8, 0.0085, 0.072 , 0.0745, 2;8, 9, 0.0119, 0.1008, 0.1045, 2];%显示支路参数disp('支路参数如下:')disp(Branch_p)%设置节点初值U=Node_p(:,4);e_ang=Node_p(:,5);P=Node_p(:,2);Q=Node_p(:,3);save data.matformat long%计算结果数据显示精度%显示节点导纳矩阵admi();disp('节点导纳矩阵Y');sparseYKmax=10; %设置最大迭代次数kaccuracy=10^-7;%设置迭代精度k=0;%迭代次数初始化为零for k1=1:Kmax[dP,dQ,y]=getY(U,e_ang);if max(abs(y))<accuracybreak;end;J=jacob(U,e_ang,dP,dQ);x=-inv(J)*y;de_ang=[0;x(1:8)];dU=x(9:14);u1=U(2:9)*dU.';u=diag(u1);U(4:9)=U(4:9)+u;e_ang=e_ang+de_ang;k=k+1;end;e_ang=e_ang/pi*180;save result.matdisp('迭代次数:')kdisp('4号节点至9号节点电压幅值如下:') disp(U(4:9))disp('2号节点至9号节点电压相角如下:') disp(e_ang(2:9))admi.m文件代码如下:%节点导纳矩阵的形成format long %规定数据格式NI=size(Branch_p,1);k_t=1;Y=zeros(NI);for m1=1:NI;I=Branch_p(m1,1);J=Branch_p(m1,2);R=Branch_p(m1,3);X=Branch_p(m1,4);b=Branch_p(m1,5);Style=Branch_p(m1,6);if Style==1 %判断为变压器元件Y(I,I)=Y(I,I)+1/(R+1j*X);Y(J,J)=Y(J,J)+1/(R+1j*X)/k_t/k_t;Y(I,J)=Y(I,J)-1/(R+1j*X)/k_t;Y(J,I)=Y(J,I)-1/(R+1j*X)/k_t;else if Style==0 %判断为母线接地支路元件Y(I,J)=Y(I,J)+1/(R+1j*X);else %判断为输电线元件Y(I,I)=Y(I,I)+1j*b+1/(R+1j*X);Y(J,J)=Y(J,J)+1j*b+1/(R+1j*X);Y(I,J)=Y(I,J)-1/(R+1j*X);Y(J,I)=Y(J,I)-1/(R+1j*X);end;end;end;Y;G=real(Y);B=imag(Y);sparseY=sparse(Y);save data.mat;getY.m文件代码如下:(线性方程组常写作AX=Y形式,故此处命名为get_Y)%计算ΔP和ΔQ的函数function [dP,dQ,y]=getY(U,e_ang)load data P Q G B Node_p countPV count_s;dP=zeros(size(Node_p,1),1); sum1=zeros(size(Node_p,1),1);for i=1:size(Node_p,1)for j=1:size(Node_p,1)sum1(i)=sum1(i)+U(j)*(G(i,j)*cos(e_ang(i)-e_ang(j))+B(i,j)*sin(e_ang(i)-e_ang(j)));end;dP(i)=P(i)-U(i)*sum1(i);end;dQ=zeros(size(Node_p,1),1);sum2=zeros(size(Node_p,1),1);for i=1:size(Node_p,1)for j=1:size(Node_p,1)sum2(i)=sum2(i)+U(j)*(G(i,j)*sin(e_ang(i)-e_ang(j))-B(i,j)*cos(e_ang(i)-e_ang(j)));end;dQ(i)=Q(i)-U(i)*sum2(i);end;y=[dP((count_s+1):9);dQ((countPV+count_s+1):9)]; %拼接ΔP和ΔQ构成方程-J*x=y的向量yjacob.m文件的代码如下:%形成雅克比矩阵的函数function J=jacob(U,e_ang,dP,dQ)load data B G Q P Node_p countPV count_s;size_Y=size(Node_p,1);%H矩阵H1=zeros(size_Y);for i=1:size_Yfor j=1:size_Yif j==i;H1(i,j)= U(i)*U(i)*B(i,j)+Q(i)-dQ(i);elseH1(i,j)=-U(i)*U(j)*(G(i,j)*sin(e_ang(i)-e_ang(j))-B(i,j)*cos(e_ang(i)-e_ang(j)));end;endendH=H1(2:size_Y,2:size_Y);%N矩阵N1=zeros(size_Y);for i=1:size_Yfor j=1:size_Yif j==i;N1(i,j)= -U(i)*U(i)*G(i,j)-(P(i)-dP(i));elseN1(i,j)=-U(i)*U(j)*(G(i,j)*cos(e_ang(i)-e_ang(j))+B(i,j)*sin(e_ang(i)-e_ang(j)));end;end;end;N=N1(2:size_Y,(countPV+count_s+1):size_Y);%M矩阵M1=zeros(size_Y);for i=1:size_Yfor j=1:size_Yif j==i;M1(i,j)=U(i)*U(i)*G(i,j)-(P(j)-dP(j));elseM1(i,j)=U(i)*U(j)*(G(i,j)*cos(e_ang(i)-e_ang(j))+B(i,j)*sin(e_ang(i)-e_ang(j)));end;end;end;M=M1((countPV+count_s+1):size_Y,2:size_Y);%L矩阵L1=zeros(size_Y);for i=1:size_Yfor j=1:size_Yif j==i;L1(i,j)= U(i)*U(i)*B(i,j)-(Q(i)-dQ(i));elseL1(i,j)= -U(i)*U(j)*(G(i,j)*sin(e_ang(i)-e_ang(j))-B(i,j)*cos(e_ang(i)-e_ang(j)));end;endendL=L1((countPV+count_s+1):size_Y,(countPV+count_s+1):size_Y);J=[H N;M L];%拼接构成雅克比矩阵ShortcircuitCalc.m文件的代码如下:clear%三相短路计算format long;%对YN进行修正,形成包括发电机内阻抗和负荷阻抗的节点导纳矩阵re_admi();Z=inv(rY);%计算节点阻抗矩阵disp('4节点发生金属短路')f=4;%短路点为4节点%输出节点阻抗矩阵的短路点所在列disp('节点阻抗矩阵的短路点所在列Z(:,f)=');Z(:,f)%短路电流If计算load result U e_ang;e_angf=e_ang(f);Uf=U(f)*(cos(e_angf/180*pi)+1j*sin(e_angf/180*pi));Zff=Z(f,f);zf=0;If=Uf/(Zff+zf);i_angf=angle(If)*180/pi;If=abs(If);%短路电流计算结果显示disp('短路电流幅值:')Ifdisp('短路电流相角(单位为°)')i_angf%短路时各节点电压计算U_k=U;for x1=1:size(Node_p,1)U_k(x1)=U(x1)*(cos(e_ang(x1)*pi/180)+1j*sin(e_ang(x1)*pi/180))-Z(x1,f)*If*(cos(i_angf*pi/180)+ 1j*sin(i_angf*pi/180));end;%Uk为短路时各节点电压幅值Uk=abs(U_k);%uk_ang为短路时各节点电压相角(单位为°)uk_ang=angle(U_k)*180/pi;%输出短路时各节点电压disp('短路时1-9节点电压:')disp('幅值:')Ukdisp('相角:(单位为°)')uk_ang%计算短路时各支路电流%输出矩阵初始化%第一列为首节点i%第二列为末节点j%第三列为Ii幅值%第四列为Ii相角(单位为°)%第五列为Ij幅值%第六列为Ij相角(单位为°)Ik=[1 4 1 0 1 0;2 7 1 0 1 0;3 9 1 0 1 0;4 5 1 0 1 0;4 6 1 0 1 0;5 7 1 0 1 0;6 9 1 0 1 0;7 8 1 0 1 0;8 9 1 0 1 0];load data Branch_p k_t;%其中变压器变比为k_tNI=size(Branch_p,1);for m1=1:NI;I=Branch_p(m1,1);J=Branch_p(m1,2);R=Branch_p(m1,3);X=Branch_p(m1,4);b=Branch_p(m1,5);Style=Branch_p(m1,6);if Style~=1 %判断为非变压器支路Ik(m1,3)=(U_k(I)-U_k(J))/(R+1j*X)+U_k(I)*1j*b;Ik(m1,4)=angle(Ik(m1,3))*180/pi;Ik(m1,3)=abs(Ik(m1,3));Ik(m1,5)=(U_k(J)-U_k(I))/(R+1j*X)+U_k(J)*1j*b;Ik(m1,6)=angle(Ik(m1,5))*180/pi;Ik(m1,5)=abs(Ik(m1,5));else %否则为变压器支路Ik(m1,3)=(U_k(I)-U_k(J))/(R+1j*X)/k_t;Ik(m1,4)=angle(Ik(m1,3))*180/pi;Ik(m1,3)=abs(Ik(m1,3));Ik(m1,5)=(U_k(J)-U_k(I))/(R+1j*X)/k_t;Ik(m1,6)=angle(Ik(m1,5))*180/pi;Ik(m1,5)=abs(Ik(m1,5));endend%输出短路时各节点电流disp('第一列为首节点i')disp('第二列为末节点j')disp('第三列为Ii幅值')disp('第四列为Ii相角(单位为°)')disp('第五列为Ij幅值')disp('第六列为Ij相角(单位为°)')format shortIksave result_k%形成包括发电机内阻抗、负荷阻抗的节点导纳矩阵format long %规定数据显示精度load data P Q Y Node_p ;load result U;rY=Y;for n1=1:size(Node_p,1)Xd=Node_p(n1,6);Ed=Node_p(n1,7);style=Node_p(n1,8);if style~=0 %判断是否为发电机节点rY(n1,n1)=rY(n1,n1)+1/(1j*Xd);%YN中与发电机节点对应的对角线元素增加发电机导纳else %其他节点(包含负荷节点)rY(n1,n1)=rY(n1,n1)+(-P(n1)+1j*Q(n1))/(U(n1)*U(n1));%与负荷节点对应的对角线元素增加负荷导纳%对于非负荷节点Y矩阵元素不做修改但仍满足上式end;end;rY;。
牛顿法matlab程序及例题

牛顿法matlab程序及例题牛顿法是一种求解非线性方程组的常用方法,它的基本思想是通过迭代逐步逼近方程组的根。
在matlab中,可以通过编写相应的程序来实现牛顿法,并且可以通过一些例题来深入理解其应用。
下面是一份牛顿法的matlab程序:function [x, fval, exitflag, output] = mynewton(fun, x0, tol, maxiter)% fun:非线性方程组的函数句柄% x0:初始点% tol:允许误差% maxiter:最大迭代次数x = x0;fval = feval(fun, x);iter = 0;output = [];while norm(fval) > tol && iter < maxiteriter = iter + 1;J = myjacobian(fun, x);dx = - J fval;x = x + dx;fval = feval(fun, x);output = [output; [x', norm(fval)]];endif norm(fval) <= tolexitflag = 0; % 成功求解elseexitflag = 1; % 未能求解end% 计算雅可比矩阵function J = myjacobian(fun, x)n = length(x);fval = feval(fun, x);J = zeros(n);h = sqrt(eps); % 微小的增量for j = 1:nxj = x(j);x(j) = xj + h;fval1 = feval(fun, x);x(j) = xj - h;fval2 = feval(fun, x);x(j) = xj;J(:, j) = (fval1 - fval2) / (2 * h);end接下来,我们可以通过一个例题来演示牛顿法的应用。
直角坐标牛顿-拉夫逊法潮流计算matlab程序(仅供参考)

%该程序仅针对《电力系统分析下》何仰赞P61的4节点算例。
%节点电压用直角坐标表示时的牛顿-拉夫逊法潮流计算(matlab程序,可能有小错误,仅供学习之用,如果想要通用的程序,可自己动手改或再到pudn、csdn等网站搜索更好的)%南昌大学电力061李圣涛2009年5月编写,2012年5月上传clc%清空command windowsclear all%清空workspace%为了提高可移植性、可读性、通用性,设置以下变量N=4;%独立节点数NPQ=2;%PQ节点数NPV=1;%PV节点数K=0;%迭代次数%请输入最大迭代次数Kmax。
可从0开始,以观察第Kmax次迭代的结果Kmax=input('\n\n请输入最大迭代次数后回车(可从零开始) Kmax=\n');small=10^(-5);%ε不能太小%i为节点标号,其中1号……NPQ号为PQ节点,(NPQ+1)%号……(N-1)号为PV节点,N号节点为平衡节点%节点导纳矩阵Y的实部G=[1.042093-0.5882350-0.453858;-0.5882351.0690050-0.480769;0000;-0.453858-0.48076900.934627 ];%节点导纳矩阵Y的虚部B=[ -8.2428762.3529413.6666671.891074;2.352941-4.72737702.403846;3.6666670-3.33333330;1.8910742.4038460-4.261590 ];%Y矩阵Y=complex(G,B);%给定PQ节点的Pnode、Qnode,PV节点的Pnode、Vnode。
(Vnode为节点电压的幅值)Pnode=[ -0.3-0.550.5];%PQ、PV节点的初值PQnode=[-0.18-0.130];%PQ节点的初值QVnode=[ 001.10];%PV节点的初值V%迭代初值e=[ 1.01.01.11.05];f=[ 0000];%利用for循环来实现多次迭代。
matlabnewton-raphson method

matlabnewton-raphson method如何使用MATLAB 实现牛顿-拉夫逊方法引言:牛顿-拉夫逊方法是一种用于求解非线性方程的数值方法,在科学计算和工程领域具有广泛的应用。
在MATLAB 中,我们可以利用其强大的数值计算能力轻松实现这一方法。
本文将一步一步介绍如何使用MATLAB 实现牛顿-拉夫逊方法,帮助读者更好地理解和运用该方法。
第一步:问题建模和方程确定在使用牛顿-拉夫逊方法之前,我们首先需要建立一个数学模型并确定需要求解的方程。
我们假设我们试图解决的方程为F(x) = 0,其中x是需要求解的变量。
为了使用牛顿-拉夫逊方法,我们需要确定该方程的导数F'(x)。
在MATLAB 中,我们可以通过定义一个函数来表示方程F(x)和其导数F'(x)。
下面是一个简单的示例:MATLABfunction [F, dF] = equation(x)F = x^2 - 2; 示例方程为x^2 - 2 = 0dF = 2*x; 方程的导数为2*xend在这个示例中,我们定义了一个名为equation的函数,该函数接收一个变量x作为输入,并返回方程F(x)和其导数F'(x)的值。
请注意,这只是一个示例,实际问题中的方程和导数可能更加复杂。
第二步:实现牛顿-拉夫逊迭代算法在确定了方程和导数之后,我们可以开始实现牛顿-拉夫逊迭代算法。
该算法的基本思想是从一个初始猜测值x0开始,通过不断迭代来逼近方程的根。
迭代的过程可以通过以下公式表示:x(i+1) = x(i) - F(x(i)) / F'(x(i))在MATLAB 中,我们可以使用一个循环来实现这个迭代过程。
下面是一个使用牛顿-拉夫逊方法求解方程的示例:MATLABfunction x = newtonRaphson(x0, maxIter, epsilon)x = x0;for iter = 1:maxIter[F, dF] = equation(x);if abs(F) < epsilonbreak;endx = x - F / dF;endend在这个示例中,我们定义了一个名为newtonRaphson的函数,该函数接收一个初始猜测值x0、最大迭代次数maxIter和收敛条件epsilon作为输入,并返回牛顿-拉夫逊方法计算得到的根x。
基于MATLAB的牛顿拉夫逊法电力潮流计算与实现

作者简介 罗杰(1978—),男,硕士,华东交通大学讲师,从事电力
自动化系统的研究和教学工作。
184
力
潮
(Department of Electrical and Electronic Engineering, East China Jiaotong University,
流
Jiangxi Nanchang 330013))
计
算
与
摘 要:牛顿 - 拉夫逊法是电力系统潮流计算最常用的算法之一,它收敛性好,迭代次数较少。本文基于牛顿 - 拉夫逊
system. It has good convergence and less iterative number. The paper gives a specific analysis of New-
ton-Raphson method, designs a visual interface based on MATLAB.The visual interface has a good operability
1 电力潮流计算方法的发展 最初,电力系统潮流计算是通过人工计算的。后来为了
适应电力系统日益发展的需要,采用了交流计算台。随着电 子数字计算机的出现,1956 年 Ward 等人编制了实际可行的 计算机潮流计算程序。这样,就为日趋复杂的大规模电力系 统提供了极其有力的计算手段。经过几十年的发展,电力系 统潮流计算已经十分成熟。电力系统潮流计算形式分为离线 计算和在线计算两种。前者主要用于电力系统规划设计、安 排系统的运行方式;后者则用于正在运行系统的实时监视和 实时控制。在计算原理上离线和在线潮流计算是相同的,都 要求满足以下几点:
表二 迭代过程中雅可比矩阵的各对角元素
牛顿-拉夫逊法潮流计算matlab程序

end
fprintf(myf,'n线路计算结果:n节点I 节点J 线路功率S(I,J) 线路功率S(J,I) 线路损耗dS(I,J)n');
[bus,line] = ReNum_(bus,line,nodenum); % 对节点恢复编号的子程序
YtYm = YtYm_(line); % 计算线路的等效Yt和Ym的子程序,以计算线路潮流
bus_res = bus_res_(bus); % 计算节点数据结果的子程序
J = Jac_(bus,Y,nPQ); % 计算雅克比矩阵的子程序
UD = zeros(nPQ,nPQ);
for i = 1:nPQ
UD(i,i) = bus(i,2); % 生成电压对角矩阵
fclose(myf); % 在当前目录下生成“Result.m”文件,写入节点导纳矩阵
format long
EPS = 1.0e-10; % 设定误差精度
for t = 1:100 % 开始迭代计算,设定最大迭代次数为100,以便不收敛情况下及时跳出
[dP,dQ] = dPQ_(Y,bus,nPQ,nPV); % 计算功率偏差dP和dQ的子程序
for i = 1:nb
fprintf(myf,'%2.0f ',bus_res(i,1));
fprintf(myf,'%10.6f ',bus_res(i,2));
fprintf(myf,'%10.6f ',bus_res(i,3));
基于Matlab的两机五节点网络潮流仿真计算—牛拉法项目计划书

基于Matlab的两机五节点网络潮流仿真计算—牛拉法项目计划书基于Matlab的两机五节点网络潮流仿真计算—牛拉法计划书第一章电力系统潮流计算概述1.1 潮流计算简介电力系统潮流计算是研究电力系统稳态运行情况的一种计算,它根据给定的运行条件及系统接线情况确定整个电力系统各部分的运行状态:各母线的电压,各元件中流过的功率,系统的功率损耗等等。
在电力系统规划的设计和现有电力系统运行方式的研究中,都需要利用潮流计算来定量地分析比较供电方案或运行方式的合理性。
可靠性和经济性。
此外,电力系统潮流计算也是计算系统动态稳定和静态稳定的基础。
所以潮流计算是研究电力系统的一种很重要和基础的计算。
电力系统潮流计算也分为离线计算和在线计算两种,前者主要用于系统规划设计和安排系统的运行方式,后者则用于正在运行系统的经常监视及实时控制。
利用电子数字计算机进行电力系统潮流计算从50年代中期就已经开始。
在这20年内,潮流计算曾采用了各种不同的方法,这些方法的发展主要围绕着对潮流计算的一些基本要求进行的。
对潮流计算的要求可以归纳为下面几点:(1)计算方法的可靠性或收敛性;(2)对计算机内存量的要求;(3)计算速度;(4)计算的方便性和灵活性。
电力系统潮流计算问题在数学上是一组多元非线性方程式求解问题,其解法都离不开迭代。
因此,对潮流计算方法,首先要求它能可靠地收敛,并给出正确答案。
由于电力系统结构及参数的一些特点,并且随着电力系统不断扩大,潮流计算的方程式阶数也越来越高,对这样的方程式并不是任何数学方法都能保证给出正确答案的。
这种情况成为促使电力系统计算人员不断寻求新的更可靠方法的重要因素。
1.2 潮流计算的意义及其发展(1)在电网规划阶段,通过潮流计算,合理规划电源容量及接入点,合理规划网架,选择无功补偿方案,满足规划水平的大、小方式下潮流交换控制、调峰、调相、调压的要求。
(2)在编制年运行方式时,在预计负荷增长及新设备投运基础上,选择典型方式进行潮流计算,发现电网中薄弱环节,供调度员日常调度控制参考,并对规划、基建部门提出改进网架结构,加快基建进度的建议。
牛顿—拉夫逊法潮流计算MATLAB程序

牛顿—拉夫逊法潮流计算程序By Yuluo%牛顿--拉夫逊法进行潮流计算n=input('请输入节点数:n=');n1=input('请输入支路数:n1=');isb=input('请输入平衡母线节点号:isb=');pr=input('请输入误差精度:pr=');B1=input('请输入由支路参数形成的矩阵:B1=');B2=input('请输入各节点参数形成的矩阵:B2=');X=input('请输入由节点参数形成的矩阵:X=');Y=zeros(n);e=zeros(1,n);f=zeros(1,n);V=seros(1,n);O=zeros(1,n);S1=zeros(n1);for i=1:nif X(i,2)~=0;p=X(i,1);Y(p,p)=1./X(i,2);endendfor i=1:n1if B1(i,6)==0p=B1(i,1);q=B1(i,2);else p=B1(i,2);q=B1(i,1);endY(p,q)=Y(p,q)-1./(B1(i,3)*B1(i,5);Y(p,q)=Y(p,q);Y(p,q)=Y(q,q)+1./(B1(i,3)*B1(i,5)^2)+B1(i,4)./2;Y(p,p)=Y(p,p)+1./B1(i,3)+B1(i,4)./2;end %求导纳矩阵G=real(Y);B=imag(Y);for i=1:ne(i)=real(B2(i,3));f(i)=imag(B2(i,3));V(i)=B2(i,4);endfor i=1:nS(i)=B2(i,1)-B2(i,2);B(i,i)=B(i,i)+B2(i,5);endP=rea(S);Q=imag(S);ICT1=0;IT2=1;NO=2*n;N=NO+1;a=0;while IT2~=0IT2=0;a=a+1;for i=1:n;if i~=isbC(i)=0;D(i)=0;for j1=1:nC(i)=C(i)+G(i,j1)*e(j1)-B(i,j1)*f(j1);D(i)=D(i)+G(i,j1)*f(j1)+B(i,j1)*e(j1);endP1=C(i)*e(i)+f(i)*D(i);Q1=f(i)*C(i)-D(i)*e(i); %求'P,Q'V2=e(i)^2+f(i)^2;if B2(i,6)~=3DP=P(i)-P1;DQ=Q(i)-Q1;for j1=1:nif j1~=isb&j1~=iX1=-G(i,j1)*e(i)-B(i,j1)*f(i);X2=B(i,j1)*e(i)-G(i,j1)*f(i);X3=X2;X4=-X1;p=2*i-1;q=2*j1-1;J(p,q)=X3;J(p,N)=DQ;m=p+1;J(m,q)=X1;J(m,N)=DP;q=q+1;J(p,q)=X4;J(m,q)=X2; endendelseDP=P(i)-P1;DV=V(i)~2-V2;for j1=1:nif j1~=isb&j1~=iX1=-G(i,j1)*e(i)-B(i,j1)*f(i);X2=B(i,j1)*e(i)-G(i,j1)*f(i);X5=0;X6=0;p=2*i-1;q=2*j1-1;J(p,q)=X5;J(p,N)=DV;m=p+1;J(m,q)=X1;J(m,N)=DP;q=q+1;J(p,q)=X6;J(m,q)=X2; elseif j1==i&j1~=isbX1=-C(i)-G(i,i)*e(i)-B(i,i)*f(i);X2=-D(i)+B(i,i)*e(i)-G(i,i)*f(i);X5=-2*e(i);X6=-2*f(i);p=2*i-1;q=2*j1-1;J(p,q)=X5;J(p,N)=DV;m=p+1;J(m,q)=X1;J(m,N)=DP;q=q+1;J(p,q)=X6;J(m,q)=X2;endendendendend %求雅可比矩阵for k=3:N0k1=k+1;N1=N;for k2=k1:N1J(k,k2)=J(k,k2)./J(k,k);endJ(k,k)=1;if k~=3k4=k-1;for k3=3:k4for k2=k1:N1J(k3,k2)=J(k3,k2)-J(k3,k)*J(k,k2); endJ(k3,k)=0;endendfor k3=k1:N0for k2=k1:N1J(k3,k2)=J(k3,k2)-J(k3,k)*J(k,k2); endJ(k3,k)=0;endendendfor k=3:2:N0-1L=(k+1)./2;e(L)=e(L)-J(k,N);k1=k+1;f(L)=f(L)-J(k1,N);endfor k=3:N0DET=abs(J(k,N));if DET>=prIT2=IT2+1endendICT2(a)=IT2ICT1=ICT1+1;for k=1:ndy(k)=sqrt(e(k)^2+f(k)^2);endfor i=1:nDy(k)=sqrt(e(k)^2+f(k)^2);endfor i=1:nDy(ICT1,i)=dy(i);endend %用高斯消去法解“w=-J*V”disp('迭代次数');disp(ICT1);disp('没有达到精度要求的个数');disp(ICT2);for k=1:nV(k)=sqrt(e(k)^2+f(k)^2);O(k)=atan(f(k)./e(k))*180./pi;endE=e+f*j;disp('各节点的实际电压标么值E为(节点号从小到大的排列):');disp(E);disp('各节点的电压大小V为(节点号从小到大的排列):');disp(V);disp('各节点的电压相角O为(节点号从小到大的排列):');disp(O);for p=1:nC(p)=0;for q=1:nC(p)=C(p)+conj(Y(p,q))*conj(E(q));endS(p)=E(p)*C(p);enddisp('各节点的功率S为(节点号从小到大排列):‘);disp(S);disp('各条支路的首端功率Si为(顺序同您输入B1时一样):‘);for i=1:n1if B1(i,6)==0p=B1(i,1);q=B1(i,2);else p=B1(i,2);q=B1(i,1);endSi(p,q)=E(p)*(conj(E(p))*conj(B1(i,4)./2)+(conj(E(p)*B1(i,5))-conj(E(q)))*con j(1./(B1(i,3)*B1(i,5))));disp(Si(p.q));enddisp('各条支路的末端功率Sj为(顺序同您的输入B1时一样):‘);for i=1:n1if B1(i,6)==0p=B1(i,1);q=B1(i,2);else p=B1(i,2);q=B1(i,1);endSj(q,p)=E(q)*(conj(E(q))*conj(B1(i,4)./2)+(xonj(E(q)./B1(i,5))-conj(E(p)))*xo nj(1./(B1(i,3)*B1(i,5))));disp(Sj(q,p));enddisp('各条支路的功率损耗DS为(顺序同您输入B1时一样):’);for i=1:n1if B1(i,6)==0p=B1(i,1);q=B1(i,2);else p=B1(i,2);q=B1(i,1);endDS(i)=Si(p,q)+Sj(q,p);disp(DS(i));endfor i=1:ICT1Cs(i)=i;enddisp('以下是每次迭代后各节点的电压值(如图所示)‘);plot(Cs,Dy),xlabel('迭代次数’),ylabel('电压'),title('电压迭代次数曲线');。
牛顿拉夫逊法潮流计算matlab程序

牛顿拉夫逊法潮流计算matlab 程序%电力系统的潮流计算,以下程序参考文献《电力系统毕业设计》中国水利电力出版社%(该文献用极坐标下的牛顿——拉夫逊方法实现,在此为了与课本一致做了修改)%为了计算方便将原来的下标做以下修改: S2 S3 S4 S5 U2 U3 U4 U5 改为S1 S2 S3 S4 U1 U2 %U3 U4 ,即原题的平衡点1就变为现在的平衡点5%1.形成节点导纳矩阵,yb55=6.250-18.750j;yb51=-5.000+15.000j;yb52= -1.250+3.750j;yb53=0.000-0.000j;yb54=0.000-0.0 00j;yb15=-5.000+15.000j;yb11=10.834-32.500j;yb12 =-1.667+5.000j;yb13=-1.667+5.000j;yb14=-2.500 +7.500j;yb25=-1.250+3.750j;yb21=-1.667+5.000j;yb22=12.917-38.750j;yb23=-10.000+30.000j;yb24=0.000 -0.000j;yb35=0.000-0.000j;yb31=-1.667+5.000j;yb32=-1 0.000+30.000j;yb33=12.917-38.750j;yb34=-1.250 +3.750j;yb45=0.000-0.000j;yb41=-2.500+7.500j;yb42=0.0 00-0.000j;yb43=-1.250+3.750j;yb44=3.750-11.25 0j;YB=[yb11 yb12 yb13 yb14 yb15; yb21 yb22 yb23 yb24 yb25 ;yb31 yb32 yb33 yb34 yb35; yb41 yb42 yb43 yb44 yb45 ;yb51 yb52 yb53 yb54 yb55];%计算各节点功率的不平衡量设U=E+jF ;Y=G+Bj;E(1)=1.00;E(2)=1.00;E(3)=1.00;E(4)=1.00;F(1)=0;F(2)=0;F(3)=0;F(4)=0;G=real(YB);B=imag(YB);%设S=P+Bj;S(1)=0.20+0.20i;S(2)=-0.45-0.15i;S(3)=-0.40-0.05 i;S(4)=-0.60-0.10i;P=real(S);Q=imag(S);k=0;precision=1;N1=4;while precision > 0.00000001E(5)=1.06;F(5)=0;for m=1:N1for n=1:N1+1%计算Pi,Qi,设Pi=Pt;Qi=QtPt(n)=(E(m)*(G(m,n)*E(n)-B(m,n)*F(n))+F(m)* (G(m,n)*F(n)+B(m,n)*E(n)));Qt(n)=(F(m)*(G(m,n)*E(n)-B(m,n)*F(n))-E(m)* (G(m,n)*F(n)+B(m,n)*E(n)));end%设P,Q的改变量为dP,dQdP(m)=P(m)-sum(Pt);dQ(m)=Q(m)-sum(Qt);endfor m=1:N1for n=1:N1+1%计算Hij Nij Jij LijH(m,n)=-B(m,n)*E(m)+G(m,n)*F(m); N(m,n)=G(m,n)*E(m)+B(m,n)*F(m); J(m,n)=-B(m,n)*F(m)-G(m,n)*E(m);L(m,n)=G(m,n)*F(m)-B(m,n)*E(m);endendfor m=1:N1for n=1:N1+1Bi(n)=G(m,n)*F(n)+B(m,n)*E(n);Ai(n)=G(m,n)*E(n)-B(m,n)*F(n);end%计算Hii,Nii,Jii,Lii,由公式4-44b 左侧公式实现,sum(Ai),sum(Bi)用于实现公式中的sigerma从j到n的求和;H(m,m)=sum(Bi)-(B(m,m)*E(m)+G(m,m)*F(m) )+2*G(m,m)*F(m);N(m,m)=sum(Ai)-(G(m,m)*E(m)-B(m,m)*F(m)) +2*G(m,m)*E(m);J(m,m)=-2*B(m,m)*F(m)+sum(Ai)-(G(m,m)*E( m)-B(m,m)*F(m));L(m,m)=-2*B(m,m)*E(m)-(sum(Bi)-(B(m,m)*E( m)+G(m,m)*F(m)));end%设雅可比矩阵为JJ,以下语句用来实现雅可比矩阵中对角线上元素H N J L 的排列for m=1:N1JJ(2*m-1,2*m-1)=H(m,m);JJ(2*m-1,2*m)=N(m,m);JJ(2*m,2*m-1)=J(m,m);JJ(2*m,2*m)=L(m,m);end%以下语句用于实现雅可比矩阵非对角线上元素的排列for m=1:N1for n=1:N1if m==nelseH(m,n)=-B(m,n)*E(m)+G(m,n)*F(m);N(m,n)=G(m,n)*E(m)+B(m,n)*F(m);J(m,n)=-B(m,n)*F(m)-G(m,n)*E(m);L(m,n)=G(m,n)*F(m)-B(m,n)*E(m);JJ(2*m-1,2*n-1)=H(m,n);JJ(2*m-1,2*n)=N(m,n);JJ(2*m,2*n-1)=J(m,n);JJ(2*m,2*n)=L(m,n);endendend%设由P,Q的改变量组成的8×1矩阵为PQ,由E,F的改变量组成的8×1矩阵为dU for m=1:N1PQ(2*m-1)=dP(m);PQ(2*m)=dQ(m);enddU=inv(JJ)*PQ';precision=max(abs(dU));for n=1:N1F(n)=F(n)+dU(2*n-1);E(n)=E(n)+dU(2*n);endfor n=1:N1+1U(n)=E(n)+(F(n))*j;endk=k+1;k-1, dU=dU',PQ,Uend%计算S(5),也就是题目中的S1,即平衡节点功率for m=1:N1+1I(m)=YB(5,m)*U(m);endS(5)=U(5)*sum(conj(I))%设网络总损耗为Ss,计算输电效率efficiency for m=1:N1+1S0(m)=S(m); P(m)=real(S(m));endSs=sum(S0)efficiency=(abs(P(3)+P(4)+P(2)))/(P(5)+(P(1)))*1 00%计算线功率S(m,n),与课本中各元素的相对位置有所不同for m=1:N1+1for n=1:N1+1S(m,n)=U(m)*(conj(U(m))-conj(U(n)))*conj(-YB (m,n));endendS。
基于MATLAB的直角坐标下牛顿拉夫逊法潮流计算

基于MATLAB的直角坐标下牛顿拉夫逊法潮流计算基于MATLAB的直角坐标下牛顿-拉夫逊法潮流计算摘要潮流计算,指在给定电力系统网络拓扑、元件参数和发电、负荷参量条件下,计算有功功率、无功功率及电压在电力网中的分布。
潮流计算是根据给定的电网结构、参数和发电机、负荷等元件的运行条件,确定电力系统各部分稳态运行状态参数的计算。
通常给定的运行条件有系统中各电源和负荷点的功率、枢纽点电压、平衡点的电压和相位角。
待求的运行状态参量包括电网各母线节点的电压幅值和相角,以及各支路的功率分布、网络的功率损耗等。
它是基于配电网络特有的层次结构特性,论文提出了一种新颖的分层前推回代算法。
该算法将网络支路按层次进行分类,并分层并行计算各层次的支路功率损耗和电压损耗,因而可大幅度提高配电网潮流的计算速度。
论文在MATLAB环境下,利用其快速的复数矩阵运算功能,实现了文中所提的分层前推回代算法,并取得了非常明显的速度效益。
另外,论文还讨论发现,当变压器支路阻抗过小时,利用Π型模型会产生数值巨大的对地导纳,由此会导致潮流不收敛。
为此,论文根据理想变压器对功率和电压的变换原理,提出了一种有效的电压变换模型来处理变压器支路,从而改善了潮流算法的收敛特性。
关键词:电力系统;潮流分析;MATLABAbstractFlow calculation is an important analysis function of power system and is the necessary facility of fault analysis, relay protection setting and security analysis. In addition, the traditional design method is a structured program design method based on functional decomposition, the entire software engineering as a combination of objects, as the domain of a particular issue, the composition of the object will remain basically unchanged Therefore, this decomposition methodbased on object design software structure relatively stable, easy to maintain and expand. . Combine the characteristics of power systems, software running on the use of MATLAB language WINDOWS OS graphical flow calculation software. The main features of the system are simple and intuitive graphical interface and stable operation. Calculated accurately Calculations, the algorithm has done a number of improvements to enhance the computing speed, the various types of effective package makes the procedure has good modularity maintainability and reusability. The MATLAB language is used to calculate flow distribution of power system in this paper. The typical examples explain that the method has the characteristics of simple programming high calculation efficiency and matching people habit the calculation result can satisfy the engineering calculation needs and at the same time verify the usefulness of the method.Key words: Electric power system; flow calculation; MATLAB 第一章电力系统潮流计算概述1.1电力系统潮流概述潮流计算是电力系统分析中的一种最基本的计算,它的任务是在给定的接线方式和运行条件下,确定系统的运行状态,如各母线上的电压(幅值和相角)、网络中的功率分布及功率损耗等,是电力系统的稳态计算。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
节点牛顿拉夫逊法法matlab程序
clear;
clc;
n=9;%节点数;
nl=9;%支路数;
isb=1;%平衡节点号;
pr=0.00001;%误差精度;
b1=[140.0576i01.051;450.017+0.092i0.158i10;560.039+0.17i 0.358i10;360.0586i01.051;670.0119+0.1008i0.209i10;78 0.0085+0.072i0.149i10;280.0625i01.051;890.032+0.161i 0.306i10;940.01+0.085i0.176i10];
%依次是支路首端;末端,支路阻抗;对地电纳;支
比;折算到哪一侧标志(高压侧为1;低压侧为0);其为支路参数矩阵;
%关于变比为1.05的问题:,=,=1.05,k*=1.05(以全网平均额定电压为基准电压),上述矩阵均是以标幺值给出的
b2=[001.051.0501;1.6301.051.0503;0.8501.051.0503;001 002;00.9+0.3i1002;001002;01+0.35i1002;001002;0 1.25+0.5i1002];
%节点参数矩阵;依次是节点的发电机功率给定值Ps,Qs
(只有2和3节点的功率给定值不为0,分别为1.63+0.067i和0.85-0.109i);负荷功率给定值;节点电压初值(除发电机节点为1.05外,其它均为1。
即一般将PV节点和平衡节点初始电压设为1.05,其它节点初始电压设为1);PV节点电压Vs给定值(标幺值,除去损耗之后为1,故给定值的标幺值为1.05);节点无功补偿设备容量;节点分类标号(平衡1;PQ2;PV3);
Y=zeros(n);%求导纳阵;
for i=1:nl
if b1(i,6)==1
p=b1(i,1);q=b1(i,2);
else
p=b1(i,2);q=b1(i,1);
end%为了保证p为低压侧节点,q为高压侧节点
Y(p,q)=Y(p,q)-1./(b1(i,3)*b1(i,5));
Y(q,p)=Y(p,q);
Y(q,q)=Y(q,q)+1./(b1(i,3)*b1(i,5)^2)+b1(i,4)./2;
Y(p,p)=Y(p,p)+1./b1(i,3)+b1(i,4)./2;
end
%disp('系统的导纳阵为:');
%disp(Y);
%求解导纳矩阵;
G=real(Y);B=imag(Y);%取导纳矩阵的实部和虚部;
for i=1:n
e(i)=real(b2(i,3));(1)
f(i)=imag(b2(i,3));(2)
%(1)和(2)为PQ节点电压的实部和虚部
v(i)=b2(i,4);%PV节点电压
end
%电压赋初值;
for i=1:n
S(i)=b2(i,1)-b2(i,2);
B(i,i)=B(i,i)+b2(i,5);%加入无功补偿设备的导纳;
end
P=real(S);Q=imag(S);%给有功功率和无功功率赋初值
w=zeros(2*n,1);%定义功率和电压变化量组成2n*1的矩阵;Jac=zeros(2*n);%定义雅可比矩阵;
t=0;
while t==0
for i=1:n
if b2(i,6)~=isb
C=0;D=0;
for j=1:n
C=C+G(i,j)*e(j)-B(i,j)*f(j);
D=D+G(i,j)*f(j)+B(i,j)*e(j);
end
if b2(i,6)==2%P,Q节点;
w(2*i)=P(i)-e(i)*C-f(i)*D;
w(2*i-1)=Q(i)-f(i)*C+e(i)*D;
else if b2(i,6)==3%P,V节点;
w(2*i)=P(i)-e(i)*C-f(i)*D;
w(2*i-1)=v(i)^2-(e(i)^2+f(i)^2);
end
end
else
w(2*i-1)=0;
w(2*i)=0;%平衡节点不参与求解雅可比矩阵
end
end
%disp(w);%求解有功无功及电压变化量的矩阵;
w1=w(3:2*n);%除去平衡节点
for
i=1:n
for j=1:n
if b2(i,6)~=isb
if b2(i,6)==2%P,Q节点;
if j~=i
Jac(2*i,2*j-1)=-1*(G(i,j)*e(i)+B(i,j)*f(i)); Jac(2*i-1,2*j)=(G(i,j)*e(i)+B(i,j)*f(i));
Jac(2*i,2*j)=B(i,j)*e(i)-G(i,j)*f(i);
Jac(2*i-1,2*j-1)=B(i,j)*e(i)-G(i,j)*f(i); else if j==i
m=0;h=0;
for r=1:n
m=m+G(i,r)*e(r)-B(i,r)*f(r);
h=h+G(i,r)*f(r)+B(i,r)*e(r);
end
Jac(2*i,2*j-1)=-1*m-G(i,i)*e(i)-B(i,i)*f(i); Jac(2*i-1,2*j)=-1*m+G(i,i)*e(i)+B(i,i)*f(i); Jac(2*i,2*j)=-1*h+B(i,i)*e(i)-G(i,i)*f(i); Jac(2*i-1,2*j-1)=h+B(i,i)*e(i)-G(i,i)*f(i); end
end
else if b2(i,6)==3%P,V节点;
if j~=i
Jac(2*i,2*j-1)=-1*(G(i,j)*e(i)+B(i,j)*f(i)); Jac(2*i-1,2*j)=0;
Jac(2*i,2*j)=B(i,j)*e(i)-G(i,j)*f(i);
Jac(2*i-1,2*j-1)=0;
else if j==i
m=0;h=0;
for r=1:n
m=m+G(i,r)*e(r)-B(i,r)*f(r);
h=h+G(i,r)*f(r)+B(i,r)*e(r);
end
Jac(2*i,2*j-1)=-1*m-G(i,i)*e(i)-B(i,i)*f(i); Jac(2*i-1,2*j)=-2*f(i);
Jac(2*i,2*j)=-1*h+B(i,i)*e(i)-G(i,i)*f(i); Jac(2*i-1,2*j-1)=-2*e(i);
end
end
end
end
else
Jac(2*i-1,2*j-1)=0;
Jac(2*i,2*j)=0;
Jac(2*i-1,2*j)=0;
Jac(2*i,2*j-1)=0;
end
end
end
%disp(Jac);%求解包含平衡节点在内的雅可比矩阵;
Jac1=Jac(3:2*n,3:2*n);%平衡节点不计入雅可比矩阵内
for k=1:2*n-2
m=0;
for i=k+1:2*n-2
m=Jac1(i,k)./Jac1(k,k);
w1(i)=w1(i)-m*w1(k);%对应于线性方程的增光矩阵做初等变换
for j=k+1:2*n-2
Jac1(i,j)=Jac1(i,j)-m*Jac1(k,j);
%通过矩阵Jac1的第i行-m*对应第一行的元素,从而通过矩阵的初等变换将第i行的第一个元素是化为0
end
end
end%将雅可比矩阵Jac1转变为上三角矩阵(所有0在下面)
E(2*n-2)=w1(2*n-2)./Jac1(2*n-2,2*n-2);
for i=2*n-3:-1:1
%i=s:d:f,s表示起始值,d表示增量,f表示终点值(这里2*n-3为Jac1的最后一行或一列;Jac1为(2n-2)*(2n-2)阶矩阵;Jac为2n*2n阶矩阵)
c=0;
for k=i+1:2*n-2
c=c+Jac1(i,k)*E(k);
E(i)=(w1(i)-c)./Jac1(i,i);
end
end
%disp(E);%求得电压实部和虚部的修正量(△V)
for i=1
:n-1
e(i+1)=e(i+1)-E(2*i-1);
f(i+1)=f(i+1)-E(2*i);%(1)这里,故减号。
(2)由于e(i)和f(i)的第一个元素包含了平衡节点,而在计算E(i)中不包含平衡节点,所以为i+1,即从2开始。
end
%disp(e);
%disp(f);
for i=1:n-1
b(2*i-1)=abs(E(2*i-1));
b(2*i)=abs(E(2*i));
end
KB=max(b);
%disp(KB);
if KB<pr
t=1;
else
t=0;
end
end
%disp(e);
%disp(f);
for i=1:n
fz(i)=sqrt(e(i)^2+f(i)^2);
end
disp(fz);%牛顿拉夫逊法求解正常状态下的潮流,这里只有电压的幅值。