牛顿-拉夫逊迭代法原理及其实现

牛顿-拉夫逊迭代法原理及其实现
牛顿-拉夫逊迭代法原理及其实现

牛顿迭代法(简写)就是一种近似求解实数域与复数域求解方程的数学方法。那么这个方法是具体是什么原理呢?

牛顿迭代如何迭代?

直接看数学公式描述如何迭代不直观,先来看动图就很容易理解牛顿迭代法为什么叫迭代法以及怎样迭代的:

牛顿迭代法是原理是根据一个初始点在该点做切线,切线与X轴相交得出下一个迭代点的坐标,再在处做切线,依次类推,直到求得满足精度的近似解为止。

由前面描述知道,牛顿迭代法是用来近似求解方程的,这里有两个点需要说明:?为啥要近似求解?很多方程可能无法直接求取其解

?迭代法非常适合计算机编程实现,实际上计算机编程对于牛顿迭代法广为应用来看看,数学上如何描述的?

其中为函数在处的一阶导数,也就是该点的切线。

来简单推一推上面公式的由来,直线函数方程为:

知道一个直线的一个坐标点以及斜率则该直线的方程就很容易可以得知:

那么该直线与轴的交点,就是y=0也即等式x 的解:

啥时候停止迭代呢?

1.计算出

2.给出一个初始假定根值x0,利用上面迭代式子进行迭代

3.计算绝对相对迭代近似误差

4.将绝对相对近似误差与预定的相对误差容限进行比较。如果,则迭

代步骤2,否则停止算法。另外,检查迭代次数是否已超过允许的最大迭代次数。如果是这样,则需要终止算法并退出。另一个终止条件是:

如何编码呢?

由于牛顿迭代法主要目的是解方程,当然也有可能用于某一个数学函数求极值,所以无法写出通用的代码,这里仅仅给出一个编代码的思路。相信掌握了思路,对于各种实际应用应该能很快的写出符合实际应用的代码。

假定一函数为

其波形图如下:

其一阶导数为:

那么对于该函数的根:

从图上大致可以知道有两个根,如果直接解方程,则很难求出其根,可以编个代码试试:

#include

#include

#include

/*假定待求根函数如下*/

#define F(x) (2*(x)*(x)-10*cos(x)+(x)-80)

/*其一阶导数为*/

#define DF(x) (4*(x)+10*sin(x)+1)

