牛顿迭代法的matlab代码

牛顿迭代法的matlab代码,第1张

程序

function [k,x,wuca,yx] = newton(x0,tol)

k=1

yx1=fun(x0)

yx2=fun1(x0)

x1=x0-yx1/yx2

while abs(x1-x0)>tol

x0=x1

yx1=fun(x0)

yx2=fun1(x0)

k=k+1

x1=x1-yx1/yx2

end

k

x=x1

wuca=abs(x1-x0)/2

yx=fun(x)

end

分程序1:

function y1=fun(x)

y1=sqrt(x^2+1)-tan(x)

end

分程序2:

function    y2=fun1(x)

%函数fun(x)的导数

y2=x/(sqrt(x^2+1))-1/((cos(x))^2)

end

结果:

[k,x,wuca,yx] = newton(-1.2,10^-5)

k =8

x =0.9415

wuca =4.5712e-08

yx =-3.1530e-14

[k,x,wuca,yx] = newton(2.0,10^-5)

k =243

x =NaN

wuca =NaN

yx =NaN

牛顿迭代法matlab实现如下:

function [x_star,index,it] = Newton(fun,x,ep,it_max)

%求解非线性方程的牛顿法

%第一个分量是函数值,第二个分量是导数值

% x为初始点

% ep为精度,当 | x(k)-x(k-1) |<ep时,终止计算,缺省值为1e-5

% it_max为最大迭代次数,缺省值为100

% x_star为当迭代成功时,输出方程的根

% 当迭代失败,输出最后的迭代值

% index为指标变量,当index=1时,表明迭代成功

% 当index=0时,表明迭代失败(迭代次数>=it_max)

% it为迭代次数

if nargin<4 it_max=100end

if nargin<3 ep=1e-5end

index=0k=1

while k<it_max

x1=xf=feval(fun,x)

x=x-f(1)/f(2)

if abs(x-x1)<ep

index=1break

end

k=k+1

end

x_star=xit=k

程序示例如下:

fun=inline('[x^3-x-1,3*x^2-1]')

[x_star,index,it] = Newton(fun,1.5)

在公式(18)中,和分别表示状态变量与其修正量组成的列向量;为方阵,一般叫作雅可比矩阵,第i行j列元素为 ,它的大小为第i个函数对第j个变量求偏导;k则表示阵元素都在处取;同时,F(X)是由n个函数组成的n维列向量;在极坐标下,节点电压可如下表示:

在这里插入图片描述

(19)

若和为已知大小的功率,与从节点电压求得的有功和无功功率之差,为功率的不平衡量,则节点功率不平衡量可用如下公式计算:

在这里插入图片描述

(20)

节点功率可用各节点电压模值与相位表示,如下公式所示:

在这里插入图片描述

(21)

式(21)中,为节点i和j的相位差。

由以公式(18)-(21)推得牛顿法下,其潮流计算方程可写为:

在这里插入图片描述

(22)

公式(22)中,雅可比矩阵的各元素为

在这里插入图片描述

(23)

(24)

(25)

(26)

在这里插入图片描述

(27)

(28)

(29)

(30)

其中,节点导纳矩阵的元素由Gij 、Bij表示。

随着国内外配电系统自动化水平不断提高,电力行业人员也开始更加深入地研究配电网系统。配电网潮流计算作为DMS(配电管理系统)的重要基础,受到广大行业界人士的关注。因此,配电网潮流计算,已然成为配电网分析的重要内容。配电网与输电网相比,两者有明显不同,前者一般采用网格结构,线路参数R/X的值较大,三相负荷不对称程度明显。这些特点使得在输电网中计算有效,如牛顿法,不再适用于配电网。为此,有学者提出了适用于配电网的潮流算法,主要包括基于回路方程的潮流算法、前推回推法和改进的牛顿-拉夫逊法[17](简称改进的牛拉法)。其中,基于回路方程的方法具有较强的网格处理能力和良好的收敛性,但该方法的节点数和分支数处理非常复杂。前推回推法是针对配电网的树状特性,可以避免潮流计算中的病态条件,同时速度更快。然而,由于其公式和算法与牛顿潮流算法不同,其在其它方面(如潮流优化)的应用将受到限制。

改进牛顿法通过对传统法进行一定的近似,将J阵写成UDUT 的形式。U仅由网络拓扑决定,是一个上三角矩阵;D是一个对角矩阵。在牛拉法中,需要对J阵因子分解与前代回代,改进法则只有前推回代的计算过程。它很好地改善了传统法以及前推回推法。经过算例计算结果证明,改进法可以避免J阵病态,且拥有前推回代法的收敛速度、精度,又由于它属于牛顿型算法,所以该算法已经得到了广泛的运用[18]。

