牛顿-拉夫逊法求解非线性方程

牛顿-拉夫逊法求解非线性方程
牛顿-拉夫逊法求解非线性方程

牛顿-拉夫逊法潮流计算

一、 基本原理

设有单变量非线性方程

()0

(1129)f x =-

求解此方程时,先给出解的近似值(0)x ,它与真解的误差为(0)x ?,则满足方程(11-29),即

(0)(0)()0f x x +?=

将上式左边的函数在(0)x 附近展成泰勒级数,便得

(0)2

(0)

(0)(0)(0)(0)

(0)

(0)()(0)()()()()()2!

()

()

(1130)

!

n

n x f x

x f x f x x

f x x f x n ?'''+?=+?++?++-

式中,(0)()(0)(),,()n f x f x ' 分别为函数()f x 在(0)x 处的一阶导数,…,n 阶导数。 如果差值(0)x ?很小,(0)x ?的二次及以上的各项均可略去,式(11-30)便简化成

(0)(0)(0)(0)(0)()()()0f x x f x f x x '+?=+?=

这是对于亦是的修正量(0)x ?的线性方程式,亦称修正方程式。解此方程可得修正量

(0)(0)

(0)

()

()

f x x

f x ?=-' 用所求得的(0)x ?去修正近似解,便得

(0)(1)(0)

(0)

(0)

(0)

()

()

f x x x

x

x

f x =+?=-'

修正后的近似解(1)x 同真解仍然有误差。为了进一步 逼近真解,这样的迭代计算可以反复进行下去, 迭代计算的通式是

()(1)

()

()()(1131)()

k k k k f x x

x

f x +=-

-'

迭代过程的收敛判据为

()1

|()|(1132)k f x ε<-

或()2||(1133)k x ε?<-

式中,1ε和2ε为预先给定的小正数。

这种解法的几何意义可以从图11-26得到说明。函数()y f x =为图中的曲线。

()0f x =的解相当于曲线与x 轴的交点。如果第k 次迭代中得到,则过点

()()()[,()]k k k x y f x =作一切线,此切线同x 轴的交点便确定了下一个近似解(1)k x +。由此可见,牛顿拉夫逊法实质上就是切线法,是一种逐步线性化的方法。

牛顿法不仅用于求解单变量方程,它也是求解多变量非线性代数方程的有效方法。

设有n 个联立的非线性代数方程

11221212(,,,)0(,,,)0(1134)(,,,)0n n n n f x x x f x x x f x x x =??=?

-?

??=?

假定已给出各变量的初值(0)(0)(0)12,,,n x x x ,令(0)(0)(

0)12,,,n x x x ??? 分别为各变量

的修正量,使其满足方程(11-34),即

(0)(0)(0)(0)(0)(0)

11122(0)(0)(0)(0)(0)(0)

21122(0)(0)(0)(0)(0)(0)

1122(,,,)0(,,,)0(1135)(,,,)0n n n n n n n f x x x x x x f x x x x x x f x x x x x x ?

+?+?+?=?+?+?+?=?

-?

?

?+?+?+?=?

将上式中的n 个多元函数在初始值附近分别展成泰勒级数,并略去含有

(0)(0)(0)12,,,n x x x ??? 的二次及以上阶次的各项,便得

000(0)(0)(0)

1111121212000

000(0)(0)(0)

2222121212000000(0)(0)121212000(,,,)0(,,,)0(,,,)n n n n n n n n n n n n f f f f x x x x x x x x x f f f f x x x x x x x x x f f f f x x x x x x x x ???+

?+?++?=??????+?+?++?=??????+?+?++??? ()()()

()()()()()()(0)

(1136)0n x ????

??

-??

?

??

?=??

方程式(11-36)也可以写成矩阵形式

11112000000(0)

1121222000(0)212212000(0)0001212000(,,,)(,,,)(,,,)n n n

n n n n n n n n

f f f

x x x f x x x x f f f f x x x x x x x x f x x x f f f x x x ??????

????????????

??????????????=-??????

????????????

?????????????

()()()

()()()()()()(1137)???-???????

方程式(11-37)对于修正量(0)(0)(0)12,,,n x x x ??? 的线性方程,称为牛顿法的修正方程式。利用高斯消去或三角分解可以解出修正量(0)(0)(0)12,,,n x x x ??? 。然后对初始近似解进行修正

(1)(0)(0)

(1,2,,)

(1138)i i i x x x i n =+?=-

如此反复迭代,在进行第次迭代时,从求解修正方程式

111

12()1121222()212212()1212(,,,)(,,,)(,,,)n k k k k n k n

n k k k k n n n n n n n k k

k f f f x x x f x x x x f f f f x x x x x x x x f x x x f f f x x x ??????

??????????????????????????=-??????

????????????

?????????????

(k )(k )(k )

(k )(k )(k )(k )(k )(k )(1139)???-????

?

??

得到修正量,并对各变量进行修正

(1)()()

(1,2,,)(1140)k k k i i i x x x i n +?=+?=-

式(11-39)和式(11-40)也可以缩写为

()()()

()(1141)k k k F X J X =-?-

和(1)()()

(1142)k k k X X X +=+?-

式中,X 和X ?分别是由n 个变量和修正量组成的n 维列向量;()F X 是由n 个多元函数组成的n 维列向量;J 是n n ?阶方阵,称为雅可比矩阵,它的第i j 、个元素i

ij j

f J x ?=

?是第i 个函数12(,,,)0i n f x x x = 对第j 个变量j x 的偏导数;上角标()k 表示J 阵的每一个元素都在点12(,,,)n x x x (k )(k )(k )

处取值。

迭代过程一直进行到满足收敛判据

121

max{|(,,,)|}(1143)i n f x x x ε<- (k )(k )(k )

或2max{||}(1144)i

x ε?<-(k )

为止。1ε和2ε为预先给定的小正数。

牛顿拉夫逊法潮流计算

摘要 本文,首先简单介绍了基于在MALAB中行潮流计算的原理、意义,然后用具体的实例,简单介绍了如何利用MALAB去进行电力系统中的潮流计算。 众所周知,电力系统潮流计算是研究电力系统稳态运行情况的一种计算,它根据给定的运行条件及系统接线情况确定整个电力系统各部分的运行状态:各线的电压、各元件中流过的功率、系统的功率损耗等等。在电力系统规划的设计和现有电力系统运行方式的研究中,都需要利用潮流计算来定量地分析比较供电方案或运行方式的合理性、可靠性和经济性。 此外,在进行电力系统静态及暂态稳定计算时,要利用潮流计算的结果作为其计算的基础;一些故障分析以及优化计算也需要有相应的潮流计算作配合;潮流计算往往成为上述计算程序的一个重要组成部分。以上这些,主要是在系统规划设计及运行方式安排中的应用,属于离线计算范畴。 牛顿-拉夫逊法在电力系统潮流计算的常用算法之一,它收敛性好,迭代次数少。本文介绍了电力系统潮流计算机辅助分析的基本知识及潮流计算牛顿-拉夫逊法,最后介绍了利用MTALAB程序运行的结果。 关键词:电力系统潮流计算,牛顿-拉夫逊法,MATLAB

ABSTRACT This article first introduces the flow calculation based on the principle of MALAB Bank of China, meaning, and then use specific examples, a brief introduction, how to use MALAB to the flow calculation in power systems. As we all know, is the study of power flow calculation of power system steady-state operation of a calculation, which according to the given operating conditions and system wiring the entire power system to determine the operational status of each part: the bus voltage flowing through the components power, system power loss and so on. In power system planning power system design and operation mode of the current study, are required to quantitatively calculated using the trend analysis and comparison of the program or run mode power supply reasonable, reliability and economy. In addition, during the power system static and transient stability calculation, the results of calculation to take advantage of the trend as its basis of calculation; number of fault analysis and optimization also requires a corresponding flow calculation for cooperation; power flow calculation program often become the an important part. These, mainly in the way of system design and operation arrangements in the application areas are off-line calculation. Newton - Raphson power flow calculation in power system is one commonly used method, it is good convergence of the iteration number of small, introduce the trend of computer-aided power system analysis of the basic knowledge and power flow Newton - Raphson method, introduced by the last matlab run results. Keywords:power system flow calculation, Newton – Raphson method, matlab

牛顿法求非线性方程的根

学科前沿讲座论文 班级:工程力学13-1班姓名:陆树飞

学号:02130827

牛顿法求非线性方程的根 一 实验目的 (1)用牛顿迭代法求解方程的根 (2)了解迭代法的原理,了解迭代速度跟什么有关 题目:用Newton 法计算下列方程 (1) 013=--x x , 初值分别为10=x ,7.00=x ,5.00=x ; (2) 32943892940x x x +-+= 其三个根分别为1,3,98-。当选择初值02x =时 给出结果并分析现象,当6510ε-=?,迭代停止。 二 数学原理 对于方程f(x)=0,如果f(x)是线性函数,则它的求根是很容易的。牛顿迭代法实质上是一种线性化方法,其基本思想是将非线性方程f(x)=0逐步归结为某种线性方程来求解。 设已知方程f(x)=0有近似根x k (假定k f'(x )0≠) ,将函数f(x)在点x k 进行泰勒展开,有 k k k f(x)f(x )+f'(x )(x-x )+≈??? 于是方程f(x)=0可近似的表示为 k k k f(x )+f'(x )(x-x )=0 这是个线性方程,记其根为x k+1,则x k+1的计算公式为 k+1k ()x =x -'() k k f x f x ,k=0,1,2,… 这就是牛顿迭代法。

三 程序设计 (1)对于310x x --=,按照上述数学原理,编制的程序如下 program newton implicit none real :: x(0:50),fx(0:50),f1x(0:50)!分别为自变量x ,函数f(x)和一阶导数f1(x) integer :: k write(*,*) "x(0)=" read(*,*) x(0) !输入变量:初始值x(0) open(10,file='1.txt') do k=1,50,1 fx(k)=x(k-1)**3-x(k-1)-1 f1x(k)=3*x(k-1)**2-1 x(k)=x(k-1)-fx(k)/f1x(k) !牛顿法 write(*,'(I3,1x,f11.6)') k,x(k) !输出变量:迭代次数k 及x 的值 write(10,'(I3,1x,f11.6)') k,x(k) if(abs(x(k)-x(k-1))<1e-6) exit !终止迭代条件 end do stop end (2)对于32943892940x x x +-+=,按照上述数学原理,编制的程序如下 program newton implicit none

基于MATLAB牛顿拉夫逊法进行潮流计算

>> %本程序的功能是用牛顿拉夫逊法进行潮流计算n=input('请输入节点数:n='); nl=input('请输入支路数:nl='); isb=input('请输入平衡母线节点号:isb='); pr=input('请输入误差精度:pr='); B1=input('请输入由各支路参数形成的矩阵:B1='); B2=input('请输入各节点参数形成的矩阵:B2='); Y=zeros(n); e=zeros(1,n);f=zeros(1,n);V=zeros(1,n); O=zeros(1,n);S1=zeros(nl); for i=1:nl if B1(i,6)==0 p=B1(i,1);q=B1(i,2); else p=B1(i,2);q=B1(i,1); end 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('导纳矩阵Y='); disp(Y); G=real(Y);B=imag(Y); for i=1:n e(i)=real(B2(i,3)); f(i)=imag(B2(i,3)); V(i)=B2(i,4); 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); ICT1=0;IT2=1;N0=2*n;N=N0+1;a=0; while IT2~=0 IT2=0;a=a+1; for i=1:n if i~=isb C(i)=0; D(i)=0; for j1=1:n C(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); end

牛顿法非线性方程求解

《MATLAB 程序设计实践》课程考核 ---第37-38页 题1 : 编程实现以下科学计算算法,并举一例应用之。(参考书籍《精 通MAT LAB科学计算》,王正林等著,电子工业出版社,2009 年) “牛顿法非线性方程求解” 弦截法本质是一种割线法,它从两端向中间逐渐逼近方程的根;牛顿法本质上是一种切线法,它从一端向一个方向逼近方程的根,其递推公式为: - =+n n x x 1) ()(' n n x f x f 初始值可以取)('a f 和)('b f 的较大者,这样可以加快收敛速度。 和牛顿法有关的还有简化牛顿法和牛顿下山法。 在MATLAB 中编程实现的牛顿法的函数为:NewtonRoot 。 功能:用牛顿法求函数在某个区间上的一个零点。 调用格式:root=NewtonRoot )(```eps b a f 其中,f 为函数名; a 为区间左端点; b 为区间右端点 eps 为根的精度; root 为求出的函数零点。 ,

牛顿法的matlab程序代码如下: function root=NewtonRoot(f,a,b,eps) %牛顿法求函数f在区间[a,b]上的一个零点%函数名:f %区间左端点:a

%区间右端点:b %根的精度:eps %求出的函数零点:root if(nargin==3) eps=1.0e-4; end f1=subs(sym(f),findsym(sym(f)),a); f2=subs(sym(f),findsym(sym(f)),b); if (f1==0) root=a; end if (f2==0) root=b; end if (f1*f2>0) disp('两端点函数值乘积大于0 !'); return; else tol=1; fun=diff(sym(f)); %求导数 fa=subs(sym(f),findsym(sym(f)),a); fb=subs(sym(f),findsym(sym(f)),b); dfa=subs(sym(fun),findsym(sym(fun)),a); dfb=subs(sym(fun),findsym(sym(fun)),b); if(dfa>dfb) %初始值取两端点导数较大者 root=a-fa/dfa; else root=b-fb/dfb; end while(tol>eps) r1=root; fx=subs(sym(f),findsym(sym(f)),r1); dfx=subs(sym(fun),findsym(sym(fun)),r1); %求该点的导数值 root=r1-fx/dfx; %迭代的核心公式 tol=abs(root-r1); end end 例:求方程3x^2-exp(x)=0的一根 解:在MATLAB命令窗口输入: >> r=NewtonRoot('3*x^2-exp(x)',3,4) 输出结果: X=3.7331

电力系统课程设计-牛顿拉夫逊法潮流计算

课程设计说明书 题目电力系统分析系(部) 专业(班级) 学号 指导教师 起止日期

电力系统分析课程设计任务书系(部):专业:指导教师:

目录 一、潮流计算基本原理 1.1潮流方程的基本模型 1.2潮流方程的讨论和节点类型的划分 1.3、潮流计算的意义 二、牛顿-拉夫逊法 2.1牛顿-拉夫逊法基本原理 2.2节点功率方程 2.3修正方程 2.4牛顿法潮流计算主要流程 三、收敛性分析 四、算例分析 总结 参考文献

电力系统分析潮流计算 一、潮流计算基本原理 1.1潮流方程的基本模型 电力系统是由发电机、变压器、输电线路及负荷等组成,其中发电机及负荷是非线性元件,但在进行潮流计算时,一般可以用接在相应节点上的一个电流注入量来代表。因此潮流计算所用的电力网络系由变压器、输电线路、电容器、电抗器等静止线性元件所构成,并用集中参数表示的串联或并联等值支路来模拟。结合电力系统的特点,对这样的线性网络进行分析,普通采用的是节点法,节点电压与节点电流之间的关系 V Y I = (1-1) 其展开式为 j n j ij i V Y I ∑==1 ),,3,2,1 (n i = (1-2) 在工程实际中,已经的节点注入量往往不是节点电流而是节点功率,为此必须应用联 系节点电流和节点功率的关系式 i i i i V jQ P I * -= ),,3,2,1(n i = (1-3) 将式(1-3)代入式(1-2)得到 j n j ij i i i V Y V jQ P ∑=* =-1 ),,3,2,1(n i = (1-4) 交流电力系统中的复数电压变量可以用两种极坐标来表示 i j i i e V V θ= (1-5) 或 i i i jf e V += (1-6) 而复数导纳为

matlab程序设计实践-牛顿法解非线性方程

中南大学MATLAB程序设计实践学长有爱奉献,下载填上信息即可上交,没有下载券的自行百度。所需m文件照本文档做即可,即新建(FILE)→脚本(NEW-Sscript)→复制本文档代码→运行(会跳出保存界面,文件名默认不要修改,保存)→结果。第一题需要把数据文本文档和m文件放在一起。全部测试无误,放心使用。本文档针对做牛顿法求非线性函数题目的同学,当然第一题都一样,所有人都可以用。←记得删掉这段话 班级: ? 学号: 姓名:

一、《MATLAB程序设计实践》Matlab基础 表示多晶体材料织构的三维取向分布函数(f=f(φ1,φ,φ2))是一个非常复杂的函数,难以精确的用解析函数表达,通常采用离散 空间函数值来表示取向分布函数,是三维取向分布函数的一个实例。 由于数据量非常大,不便于分析,需要借助图形来分析。请你编写一 个matlab程序画出如下的几种图形来分析其取向分布特征: (1)用Slice函数给出其整体分布特征; " ~ (2)用pcolor或contour函数分别给出(φ2=0, 5, 10, 15, 20, 25, 30, 35 … 90)切面上f分布情况(需要用到subplot函数);

(3) 用plot函数给出沿α取向线(φ1=0~90,φ=45,φ2=0)的f分布情况。 (

备注:数据格式说明 解: (1)( (2)将文件内的数据按照要求读取到矩阵f(phi1,phi,phi2)中,代码如 下: fid=fopen(''); for i=1:18 tline=fgetl(fid); end phi1=1;phi=1;phi2=1;line=0; f=zeros(19,19,19); [ while ~feof(fid) tline=fgetl(fid); data=str2num(tline); line=line+1;数据说明部分,与 作图无关此方向表示f随着 φ1从0,5,10,15, 20 …到90的变化而 变化 此方向表示f随着φ 从0,5,10,15, 20 … 到90的变化而变化 表示以下数据为φ2=0的数据,即f(φ1,φ,0)

二分法和牛顿法求解非线性方程(C语言)

(1)二分法求解非线性方程: #include #include #define f(x)((x*x-1)*x-1) void main() {float a,b,x,eps; int k=0; printf("intput eps\n");/*容许误差*/ scanf("%f",&eps); printf("a,b=\n"); for(;;) {scanf("%f,%f",&a,&b); if(f(a)*f(b)>=0)/*判断是否符合二分法使用的条件*/ printf("二分法不可使用,请重新输入:\n"); else break; } do {x=(a+b)/2; k++; if(f(a)*f(x)<0)/*如果f(a)*f(x)<0,则根在区间的左半部分*/ b=x; else if(f(a)*f(x)>0)/*否则根在区间的右半部分*/ a=x; else break; }while(fabs(b-a)>eps);/*判断是否达到精度要求,若没有达到,继续循环*/ x=(a+b)/2;/*取最后的小区间中点作为根的近似值*/ printf("\n The root is x=%f,k=%d\n",x,k); } 运行结果: intput eps 0.00001 a,b= 2,-5 The root is x=1.324721,k=20 Press any key to continue 总结:本题关键在于两个端点的取值和误差的判断,此程序较容易。二分法收敛速度较快,但缺点是只能求解单根。 (2)牛顿法求解非线性方程: #include #include float f(float x)/*定义函数f(x)*/ {return((-3*x+4)*x-5)*x+6;} float f1(float x)/*定义函数f(x)的导数*/

牛顿法潮流计算综述

潮流例题:根据给定的参数或工程具体要求(如图),收集和查阅资料;学习相关软件(软件自选:本设计选择Matlab进行设计)。 2.在给定的电力网络上画出等值电路图。 3.运用计算机进行潮流计算。 4.编写设计说明书。 一、设计原理 1.牛顿-拉夫逊原理 牛顿迭代法是取x0 之后,在这个基础上,找到比x0 更接近的方程的跟,一步一步迭代,从而找到更接近方程根的近似跟。牛顿迭代法是求方程根的重要方法之一,其最大优点是在方程f(x) = 0 的单根附近具有平方收敛,而且该法还可以用来求方程的重根、复根。电力系统潮流计算,一般来说,各个母线所供负荷的功率是已知的,各个节点电压是未知的(平衡节点外)可以根据网络结构形成节点导纳矩阵,然后由节点导纳矩阵列写功率方程,由于功率方程里功率是已知的,电压的幅值和相角是未知的,这样潮流计算的问题就转化为求解非线性方程组的问题了。为了便于用迭代法解方程组,需要将上述功率方程改写成功率平衡方程,并对功率平衡方程求偏导,得出对应的雅可比矩阵,给未知节点赋电压初值,一般为额定电压,将初值带入功率平衡方程,得到功率不平衡量,这样由功率不平衡量、雅可比矩阵、节点电压不

平衡量(未知的)构成了误差方程,解误差方程,得到节点电压不平衡量,节点电压加上节点电压不平衡量构成新的节点电压初值,将新的初值带入原来的功率平衡方程,并重新形成雅可比矩阵,然后计算新的电压不平衡量,这样不断迭代,不断修正,一般迭代三到五次就能收敛。 牛顿—拉夫逊迭代法的一般步骤: (1)形成各节点导纳矩阵Y。 (2)设个节点电压的初始值U和相角初始值e 还有迭代次数初值为0。 (3)计算各个节点的功率不平衡量。 (4)根据收敛条件判断是否满足,若不满足则向下进行。 (5)计算雅可比矩阵中的各元素。 (6)修正方程式个节点电压 (7)利用新值自第(3)步开始进入下一次迭代,直至达到精度退出循环。 (8)计算平衡节点输出功率和各线路功率 2.网络节点的优化 1)静态地按最少出线支路数编号 这种方法由称为静态优化法。在编号以前。首先统计电力网络个节点的出线支路数,然后,按出线支路数有少到多的节点顺序编号。当由n 个节点的出线支路相同时,则可以按任意次序对这n 个节点进行编号。这种编号方法的根据是导纳矩阵中,出线支路数最少的节点所对应的行中非零元素也2)动态地按增加出线支路数最少编号在上述的方法中,各节点的出线支路数是按原始网络统计出来的,在编号过程中认为固定不变的,事实上,在节点消去过程中,每消去一个节点以后,与该节点相连的各节点的出线支路数将发生变化(增加,减少或保持不变)。因此,如果每消去一个节点后,立即修正尚未编号节点的出线支路数,然后选其中支路数最少的一个节点进行编号,就可以预期得到更好的效果,动态按最少出线支路数编号方法的特点就是按出线最少原则编号时考虑了消去过程中各节点出线支路数目的变动情况。 3.MATLAB编程应用 Matlab 是“Matrix Laboratory”的缩写,主要包括:一般数值分析,矩阵运算、数字信号处理、建模、系统控制、优化和图形显示等应用程序。由于使用Matlab 编程运算与人进行科学计算的思路和表达方式完全一致,所以不像学习高级语言那样难于掌握,而且编程效率和计算效率极高,还可在计算机上直接输出结果和精美的图形拷贝,所以它的确为一高效的科研助手。 二、设计内容 1.设计流程图

电力系统稳态分析牛顿拉夫逊法

0引言 潮流是配电网络分析的基础,用于电网调度、运行分析、操作模拟和设计规划,同时也是电压优化和网络接线变化所要参考的内容。潮流计算通过数值仿真的方法把电力系统的详细运行情况呈现给工作人员,从而便于研究系统在给定条件下的稳态运行特点。随着市场经济的发展,经济利益是企业十分看重的,而线损却是现阶段阻碍企业提高效益的一大因素。及时、准确的潮流计算结果,可以给出配电网的潮流分布、理论线损及其在网络中的分布,从而为配电网的安全经济运行提供参考。从数学的角度来看,牛顿-拉夫逊法能有效进行非线性代数方程组的计算且具有二次收敛的特点,具有收敛快、精度高的特点,在输电网中得到广泛应用。随着现代计算机技术的发展,利用编程和相关软件,可以更好、更快地实现配电网功能,本文就是结合牛顿-拉夫逊法的基本原理,利用C++程序进行潮流计算,计算结果表明该方法具有良好的收敛性、可靠性及正确性。 1牛顿-拉夫逊法基本介绍 1.1潮流方程 对于N 个节点的电力网络(地作为参考节点不包括在内),如果网络结构和元件参数已知,则网络方程可表示为: =&& YV I (1-1) 式中,Y 为N*N 阶节点导纳矩阵;&V 为N*1维节点电压列向量;&I 为N*1维节点注入电流列向量。如果不计网络元件的非线性,也不考虑移相变压器,则Y 为对称矩阵。 电力系统计算中,给定的运行变量是节点注入功率,而不是节点注入电流,这两者之间有如下关系: ??=&&&EI S (1-2) 式中,&S 为节点的注入复功率,是N*1维列矢量;? &S 为&S 的共轭;

??i diag ??=???? &&E V 是由节点电压的共轭组成的N*N 阶对角线矩阵。 由(1-1)和(1-2),可得: ??=&&&S EYV 上式就是潮流方程的复数形式,是N 维的非线性复数代数方程组。将其展开,有: ?i i i ij j j i P jQ V Y V ∈-=∑&& j=1,2,….,N (1-3) 式中,j i ∈表示所有和i 相连的节点j ,包括j i =。 将节点电压用极坐标表示,即令i i i V V θ=∠&,代入式(1-3)中则有: ()i i i i ij ij j j j i P jQ V G jB V θθ∈-=∠-+∠∑ ()()cos sin i j ij ij ij ij j i V V G jB j θθ∈=+-∑ 故有: () ()cos sin sin cos i i j ij ij ij ij j i i i j ij ij ij ij j i P V V G B Q V V G B θθθθ∈∈?=+?? =-?? ∑∑ i=1,2,…,N (1-4) 式(1-4)是用极坐标表示的潮流方程。 而节点功率误差: (cos sin )θθ∈?=-+∑SP i i i j ij ij ij ij j i P P V V G B (1-5) (cos sin )θθ∈?=--∑SP i i i j ij ij ij ij j i Q Q V V G B (1-6) 式中:SP i P ,SP i Q 为节点i 给定的有功功率及无功功率。 1.2牛顿-拉夫逊法基本原理 1.2.1牛拉法的一般描述 牛拉法是把非线性方程式的求解过程变成反复对相应的线性方程式的求解过程,即非线性问题通过线性化逐步近似,这就是牛拉法的核心。下面以非线性方程式的求解过程来进行说明。 设电力网络的节点功率方程一般形式如下:

牛顿迭代法求解非线性方程组的代码

牛顿迭代法求解非线性方程组 非线性方程组如下: 221122121210801080 x x x x x x x ?-++=??+-+=?? 给定初值()00.0T x =,要求求解精度达到0.00001 1.首先建立函数()F X ,方程编程如下,将F.m 保存到工作路径中: function f=F(x) f(1)=x(1)^2-10*x(1)+x(2)^2+8; f(2)=x(1)*x(2)^2+x(1)-10*x(2)+8; f=[f(1),f(2)] ; 2.建立函数()DF X ,用于求方程的jacobi 矩阵,将DF.m 保存到工作路径中: function df=DF(x) df=[2*x(1)-10,2*x(2);x(2)^2+1,2*x(1)*x(2)-10]; %jacobi 矩阵是一阶偏导数以一定方式排列成的矩阵。 3.编程牛顿迭代法解非线性方程组,将newton.m 保存在工作路径中: clear,clc; x=[0,0]'; f=F(x);

df=DF(x); fprintf('%d %.7f %.7f\n',0,x(1),x(2)); N=4; for i=1:N y=df\f'; x=x-y; f=F(x); df=DF(x); fprintf('%d %.7f %.7f\n',i,x(1),x(2)); if norm(y)<0.0000001 break; else end end ezplot('x^2-10*x+y^2+8',[-6,6,-6,6]); hold on ezplot('x*y^2+x-10*y+8',[-6,6,-6,6]); 运行结果如下: 0 0.0000000 0.0000000 1 0.8000000 0.8800000 2 0.9917872 0.9917117

c语言编写的牛顿拉夫逊法解潮流程序

c语言编写的牛顿拉夫逊法解潮流程序 闲来无事,最近把牛拉法用c语言重写一遍,和matlab相比,c语言编写潮流程序最大的难点在于矩阵求逆,我使用的求逆方法是初等行变换法,程序段如下: #include #define N 3 void main() { int i,j,k; float t; float Jacob[N][N]={{1,2,2},{1,3,4},{2,3,4}};//欲进行求逆的矩阵 float inv_J[N][N];//逆矩阵存储于此 //初始化inv_J[N][N] for(i=0;i

} //输出逆矩阵 for(i=0;i #include #define N 4 //节点数 #define n_PQ 2 //PQ节点数 #define n_PV 1 //PV节点数 #define n_br 5 //串联支路数 void main() { void disp_matrix(float *disp_p,int disp_m,int disp_n); //矩阵显示函数 float Us[2*N]={1.0,0,1.0,0,1.05,0,1.05,0}; //电压初值 float Ps[N]={0,-0.5,0.2}; //有功初值 float Qs[N]={0,-0.3}; //无功初值float G[N][N],B[N][N]; //各几点电导电纳 struct //阻抗参数 { int nl; //左节点 int nr; //右节点 float R; //串联电阻值 float X; //串联电抗值 float Bl; //左节点并联电导 float Br; //右节点并联电纳 }ydata[n_br]={ {1,2,0,0.1880,-0.6815,0.6040}, {1,3,0.1302,0.2479,0.0129,0.0129}, {1,4,0.1736,0.3306,0.0172,0.0172}, {3,4,0.2603,0.4959,0.0259,0.0259}, {2,2,0,0.05,0,0} };

C++实现 牛顿迭代 解非线性方程组

C++实现牛顿迭代解非线性方程组(二元二次为例) 求解{0=x*x-2*x-y+0.5; 0=x*x+4*y*y-4; }的方程 #include #include #define N 2 // 非线性方程组中方程个数、未知量个数#define Epsilon 0.0001 // 差向量1范数的上限 #define Max 100 // 最大迭代次数 using namespace std; const int N2=2*N; int main() { void ff(float xx[N],float yy[N]); //计算向量函数的因变量向量yy[N] void ffjacobian(float xx[N],float yy[N][N]); //计算雅克比矩阵yy[N][N] void inv_jacobian(float yy[N][N],float inv[N][N]); //计算雅克比矩阵的逆矩阵inv void newdundiedai(float x0[N], float inv[N][N],float y0[N],float x1[N]); //由近似解向量x0 计算近似解向量x1 float x0[N]={2.0,0.25},y0[N],jacobian[N][N],invjacobian[N][N],x1[N],errornorm; int i,j,iter=0; //如果取消对x0的初始化,撤销下面两行的注释符,就可以由键盘x读入初始近似解向量for( i=0;i>x0[i]; cout<<"初始近似解向量:"<

牛顿——拉夫逊法进行潮流计算

%本程序的功能是用牛顿——拉夫逊法进行潮流计算 % B1矩阵:1、支路首端号;2、末端号;3、支路阻抗;4、支路对地电纳 % 5、支路的变比;6、支路首端处于K侧为1,1侧为0 % B2矩阵:1、该节点发电机功率;2、该节点负荷功率;3、节点电压初始值% 4、PV节点电压V的给定值;5、节点所接的无功补偿设备的容量% 6、节点分类标号:1为平衡节点(应为1号节点);2为PQ节点;% 3为PV节点; clear; n=10;%input('请输入节点数:n='); nl=10;%input('请输入支路数:nl='); isb=1;%input('请输入平衡母线节点号:isb='); pr=0.00001;%input('请输入误差精度:pr='); B1=[1 2 0.03512+0.08306i 0.13455i 1 0; 2 3 0.0068+0.18375i 0 1.02381 1; 1 4 0.05620+0.13289i 0.05382i 1 0; 4 5 0.00811+0.24549i 0 1.02381 1; 1 6 0.05620+0.13289i 0.05382i 1 0; 4 6 0.04215+0.09967i 0.04037i 1 0; 6 7 0.0068+0.18375i 0 1.02381 1; 6 8 0.02810+0.06645i 0.10764i 1 0; 8 10 0.00811+0.24549i 0 1 1; 8 9 0.03512+0.08306i 0.13455i 1 0] B2=[0 0 1.1 1.1 0 1; 0 0 1 0 0 2; 0 0.343+0.21256i 1 0 0 2; 0 0 1 0 0 2; 0 0.204+0.12638i 1 0 0 2; 0 0 1 0 0 2; 0 0.306+0.18962i 1 0 0 2; 0 0 1 0 0 2; 0.5 0 1.1 1.1 0 3; 0 0.343+0.21256i 1 0 0 2] ;%input('请输入各节点参数形成的矩阵:B2='); Y=zeros(n);e=zeros(1,n);f=zeros(1,n);V=zeros(1,n);sida=zeros(1,n);S1=zeros(nl); % % %--------------------------------------------------- for i=1:nl %支路数 if B1(i,6)==0 %左节点处于1侧 p=B1(i,1);q=B1(i,2); else %左节点处于K侧 p=B1(i,2);q=B1(i,1); end

直角坐标牛顿-拉夫逊法潮流计算matlab程序(仅供参考)

%该程序仅针对《电力系统分析下》何仰赞P61 的4节点算例。 %节点电压用直角坐标表示时的牛顿-拉夫逊法潮流计算(matlab程序,可能有小错误,仅供学习之用,如果想要通用的程序,可自己动手改或再到pudn、csdn等网站搜索更好的)%南昌大学电力061 李圣涛2009年5月编写,2012年5月上传 clc %清空command windows clear 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.588235 0 -0.453858; -0.588235 1.069005 0 -0.480769; 0 0 0 0 ; -0.453858 -0.480769 0 0.934627 ]; %节点导纳矩阵Y的虚部 B=[ -8.242876 2.352941 3.666667 1.891074 ; 2.352941 -4.727377 0 2.403846 ; 3.666667 0 -3.3333333 0 ; 1.891074 2.403846 0 -4.261590 ]; %Y矩阵 Y=complex(G,B); %给定PQ节点的Pnode、Qnode,PV节点的Pnode、Vnode。(Vnode为节点电压的幅值)Pnode=[ -0.3 -0.55 0.5 ];%PQ、PV节点的初值P Qnode=[ -0.18 -0.13 0 ];%PQ节点的初值Q Vnode=[ 0 0 1.10 ];%PV节点的初值V %迭代初值

直角坐标系下牛顿法潮流计算

1电力系统潮流计算 潮流计算是电力系统分析中的一种最基本的计算,它的任务是对给定的运行条件确定系统的运行状态,如母线上的电压(幅值及相角)、网络中的功率分布及功率损耗等。在电力系统规划设计和现有电力系统运行方式的研究中,都需要利用潮流计算来定量地分析比较供电方案或运行方式的合理性.可靠性和经济性。此外,电力系统潮流计算也是计算系统动态稳定和静态稳定的基础。 2节点导纳矩阵的形成 在图1(a )的简单电力系统中,若略去变压器的励磁功率和线路电容,负荷用阻抗表示,便可以得到一个有5个节点(包括零电位点)和7条支路的等值网络,如图1(b )所示。将接于节点1和4的电势源和阻抗的串联组合变换成等值的电流源和导纳的并联组合,变得到图1(c )的等值网络,其中1101I y E =和 4404I y E =分别称为节点1和4的注入电流源。 (a) 2 4? ?4 y (c) 图1 电力系统及其网络 以零电位点作为计算节点电压的参考点,根据基尔霍夫定律,可以写出4个独立节点的电流平衡方程如下:

10112121 12212022323242423323434244234434044()()()()0()()0()()y U y U U I y U U y U y U U y U U y U U y U U y U U y U U y U I ?+-=? -++-+-=? ? -+-=? ?-+-+=? (2-1) 上述方程组经过整理可以写成 1111221211222233244322333344422433444400Y U Y U I Y U Y U Y U Y U Y U Y U Y U Y U Y U Y U I ? + =? +++=? ? ++=?? ++=? (2-2) 式中, 111012 Y y y =+; 2220232412 Y y y y y =+++;332334Y y y =+;44402434Y y y y =++; 122112Y Y y ==-; 233223 Y Y y ==-; 244224 Y Y y ==-; 344334 Y Y y ==-。 一般的,对于有n 个独立节点的网络,可以列写n 个节点方程 11112211211222221122n n n n n n nn n n Y U Y U Y U I Y U Y U Y U I Y U Y U Y U I ? +++=? +++=? ? ? ?++ +=? (2-3) 也可以用矩阵写成 1111121212222212n n n n nn n n U I Y Y Y Y Y Y U I Y Y Y U I ???? ???????? ??????=?????? ?????? ?????????? (2-4) 或缩写为 YU I = (2-5) 矩阵Y 称为节点导纳矩阵。它的对角线元素ii Y 称为节点i 的自导纳,其值等于接于节点i 的所有支路导纳之和。非对角线元素 ij Y 称为节点i 、j 间的互导纳, 它等于直接接于节点i 、j 间的支路导纳的负值。若节点i 、j 间不存在直接支路,则有 ij Y =。由此可知节点导纳矩阵是一个稀疏的对称矩阵。

电力系统稳态分析报告-牛顿拉夫逊法

0 引言 潮流是配电网络分析的基础,用于电网调度、运行分析、操作模拟和设计规划,同时也是电压优化和网络接线变化所要参考的内容。潮流计算通过数值仿真的方法把电力系统的详细运行情况呈现给工作人员,从而便于研究系统在给定条件下的稳态运行特点。随着市场经济的发展,经济利益是企业十分看重的,而线损却是现阶段阻碍企业提高效益的一大因素。及时、准确的潮流计算结果,可以给出配电网的潮流分布、理论线损及其在网络中的分布,从而为配电网的安全经济运行提供参考。从数学的角度来看,牛顿-拉夫逊法能有效进行非线性代数方程组的计算且具有二次收敛的特点,具有收敛快、精度高的特点,在输电网中得到广泛应用。随着现代计算机技术的发展,利用编程和相关软件,可以更好、更快地实现配电网功能,本文就是结合牛顿-拉夫逊法的基本原理,利用C++程序进行潮流计算,计算结果表明该方法具有良好的收敛性、可靠性及正确性。 1 牛顿-拉夫逊法基本介绍 1.1 潮流方程 对于N个节点的电力网络(地作为参考节点不包括在内),如果网络结构和元件参数已知,则网络方程可表示为: YV I = (1-1) 式中,Y为N*N阶节点导纳矩阵;V为N*1维节点电压列向量;I为N*1维节点注入电流列向量。如果不计网络元件的非线性,也不考虑移相变压器,则Y 为对称矩阵。 电力系统计算中,给定的运行变量是节点注入功率,而不是节点注入电流,这两者之间有如下关系: ? ?= EI S (1-2) 式中,S为节点的注入复功率,是N*1维列矢量;?S为S的共轭;

??i diag ??=???? E V 是由节点电压的共轭组成的N*N 阶对角线矩阵。 由(1-1)和(1-2),可得: ??=S EYV 上式就是潮流方程的复数形式,是N 维的非线性复数代数方程组。将其展开,有: ?i i i ij j j i P jQ V Y V ∈ -=∑ j=1,2,….,N (1-3) 式中, j i ∈表示所有和i 相连的节点j ,包括j i =。 将节点电压用极坐标表示,即令i i i V V θ=∠,代入式(1-3)中则有: ()i i i i ij ij j j j i P jQ V G jB V θθ∈-=∠-+∠∑ ()()cos sin i j ij ij ij ij j i V V G jB j θθ∈=+-∑ 故有: () ()cos sin sin cos i i j ij ij ij ij j i i i j ij ij ij ij j i P V V G B Q V V G B θθθθ∈∈?=+?? =-?? ∑∑ i=1,2,…,N (1-4) 式(1-4)是用极坐标表示的潮流方程。 而节点功率误差: (cos sin )θθ∈?=-+∑SP i i i j ij ij ij ij j i P P V V G B (1-5) (cos sin )θθ∈?=--∑SP i i i j ij ij ij ij j i Q Q V V G B (1-6) 式中:SP i P ,SP i Q 为节点i 给定的有功功率及无功功率。 1.2 牛顿-拉夫逊法基本原理 1.2.1 牛拉法的一般描述 牛拉法是把非线性方程式的求解过程变成反复对相应的线性方程式的求解

相关文档
最新文档