float newton_rooting(float x0,float precision,float min_deltax,int max_iterations) {

float xn,xn1,fn,fn1,dfn;

float deltax;

int step = 0;

xn = x0;

xn1 = x0;

do{

xn = xn1;

fn = F(xn);

dfn = DF(xn);

/*判0*/

if( fabs(dfn) <1e-6 )

{

if( fabs(fn)>precision )

return NAN;

else

return fn;

}

xn1 = xn - fn/dfn;

fn1 = F(xn1);

deltax = fabs(xn1-xn);

step++;

if( step>max_iterations )

{

if( fabs(fn1)

return xn;

else

return NAN;

}

}

while( fabs(fn1)>precision || deltax>min_deltax );

return xn1;

}

void main()

{

float root_guess = 23.0f;

float precision = 0.00001f;

float min_deltax = 0.001f;

float root;

int step = 7;

root = newton_rooting( root_guess,precision,min_deltax,step );

printf("根为: %f,函数值为:%f\n", root,F(root));

root_guess = -23;

root = newton_rooting( root_guess,precision,min_deltax,step );

printf("根为: %f,函数值为:%f\n", root,F(root));

}

结果:

根为: 6.457232, 函数值为:0.000004

根为: -6.894969,函数值为:-0.000008

函数值已经很接近于0了,如果还需要更为精确的值,则可以选择在此基础上进一步求解,比如利用二分法逼近。

需要注意些啥?

?求斜率可能为0,如为0时,则可能找到了函数的极值,比如:

?如果选择的初始猜测根的接近方程f(x)=0中函数f(x)的拐点,Newton-Raphson 方法可能开始偏离根。然后,它可能会又收敛回到根。例如:

5435866

?如果选择的初值不合适,可能会跳掉一些根,比如:

所以实际应用时,需要知道自己待求解模型的大致情况,在合理的加以调整。

有哪些应用?

?比如知道某系统的传递函数,求解传函的参数,可以将上述方法推而广之,求解多维变量方程组,求导就变成求偏导了

?又比如设计一电路测量某物质的阻抗

总结一下

牛顿迭代法在解决实际问题时,利用迭代求方程近似根的数学原理,在工程中有着很好的实用价值。比如求一个趋势的极值,传递函数参数辨识等都有广泛的实际应用。

牛顿迭代法文献综述

“牛顿迭代法”最新进展文献综述牛顿法是一种重要的迭代法,它是逐步线性化的方法的典型代表。牛顿迭代法又称为牛顿-拉夫逊方法,它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。多数方程不存在求根公式,因此求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要。方法使用函数f(x)的泰勒级数的前面几项来寻找方程f(x) = 0的根。牛顿迭代法是求方程根的重要方法之一,其最大优点是在方程f(x) = 0的单根附近具有平方收敛,而且该法还可以用来求方程的重根、复根。另外该方法广泛用于计算机编程中。 介绍一下牛顿迭代法研究的前沿进展,1992年南京邮电学院基础课部的夏又生写的一篇题名一类代数方程组反问题的牛顿迭代法,对一类代数方程组反问题提出了一个可行的迭代解法。从算法上看,它是一种解正问题—迭代—解正问题迭代改善的求解过程。湖南师范大学的吴专保;徐大发表的题名堆浸工艺中浸润面的非线性问题牛顿迭代方法,为了研究堆浸工艺的机理,用牛顿迭代公式寻求浸润面的非线性方程的数值解,经过14次迭代的误差达到了,说明此算法收敛有效。浙江大学电机系的林友仰发表的牛顿迭代法在非线性电磁场解算中的限制对非线性电磁场解算中的限制做了分析,求解非线性方程组时迭代法是不可避免的。牛顿—拉斐森迭代法由于它的收敛速度快常被优先考虑。应用这个方法的主要问题是求雅可比矩阵。因为雅可比矩阵元素的计算非常费时。然而,本文要说明的是当利用以三角形为单元的有限元法求解非线性方程组时,应用牛顿法其雅可比矩阵容易求得,并且它保持了原系数的对称性和稀疏性,因而节省了时间。与此相反,若在差分法中应用牛顿迭代,并且按习惯用矩形网格进行剖分,则雅可比阵的计算很费时,而且不再保持原有对称性,这就使得存贮量和计算时间大为增加。南株洲工学院信息与计算科学系的吕勇;刘兴国发表的题名为牛顿迭代法加速收敛的一种修正格式,主要内容牛顿迭代法是求解非线性方程的一种重要的数值计算方法,在通常情况下,它具有至少平方收敛。本文利用文献[4]所建立的迭代格式xn+1=xn-αf(xfn)(x+n)f′(xn),对迭代格式中的参数α的讨论,实现了牛顿迭代法加速收敛的一种修正格式。

牛顿拉夫逊法潮流计算

摘要 本文,首先简单介绍了基于在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

基于极坐标的牛顿拉夫逊潮流计算

前言 电力系统潮流计算是研究电力系统稳态运行情况的一种计算,它根据给定的运行件及系统接线情况确定整个电力系统各部分的运行状态。在电力系统规划设计和现有电力系统运行方式的研究中,都需要利用潮流计算来定量分析、比较供电方案或运行方式的合理性、可靠性和经济性。本次课程设计任务是闭式网络的潮流计算,用到的方法为牛顿拉夫逊极坐标法潮流计算。 牛顿法是数学中解决非线性方程式的典型方法,有较好的收敛性。解决电力系统潮流计算问题是以导纳距阵为基础的,因此,只要在迭代过程中尽可能保持方程式系数距阵的稀疏性,就可以大大提高牛顿法潮流程序的放率。自从20 世纪60 年代中期利用了最佳顺序消去法以后,牛顿法在收敛性、内存要求、速度方面都超过了阻抗法,成为直到目前仍在广泛采用的优秀方法。

目录 1任务书 (2) 2.模型简介及等值电路 (3) 3.设计原理 (4) 4.修正方程的建立 (7) 5.程序流程图及MATLAB程序编写 (9) 6.结果分析 (15) 7.设计总结 (25) 8.参考文献 (26)

《电力系统分析》 课程设计任务书 题目极坐标表示的牛顿拉夫逊法潮流计算程序设计学生姓名学号专业班级

设计内容与要求1. 设计要求 掌握MATLAB语言编程方法;理解和掌握运用计算机进行潮流计算的基本算法原理;针对某一具体电网,进行潮流计算程序设计。 其目的在于加深学生对电力系统稳态分析中课程中基本概念和计算方法的理解,培养学生运用所学知识分析和解决问题的能力。 2. 内容 1)学习并掌握MATLAB语言。 2)掌握变压器非标准变比概念及非标准变比变压器的等值电路。掌握节点导纳矩阵的概念及导纳矩阵的形成和修改方法。 3)掌握电力系统功率方程、变量和节点分类。 4)掌握利用极坐标表示的牛-拉法进行潮流计算的方法和步骤。 5)选择一个某一具体电网,编制程序流程框图。 6)利用MATLAB语言编写该模型的潮流计算程序,并上机调试程序,对计算结果进行分析。 7)整理课程设计论文。 起止时间2013 年7 月 4 日至2013 年7月10日指导教师签名年月日 系(教研室)主任签 名 年月日学生签名年月日 2 模型简介及等值电路 2.1课程设计模型:模型3