下面附带电力系统分析牛顿法算例及matlab程序:

网络结构如下:系统结构图

系统参数如下:

在上图所示的简单电力系统中,系统中节点1、2为PQ节点,节点3为PV节点,节点4为平衡节点,已给定P1s+jQ1s=-0.30-j0.18 P2s+jQ2s=-0.55-j0.13 P3s=0.5 V3s=1.10 V4s=1.05∠0°

容许误差ε=10-5

节点导纳矩阵:

导纳矩阵

各节点电压:

节点 e f v ζ

1.0.984637 -0.008596 0.984675 -0.500172

2.0.958690 -0.108387 0.964798 -6.450306

3.1.092415 0.128955 1.100000 6.732347

4.1.050000 0.000000 1.050000 0.000000

各节点功率:

节点 P Q

1-0.300000 -0.180000

2–0.550000 -0.130000

3 0.500000 -0.551305

4 0.367883 0.264698

matlab程序如下:

// 牛顿法潮流计算matlab程序

clc

Y=[1.042093-8.242876i -0.588235+2.352941i 3.666667i -0.453858+1.891074i

-0.588235+2.352941i 1.069005-4.727377i 0-0.480769+2.403846i

3.666667i 0 -3.333333i0

-0.453858+1.891074i -0.480769+2.403846i 00.934627-4.261590i]

%导纳矩阵

e=[1 1 1.1 1.05]%初始电压

f=zeros(4,1)

V=zeros(4,1)%节点电压

Ws=[-0.3 -0.18 -0.55 -0.13 0.5 1.1]%初始功率

W=zeros(6,1)

n=length(Y)%节点数

J=zeros(2*(n-1))%雅可比矩阵

delta_v=zeros(1,6)

delta_w=Ws

G=real(Y)

B=imag(Y)

S=zeros(4,2)

c=0%循环次数

m=input('请输入PQ节点数:')

while max(abs(delta_w))>10^-5

for i=1:(n-1)%以下为求取雅可比矩阵

for j=1:(n-1)

if (i~=j)

J(2*i-1,2*j-1)=-(G(i,j)*e(i)+B(i,j)*f(i))

J(2*i,2*j)=-J(2*i-1,2*j-1)

J(2*i-1,2*j)=B(i,j)*e(i)-G(i,j)*f(i)

J(2*i,2*j-1)=J(2*i-1,2*j)

end

end

end

for j=1:(n-2)

J(6,2*j-1)=0

J(6,2*j)=0

end%以上为非对角线元素

s1=0

s2=0

for i=1:(n-1)

for j=1:n

s1=s1+(G(i,j).*e(j)-B(i,j).*f(j))

s2=s2+(G(i,j).*f(j)+B(i,j).*e(j))

end

J(2*i-1,2*i-1)=-s1-G(i,i) *e(i)-B(i,i)*f(i)

J(2*i-1,2*i)=-s2+B(i,i) *e(i)-G(i,i)*f(i)

s1=0

s2=0

end

for i=1:m

for j=1:n

s1=s1+G(i,j).*f(j)+B(i,j).*e(j)

s2=s2+(G(i,j).*e(j)-B(i,j).*f(j))

end

J(2*i,2*i-1)=s1+B(i,i) *e(i)-G(i,i)*f(i)

J(2*i,2*i)=-s2+G(i,i) *e(i)+B(i,i)*f(i)

s1=0

s2=0

end

J(6,5)=-2*e(3)

J(6,6)=-2*f(3)%对角线元素求解

for i=1:m

for j=1:n

s1=s1+e(i)*(G(i,j).*e(j)-B(i,j).*f(j))+f(i)*(G(i,j).*f(j)+B(i,j).*e(j))

s2=s2+f(i)*(G(i,j).*e(j)-B(i,j).*f(j))-e(i)*(G(i,j).*f(j)+B(i,j).*e(j))

end

delta_w(2*i-1)=Ws(2*i-1)-s1

delta_w(2*i)=Ws(2*i)-s2

W(2*i-1)=s1

W(2*i)=s2

s1=0

s2=0

end

for j=1:n

s1=s1+e(3)*(G(3,j).*e(j)-B(3,j).*f(j))+f(3)*(G(3,j).*f(j)+B(3,j).*e(j))