牛顿迭代法

牛顿迭代法 李保洋 数学科学学院信息与计算科学学号:060424067 指导老师:苏孟龙 摘要:牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法,即牛顿迭代法.迭代法是一种不断用变量的旧值递推新值的过程.跟迭代法相对应的是直接法或者称为一次解法,即一次性解决问题.迭代法又分为精确迭代和近似迭代.“牛顿迭代法”属于近似迭代法,本文主要讨论的是牛顿迭代法,方法本身的发现和演变和修正过程,避免二阶导数计算的Newton迭代法的一个改进,并与中国古代的算法,即盈不足术,与牛顿迭代算法的比较. 关键词:Newton迭代算法;近似求解;收敛阶;数值试验;中国古代数学; 九章算术;Duffing方程;非线性方程;收敛速度;渐进性 0 引言: 迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法或者称为一次解法,即一次性解决问题.迭代法又分为精确迭代和近似迭代.“二分法”和“牛顿迭代法”属于近似迭代法. 迭代算法是用计算机解决问题的一种基本方法.它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值.具体使用迭代法求根时应注意以下两种可能发生的情况: (1)如果方程无解,算法求出的近似根序列就不会收敛,迭代过程会变成死循环,因此在使用迭代算法前应先考察方程是否有解,并在程序中对迭代的次数给予限制. (2)方程虽然有解,但迭代公式选择不当,或迭代的初始近似根选择不合理,也会导致迭代失败. 所以利用迭代算法解决问题,需要做好以下三个方面的工作: 1、确定迭代变量.在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量. 2、建立迭代关系式.所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系).迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成. 3、对迭代过程进行控制,在什么时候结束迭代过程?这是编写迭代程序必须考虑的问题.不能让迭代过程无休止地重复执行下去.迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是个确定的值,可以计算出来;另一种是所需的迭代次数无法确定.对于前一种情况,可以构建一个固定次数的循环来实现对迭代过程的控制;对于后一种情况,需要进一步分析出用来结束迭代过程的条件. 1牛顿迭代法:

基于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

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

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

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

目录 一、潮流计算基本原理 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) 而复数导纳为

非线性方程组的牛顿迭代法的应用

CENTRAL SOUTH UNIVERSITY 数值分析实验报告

非线性方程组的牛顿迭代法的应用 一、问题背景 非线性是实际问题中经常出现的,并且在科学与工程计算中的地位越来越重要,很多我们熟悉的线性模型都是在一定条件下由非线性问题简化的,为得到更符合实际的解答,往往需要直接研究非线性科学,它是21世纪科学技术发展的重要支柱,非线性问题的数学模型有无限维的如微分方程,也有有限维的。道遥咏计算机进行科学计算都要转化为非线性的单个方程或方程组的求解。从线性到非线性是一个质的变化,方程的性质有本质不同,求解方法也有很大差别。本文主要介绍的是非线性方程组的牛顿迭代法的数值解法。 二、数学模型 对于方程()0=x f ,如果()x f 湿陷性函数,则它的求根是容易的。牛顿法实质上是一种线性化方法,其基本思想是将线性方程()0=x f 逐步归结为某种线性方程来求解。 设已知方程()0=x f 有近似根k x (假定()0'≠k x f ),将函数()x f 在点k x 展开,有 ()()()()k k k x x x f x f x f -+≈', 于是方程()0=x f 可近似地表示为 ()()()0'=-+k k k x x x f x f 这是个线性方程,记其根为1+k x ,则1+k x 的计算公式 ()() k k k k x f x f x x ' 1- =+, ,1,0=k 这就是牛顿法。 三、算法及流程 对于非线性方程 ()()()???? ????????=n n n n x L x x f M x L x x f x L x x f f ,,,,,,,,,2 1212211 在()k 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牛拉法的一般描述 牛拉法是把非线性方程式的求解过程变成反复对相应的线性方程式的求解过程,即非线性问题通过线性化逐步近似,这就是牛拉法的核心。下面以非线性方程式的求解过程来进行说明。 设电力网络的节点功率方程一般形式如下:

牛顿迭代法及其应用教学提纲

编号 毕业设计(论文)题目 Newton Raphson 算法及其应用 二级学院数学与统计学院 专业信息与计算科学 班级108010101

学生姓名侯杰学号10801010106 指导教师职称 时间 目录 摘要 (3) Abstract (3) 一、绪论 (4) 1.1 选题的背景和意义 (4) 1.2 牛顿迭代法的优点及缺点 (4) 二、Newton Raphson 算法的基本原理 (5) 2.1 Newton Raphsn算法 (5) 2.2 一种修正的Newton Raphsn算法 (7) 2.3 另外一种Newton Raphsn算法的修正 (11) 三、Newton Raphson 算法在计算方程中的应用 (18) 四、利用牛顿迭代法计算附息国债的实时收益率 (21) 4.1附息国债实时收益率的理论计算公式 (22) 4.2附息国债实时收益率的实际计算方法 (22)

4.3利用牛顿迭代法计算 (23) 五、结论 (26) 致谢 (27) 参考文献 (28) 摘要 牛顿在17世纪提出的一种近似求解方程的方法,即牛顿拉夫森迭代法.迭代法是一种不断的用变量的旧值递推新值的过程.跟迭代法相对应的是直接法或被称为一次解法,即一次性解决的问题.迭代法又分为精确迭代以及近似迭代.“牛顿迭代法”就属于近似迭代法,本文主要讨论的就是牛顿迭代法,方法本身的发现到演变到修正的过程,避免二阶导数计算的Newton迭代法的一个改进,以及用牛顿迭代法解方程,利用牛顿迭代法计算国债的实时收益率。 关键词:Newton Raphson迭代算法;近似解;收益率; Abstract In the 17th century,Newton raised by an approximate method of solving equations,that is Newton Iteration,a process of recursion new value constantly with the old value of variable. Correspond with the iterative method is a direct method or as a solution,that is a one-time problem solving. Iteration is divided into exact iterative and approximate iterative. "Newton Iterative Method" are approximate iterative method. This article mainly focuses on the Newton Iteration. The main contents of this article include the discovery,evolution and amendment process of this methods; an improve of avoiding calculating Newton Iteration with second-order derivative; Newton Raphson iterative method of solving equations and Calculating the real-time yield of government bonds. Keywords: Newton Iterative Algorithm; approximate solution; Yield;

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} };

非线性方程组的牛顿迭代法的应用

非线性方程组的牛顿迭代法的应用

CENTRAL SOUTH UNIVERSITY 数值分析实验报告