end

delta_w(5)=Ws(5)-s1

delta_w(6)=(Ws(6)^2-(e(3)^2+f(3)^2))

W(5)=s1

W(6)=sqrt(e(3)^2+f(3)^2)%以上求功率差值

delta_v=-inv(J)*delta_w

for i=1:(n-1)

e(i)=e(i)+delta_v(2*i-1)

f(i)=f(i)+delta_v(2*i)

end%求电压差值

c=c+1

end

for x=1:4

V(x)=e(x)+f(x)*1i

end%节点电压

s1=0

for x=3:4

for j=1:4

s1=s1+conj(Y(x,j))*conj(V(j))

end

S(x,1)=real(V(x)*s1)

S(x,2)=imag(V(x)*s1)

s1=0

end%PV与平衡节点功率

for x=1:2

S(x,1)=W(2*x-1)

S(x,2)=W(2*x)

end%节点功率

c

J

V

S

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

运行结果如下:

潮流计算结果

文章知识点与官方知识档案匹配

算法技能树首页概览

34356 人正在系统学习中

电磁MATLAB

微信公众号

程序从vx公众号获取,助力科研!

打开CSDN APP,看更多技术内容

matlab潮流程序,潮流计算的MATLAB源程序_weixin_39760433的博客-CSDN...

1、简单潮流计算的牛顿拉夫逊程序,相关的原始数据数据数据输入格式如下:%B1是支路参数矩阵,第一列和第二列是节点编号。节点编号由小到大编写%对于含有变压器的支路,第一列为低压侧节点编号,第二列为高压侧节点%编号,将变压器的串联阻抗...

继续访问

...编程实现_某只旺仔的博客_电力系统潮流计算程序matlab

潮流计算是电力系统中最基本,应用最广泛的一种计算,是电力系统稳定计算和故障分析的基础。这个代码通过matlab实现了用极坐标表示的牛顿法和P-Q分解法进行潮流计算,使用IEEE14节点系统进行测试,计算结果和应用matpower的潮流计算完全一致。代码...

继续访问

<em>matlab</em>导数计算

<p>matlab导数计算,通过编程实战掌握具体应用。包括matlab导数计算前、matlab导数计算中、matlab导数计算后。</p>

继续访问

(完整版)基于MATLAB牛顿拉夫逊法进行潮流计算.doc