非线性方程组的牛顿迭代法的应用 一、问题背景 非线性是实际问题中经常出现的,并且在科学与工程计算中的地位越来越重要,很多我们熟悉的线性模型都是在一定条件下由非线性问题简化的,为得到更符合实际的解答,往往需要直接研究非线性科学,它是21世纪科学技术发展的重要支柱,非线性问题的数学模型有无限维的如微分方程,也有有限维的。道遥咏计算机进行科学计算都要转化为非线性的单个方程或方程组的求解。从线性到非线性是一个质的变化,方程的性质有本质不同,求解方法也有很大差别。本文主要介绍的是非线性方程组的牛顿迭代法的数值解法。 二、数学模型 对于方程()0=x f ,如果()x f 湿陷性函数,则它的求根是容易的。牛顿法实质上是一种线性化方法,其基本思想是将线性方程()0=x f 逐步归结为某种线性方程来求解。 设已知方程()0=x f 有近似根k x (假定()0'≠k x f ),将函数()x f 在点k x 展开,有 ()()()()k k k x x x f x f x f -+≈', 于是方程()0=x f 可近似地表示为 ()()()0'=-+k k k x x x f x f 这是个线性方程,记其根为1+k x ,则1+k x 的计算公式 () () k k k k x f x f x x ' 1- =+, ,1,0=k 这就是牛顿法。 三、算法及流程 对于非线性方程 ()()()???? ????????=n n n n x L x x f M x L x x f x L x x f f ,,,,,,,,,2 12 12211 在()k x 处按照多元函数的泰勒展开,并取线性项得到

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

%本程序的功能是用牛顿——拉夫逊法进行潮流计算 % 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

线性方程组的迭代法应用及牛顿迭代法的改进

线性方程组的迭代法应用及牛顿迭代法的改进 摘要: 迭代解法就是通过逐次迭代逼近来得到近似解的方法。由于从不同 的问题而导出的线性代数方程组的系数矩阵不同,因此对于大型稀疏矩阵所对应线性代数方程组,用迭代法求解。本文论述了Jacobi 法,Gauss-Seidel 法,逐次超松弛法这三种迭代法,并在此基础上对牛顿型的方法进行了改进,从而使算法更为精确方便。 关键词:线性方程组,牛顿迭代法,Jacobi 法,Gauss-Seidel 法,逐次超松弛 法 1.线性方程组迭代法 1.1线性方程组的迭代解法的基本思想 迭代法求解基本思想:从某一初始向量X (0)=[x 1(0) ,x 2(0) ,……………x n (0) ]出发,按某种迭代规则,不断地对前一次近似值进行修改,形成近似解的向量{X (k)}。当近似解X (k) =[x 1(k) ,x 2(k) ,……………x n (k) ]收敛于方程组的精确解向量X* =[x 1*,x 2*,……………x n *]时,满足给定精度要求的近似解向量X (k)可作为X*的数值解。 1.2 线性方程组的迭代法主要研究的三个问题 (1) 如何构造迭代公式 (2) 向量数列{X (k)}的收敛条件 (3) 迭代的结束和误差估计 解线性方程组的迭代解法主要有简单迭代法、 Gauss-Seidel 法和SOR 法。简单迭代法又称同时代换法或Jacobi 法,是最简单的解线性方程组的迭代解法也是其他解法的基础。 1.3Jacobi 迭代法 设方程组点系数矩阵n n j A ai R ???=∈??满足条件0ii a ≠,i=0,1,2, …n 。把A 分解为 A=D+L+U

直角坐标牛顿-拉夫逊法潮流计算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 %迭代初值

利用牛顿迭代法求解非线性代数方程组

利用牛顿迭代法求解非线性代数方程组 一、 问题描述 在实际应用的很多领域中,都涉及到非线性方程组的求解问题。由于方程的非线性,给我们解题带来一定困难。牛顿迭代法是求解非线性方程组的有效方法。下面具体对牛顿迭代法的算法进行讨论,并通过实例理解牛顿迭代法。 二、 算法基本思想 牛顿迭代法求解非线性代数方程组的主要思想是将非线性函数线性化。下面我们具体讨论线性化过程: 令: ()()()()?? ?? ????????=????? ???????=????????????=0000,,2121 n n x x x x x f x f x f x F (3-1) 则非线性方程组(3-2) ()()()0 ,,,0 ,,,0,,,21212211===n n n n x x x f x x x f x x x f (3-2) 可写为向量形式 ()0=x F (3-3) ? ()0=x F 成为向量函数。

设()()() ()k n k k x x x ,,,2 1 是方程组(3-2)的一组近似解,把它的左端在()()() ()k n k k x x x ,,,2 1 处用多元函数的泰勒展式展开,然后取线性部分,便得方程组(3-2)得近似方程组 ()()() ( ) ()()() () ()()()() ( )()()() () ()()() () ( ) ()()() () ()0 ,,,,,,0 ,,,,,,0 ,,,,,,1 21211 2122121 211211=???+=???+=???+∑∑∑===k j n j k n k k n k n k k n k j n j k n k k k n k k k j n j k n k k k n k k x x x x x f x x x f x x x x x f x x x f x x x x x f x x x f (3-4) 这是关于()()()n i x x x k i i k i ,,2,1 =-=?的线性方程组,如果它的系数矩阵 ????????? ???????????????????????????????n n n n n n x f x f x f x f x f x f x f x f x f 2 1 2221 2121 11 (3-5) 非奇异,则可解得 () ()()???? ?? ? ???????---?????????? ??????????????????????????????=?????????????????-n n n n n n n k n k k f f f x f x f x f x f x f x f x f x f x f x x x 21 1 2 1 2221 2121 11 21 (3-6) 矩阵(3-5)称为向量函数()x F 的Jacobi 矩阵,记作()x F ' 。又记

相关文档
最新文档