>%本程序的功能是用牛顿拉夫逊法进行潮流计算 n=input' 请输入节点数 :n=nl=input' 请输入支路数 :nl=isb=input' 请输入平衡母线节点号 :isb=pr=input' 请输入误差精度 :pr=B1=input' 请输入由各支路参数形成的矩阵 :B1=B2=input' 请输入各节点参数形成的矩阵 :B2=Y=zeros(ne=zeros

牛顿拉夫逊潮流计算matlab程序

基于牛顿拉夫逊进行潮流计算,求得各节点电压,各支路功率流动,内附程序输入说明以及案例。

珍藏多年的matlab潮流计算程序源代码集合,包含多个潮流计算程序

【达摩老生出品,必属精品,亲测校正,质量保证】 资源名:珍藏多年的matlab潮流计算程序源代码集合,包含多个潮流计算程序 资源类型:matlab项目全套源码 源码说明: 全部项目源码都是经过测试校正后百分百成功运行的,如果您下载后不能运行可联系我进行指导或者更换。 适合人群:新手及有一定经验的开发人员

牛顿-拉夫逊法潮流计算——采用极坐标形式

采用极坐标形式的Newton-Raphson法进行潮流计算,并提供IEEE 14、57节点及New England 39节点的计算数据。使用方法:运行/修改PowerFlow_Newton_Polar.m文件。

电力系统牛拉法潮流计算MATLAB程序

实现潮流计算的MATLAB代码,使用牛顿拉夫逊法,可更改结点数,支路数和导纳阵,通用性强

【课设/毕业设计】电力系统潮流计算(Matlab代码实现)

潮流计算是电力系统分析中的一种最基本的计算,对给定系统进行潮流计算可以得到各母线上的电压、网络中的功率分布及功率损耗等。本文介绍了潮流计算在电力系统分析中的作用及潮流计算的发展状况。通过对潮流计算所用的数学模型进行分析,建立潮流计算的基本方程。牛顿-拉夫逊法是目前广泛应用的一种潮流计算方法,本文阐述了牛顿-拉夫逊潮流计算的基本原理。详细展示了利用matlab平台编写潮流计算程序的具体过程,通过实例证明基于牛顿-拉夫逊法的潮流计算程序具有收敛速度快、占用内存小的优点。潮流计算的程序实现手段。

继续访问

传统牛顿拉夫逊法潮流计算matlab程序.zip

采用何仰赞《电力系统分析》中介绍的牛顿拉夫逊法matlab编程,程序还能实现N-1校核和线路网损分析,适合学习电气工程领域的学子。

基于matpower的电力系统潮流计算matlab程序

它是由美国康奈尔大学电力系统工程研究中心(PSERC of Cornell University)的RAY D. Zimmerman、Carlos E. Murillo-Sánchez和甘德强在Robert J. Thomas的指导下开发出来的,本章介绍的是MATPOWER4.0。每一个电网用变量名为“mpc”的结构体(structures)来定义,结构体mpc的不同字段用baseMVA、bus、branch、gen等来定义和返回电网的具体参数。列的数据类似于标准的IEEE 和PTI 列的数据格式。

继续访问

直流潮流计算matlab程序

直流潮流发的特点是用电力系统的交流潮流(有功功率和无功功率)等值的直流电流来代替。甚至只用直流电路的解析法来分析电力系统的有功潮流,而不考虑无功分布对有功的影响。这样一来计算速度加快,但计算的准确度有所降低,本方法适用于对潮流计算准确度要求不高的计算场景。θ为网络中各节点的电压相位角的向量;P为节点注入的有功功率向量​。这就相当于线路两端的直流电位分别为θi和θj。(2)按照标幺值计算时,节点电压与其额定电压相差不大,故有:Ui≈Uj≈1.0;以IEEE9节点系统为算例,系统参数如下​。

继续访问

牛顿-拉夫逊法潮流计算matlab程序,牛顿—拉夫逊法潮流计算MATLAB程序.doc

!!!!!!!!!!!!########################牛顿—拉夫逊法潮流计算程序By Yuluo%牛顿--拉夫逊法进行潮流计算n=input('请输入节点数:n=')n1=input('请输入支路数:n1=')isb=input('请输入平衡母线节点号:isb=')pr=input('请输入误差精度:pr=')B1=input('请输入由支路参数形成的矩阵:B1=')B...

继续访问

matlab程序 潮流计算,潮流计算matlab程序

《潮流计算matlab程序》由会员分享,可在线阅读,更多相关《潮流计算matlab程序(3页珍藏版)》请在人人文库网上搜索。1、clear%各节点参数:节点编号,类型,电压幅值,电压相位,注入有功,注入无功 %类型:1PQ节点,2PV节点,3平衡节点%本程序中将最后一个节点设为平衡节点R_1=1 1 1.0 0 0.2 0.2j2 1 1.0 0 -0.45 -0.15j3 1 1.0 0 ...

继续访问

matlab潮流计算函数,基于牛顿拉夫逊法潮流计算的matlab实验报告(含源程序和结果)...

《基于牛顿拉夫逊法潮流计算的matlab实验报告(含源程序和结果)》由会员分享,可在线阅读,更多相关《基于牛顿拉夫逊法潮流计算的matlab实验报告(含源程序和结果)(24页珍藏版)》请在人人文库网上搜索。1、基于牛顿拉夫逊法潮流计算的matlab实验报告一、 实验目的和要求1.学习掌握matlab的基本用法2.应用MATLAB语言编写具有一定通用性的牛顿-拉夫逊法潮流计算程序。要求:(1)潮流计...

继续访问

matlab的做潮流计算,Matlab实现潮流计算程序

关于Matlab趋势计算program.doc文件的实现,爱文共享的信息具有丰富的相关文档,每天都有成千上万的行业名人在该站点上共享最新信息.程序代码如下: 读取数据clcclearfilename ='txt'a = textread(filename)n = a(,)pinghengjd = a(,)phjddianya = a(,)jingdu = a(,)b = zeros (,)j = ...

继续访问

天然气潮流计算matlab程序

此外,由于天然气在管道内传输时会产生压力损耗,所以每隔一段都要设置压缩机来提升节点压力,保证天然气系统的正常运行。(3)如果节点中存在压缩机,则可以求得压缩机消耗的等效天然气流量,将其作为一个负荷加入到潮流计算中;管道或者节点的约束,例如流量、节点压力、压缩机消耗电能和压缩比等,如下面四式所示。(2)根据天然气节点压力与节点间流量的关系式求出前一个节点的节点压力;(1)由用户负荷求得微型燃气轮机的功率

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11158668.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存