雅克比迭代法就是众多迭代法中比较早且较简单的一种,其命名也是为纪念普鲁士著名数学家雅可比。雅克比迭代法的计算公式简单,每迭代一次只需计算一次矩阵和向量的乘法,且计算过程中原始矩阵A始终不变,比较容易并行计算。
概念
考虑线性方程组Ax = b时,一般当A为低阶稠密矩阵时,用主元消去法解此方程组是有效方法。但是,对于由工程技术中产生的大型稀疏矩阵方程组(A的阶数很高,但零元素较多,例如求某些偏微分方程数值解所产生的线性方程组),利用迭代法求解此方程组就是合适的,在计算机内存和运算两方面,迭代法通常都可利用A中有大量零元素的特点。雅克比迭代法就是众多迭代法中比较早且较简单的一种,其命名也是为纪念普鲁士著名数学家雅可比。
折叠编辑本段迭代过程
迭代过程
首先将方程组中的系数矩阵A分解成三部分,即:A = L+D+U,如图1所示,其中D为对角阵,L为下三角矩阵,U为上三角矩阵。
之后确定迭代格式,X^(k+1) = BX^(k) +f ,(这里^表示的是上标,括号内数字即迭代次数),如图2所示,其中B称为迭代矩阵,雅克比迭代法中一般记为J。(k = 0,1,)
再选取初始迭代向量X^(0),开始逐次迭代。
折叠编辑本段收敛性
设Ax= b,其中A=D+L+U为非奇异矩阵,且对角阵D也非奇异,则当迭代矩阵J的谱半径ρ(J)<1时,雅克比迭代法收敛。
折叠编辑本段优缺点
雅克比迭代法的优点明显,计算公式简单,每迭代一次只需计算一次矩阵和向量的乘法,且计算过程中原始矩阵A始终不变,比较容易并行计算。然而这种迭代方式收敛速度较慢,而且占据的存储空间较大,所以工程中一般不直接用雅克比迭代法,而用其改进方法。
折叠编辑本段程序实现示例
#include<stdioh>
#include<mathh>
#include <stdlibh>
main(){
float e=0001,z,m,a[3][3]={5,2,1,-1,4,2,2,-3,10},b[3]={-12,20,3},x[3]={0,0,0},y[3];
int n=3,j,i,k=1;
while(1) {
for(i=0;i<3;i++) {
for(j=0;j<3;j++)
m=m+a[i][j]x[j];
m=m-x[i]a[i][i];
y[i]=(b[i]-m)/a[i][i];
m=0;
}
i=0;
while(i<3) {
z=fabs(x[i]-y[i]);
if(z>e)
break;
i++;
}
if(i!=3) {
for(i=0;i<3;i++)
x[i]=y[i];
k++;
}
else if(i==3)
break;
}
printf("%f\n%f\n%f\n",y[0],y[1],y[2]);
}
雅可比迭代
function [x,n]=jacobi2(A,b,x0,eps,M)
% Jacobi迭代
%A=[9 1 1;1 8 1;1 1 9];
%b=[1;1;1];
%x0=[0;0;0];
%[x,n]=jacobi(A,b,x0)
if nargin==3
eps=10e-6;
M=10000;
elseif nargin==4
M=10000;
end
D=diag(diag(A));L=-tril(A,-1);
U=-triu(A,1);B=inv(D)(L+U);
f=inv(D)b;x=x0;n=0;
tol=1;
while tol>eps
x=Bx0+f;
n=n+1;
tol=norm(x-x0);%极大范数 等同于tol=max(abs(x-x0))但不能这样用
x0=x;
if(n>=M)
disp('Warning:迭代次数太多,可能不收敛');
break;
end
end
高斯赛德尔迭代
function[x,n]=gauseidel2(A,b,x0,eps,M )
% Detailed explanation goes here
% 解的精度:eps% 迭代步数控制:M
% 解 x% 求解所需的实际步数迭代:n
%[x,n]=gauseidel(A,b,x0)
if nargin==3
eps=10e-6;
M=10000;
elseif nargin==4
M=10000;
end
D=diag(diag(A));
L=-tril(A,-1);
U=-triu(A,1);
G=(D-L)\U;
f=(D-L)\b;
x=x0;
n=0;
tol=1;
while tol>=eps
x=Gx0+f;
n=n+1;
tol=norm(x-x0);%算矩阵sup范数
x0=x;
if(n>=M)
disp('Warning:迭代次数太多可能不收敛')
break
end
end
牛顿-拉夫逊法早在50年代末就已应用于求解电力系统潮流问题,但作为一种实用的,有竞争力的电力系统潮流计算方法,则是在应用了稀疏矩阵技巧和高斯消去法求修正方程后。牛顿-拉夫逊法是求解非线性代数方程有效的迭代计算。
13MATLAB概述
目前电子计算机已广泛应用于电力系统的分析计算,潮流计算是其基本应用软件之一。现有很多潮流计算方法。对潮流计算方法有五方面的要求:(1)计算速度快(2)内存需要少(3)计算结果有良好的可靠性和可信性(4)适应性好,亦即能处理变压器变比调整、系统元件的不同描述和与其它程序配合的能力强(5)简单。
MATLAB是一种交互式、面向对象的程序设计语言,广泛应用于工业界与学术界,主要用于矩阵运算,同时在数值分析、自动控制模拟、数字信号处理、动态分析、绘图等方面也具有强大的功能。
MATLAB程序设计语言结构完整,且具有优良的移植性,它的基本数据元素是不需要定义的数组。它可以高效率地解决工业计算问题,特别是关于矩阵和矢量的计算。MATLAB与C语言和FORTRAN语言相比更容易被掌握。通过M语言,可以用类似数学公式的方式来编写算法,大大降低了程序所需的难度并节省了时间,从而可把主要的精力集中在算法的构思而不是编程上。
另外,MATLAB提供了一种特殊的工具:工具箱(TOOLBOXES)这些工具箱主要包括:信号处理(SIGNAL PROCESSING)、控制系统(CONTROL SYSTEMS)、神经网络(NEURAL NETWORKS)、模糊逻辑(FUZZY LOGIC)、小波(WAVELETS)和模拟(SIMULATION)等等。不同领域、不同层次的用户通过相应工具的学习和应用,可以方便地进行计算、分析及设计工作。
MATLAB设计中,原始数据的填写格式是很关键的一个环节,它与程序使用的方便性和灵活性有着直接的关系。
原始数据输入格式的设计,主要应从使用的角度出发,原则是简单明了,便于修改。
2.1 电力系统的基本概念
2.1.1电力系统
(1)电力系统:发电机把机械能转化为电能,电能经变压器和电力线路输送并分配到用户,在那里经电动机、电炉和电灯等设备又将电能转化为机械能、热能和光能等。这些生产、变换、输送、分配、消费电能的发电机、变压器、变换器、电力线路及各种用电设备等联系在一起组成的统一整体称为电力系统。
(2)电力网:电力系统中除发电机和用电设备外的部分。
(3)动力系统:电力系统和“动力部分”的总和。
“动力部分”:包括火力发电厂的锅炉、汽轮机、热力网和用电设备,水力发电厂的水库和水轮机,核电厂的反应堆等。
2.1.2电力系统的负荷和负荷曲线
(1)电力系统的负荷:系统中千万个用电设备消费功率的总和,包括异步电动机、同步电动机、电热炉、整流设备、照明设备等若干类。
(2)电力系统的供电负荷:综合用电负荷加上电力网中损耗的功率。
(3)电力系统的发电负荷:供电负荷加上发电厂本身的消耗功率。
(4)各用电设备的有功功率和无功功率随受电电压和系统频率的变化而变化,其变化规律不尽相同,综合用电负荷随电压和频率的变化规律是各用电负荷变化规律的合成。
(5)负荷曲线:某一时间段内负荷随时间而变化的规律。
(6)按负荷种类可分有功功率负荷和无功功率负荷;按时间长短可分为日负荷和年负荷曲线;按计量地点可分为个别用户、电力线路、变电所、发电厂以至整个系统的负荷曲线。将上述三种分类相结合,就确定了某一种特定的负荷曲线。不同行业的有功功率日负荷曲线差别很大。负荷曲线对电力系统的运行又很重要的意义,它是安排日发电计划,确定各发电厂发电任务以及确定系统运行方式等的重要依据。
2.2 电力系统的基本元件
2.2.1 发电机
现代电力工业中,无论是火力发电、水力发电或核能发电,几乎全部采用同步交流发电机。电机的电枢布置在定子上,励磁绕组布置在转子上,作为旋转式磁极。同步发电机的转速(转/MIN)和系统频率f(HZ)之间有着严格的关系,即n=60f/p式中p为电机的极对数。
根据转子结构型式的不同,分为隐极式和凸极式发电机,前者转子没有显露出来的磁极,后者则有。
转子的励磁型式有直流励磁系统和可控硅励磁系统,后者利用同轴交流励磁机或由同步发电机本身发出的交流电,经整流后供给转子。直流励磁机有换向问题,故其制造容量受到限制,所以,在大容量发电机中均可采用可控硅励磁系统。
2.2.2 电力变压器
电力变压器是电力系统中广泛使用的升压和降压设备。据统计,电力系统中变压器的安装总容量约为发电机安装容量的6-8倍。按用途,电力变压器可分为升压变压器、降亚变压器、配电变压器和联络变压器。按相数分,变压器可分为单相式和三相式。按每相线圈分,又有双绕组和三绕组之分。按线圈耦合的方式,可分为普通变压器和自耦变压器。
2.2.3 电力线路
(1)架空线路:由导线、避雷针、杆塔、绝缘子和金具等构成。
(2)电缆线路:由导线、绝缘层、包护层等构成。
2.2.4 无功功率补偿设备
主要的无功功率补偿设备有同步调相机、电力电容器和静止补偿器。
2.3 电力系统元件的数学模型
2.3.1 电力线路的等值电路
在电力系统分析中,一般只考虑电力线路两侧端口的电压和电流,把电力线路作为无源双口网络处理。
线路的双口网络方程:
Z=B=L
2.3.2 变压器的等值电路
(1)双绕组变压器等值电路
(2)三绕组变压器等值电路
2.3.3 同步发电机的数学模型
2.3.4 电力系统负荷
2.3.5 多级电压电力系统的等值电路
2.4 电力系统稳态运行分析
2.4.1 电力线路的电压损耗与功率损耗
2.4.2 变压器中的功率损耗与电压损耗
2.4.3 辐射形网络的分析计算
辐射形电力网的特点是各条线路有明确的始端与末端。辐射形电力网的分析计算就是利用已知的负荷、节点电压来求取未知的节点电压、线路功率分布、功率损耗及始端输出功率。
辐射形电力网的分析计算,根据已知条件的不同分两种
1 已知末端功率与电压:即 从末端逐级往上推算,直至求得各要求的量。
2 已知末端功率、始端电压:末端可理解成一负荷点,始端为电源点或电压中枢点。采用迭代法。
(1)假设末端电压为线路额定电压,利用第一种方法求得始端功率及全网功率分布。
(2)用求得的线路始端功率和已知的线路始端电压,计算线路末端电压和全网功率分布。
(3)用第(2)步求得的线路末端电压计算线路始端功率和全网功率分布,如求得的各线路功率与前一次相同计算的结果相差小于允许值,就可以认为本步求得的线路电压和全网功率分布为最终计算结果。否则,返回第二步重新进行计算。
2.4.4 复杂电力系统潮流计算
电力系统潮流计算始对复杂电力系统正常和故障条件下稳态运行状态的计算。潮流计算的目标始求取电力系统在给定运行方式下的节点电压和功率分布,用以检查系统各元件是否过负荷、各点电压是否满足要求、功率的分布和分配是否合理以及功率损耗等。对现有电力系统的运行和扩建,对新的电力系统进行规划设计以及对电力系统进行静态和暂态稳定分析都是以潮流计算为基础。因此,潮流计算是电力系统计算分析中的一种最基本的计算。
潮流计算结果的用途,例如用于电力系统稳定研究、安全估计或最优潮流等也对潮流计算的模型和方法有直接影响。
2.5 电力系统潮流计算机算法
2.5.1电力系统潮流计算机算法概述
2.5.1.1 导纳矩阵的形成
2.5.1.2 节点类型
(1)PV节点:柱入有功功率P为给定值,电压也保持在给定数值。
(2)PQ节点:诸如有功功率和无功功率是给定的。
(3)平衡节点:用来平衡全电网的功率。选一容量足够大的发电机担任平衡全电网功率的职责。
平衡节点的电压大小与相位是给定的,通常以它的相角为参考量,即取其电压相角为0。一个独立的电力网中只设一个平衡点。
2.5.1.3 高斯迭代法
2.5.2 牛顿-拉夫逊法
2.5.2.1 原理
2.5.2.2 基本步骤
基本步骤:
(1)形成节点导纳矩阵
(2)将各节点电压设初值U,
(3)将节点初值代入相关求式,求出修正方程式的常数项向量
(4)将节点电压初值代入求式,求出雅可比矩阵元素
(5)求解修正方程,求修正向量
(6)求取节点电压的新值
(7)检查是否收敛,如不收敛,则以各节点电压的新值作为初值自第3步重新开始进行狭义次迭代,否则转入下一步
(8)计算支路功率分布,PV节点无功功率和平衡节点柱入功率。
2.5.2.3 注意事项
2.5.2.4 程序流程框图
2.6 软件设计
2.6.1 方案选择及说明
2.6.2 方案求解
2.6.3 MATLAB编程说明及元件描述
2.6.4 程序
#include<stdioh>
struct powernode
{
float pi;
float qi;
int i;
float vi;
};
struct powernode wg[20];
struct powernode wl[20];
struct linedata
{
int i;
int j;
float r;
float x;
float y; /包括变压器变比/
float k; /只用作标析变压器,变压器变比仍在y中/
};
struct linedata zl[20];
struct linedata t3; /临时数组/
static double y[][3]; /在matrixform中应用/
int t=0;
int t2,ti,tj; /临时记数单元/
float temp;
float tx,tr,YK; /中间工作单元(在matrixform中应用)/
double GIJ,BIJ; /中间工作单元(在matrixform中应用)/
int N; /总节点数/
int zls;
int Q,V,PVS,PVD;
int GS;
int LS;
float vo;
float Eps;
static double GII[]={0},BII[]={0},YDS[]={0},YDZ[]={0},B[]={0};/添加数组/
/因子表形成时定义的数据/
struct pvdata
{
float vis;
int i;
};
static struct pvdata pv[]={0};
datain()
{
clrscr();
printf("program runningn" );
printf("n");
printf("please input the aggregate to the system note");/总节点数/
scanf("%d",&N);
printf("n");
printf(" PQ note IN ALL");/总节点数/
scanf("%d",&Q);
PVS=(N-Q)-1;
printf("n");
printf("them input the aggregate to the system power line");
scanf("%d",&zls);/输电线路数和变压器的总数/
printf("n");
printf("electromotor node in all :");/发电机节点总数/
scanf("%d",&GS);
printf("n");
printf("load node in all : ");/负荷节点总数/
scanf("%d",&LS);
printf("n");
printf("average electric voltage");/平均电压/
scanf("%f",vo);
printf("n");
printf("n");
printf("please input the date messagen");
printf("follow the format like it: i,j,r,x,y,kn");
do{
t++;
scanf("%d,%d,%f,%f,%f",&zl[t]i,&zl[t]j,&zl[t]r,&zl[t]x,&zl[t]y,&zl[t]k);
printf("processingn");
if(zl[t]i>zl[t]j)
{
temp=zl[t]i;
zl[t]i=zl[t]j;
zl[t]j=temp;
/ if(zl[t]k!=1) / /要考虑归算问题不????/
}
printf("data you input is:n " );
printf("%d,%d,%f,%f,%f",zl[t]i,zl[t]j,zl[t]r,zl[t]x,zl[t]y,zl[t]k);
}while(zl[t]i!=0&&zl[t]j==0);
for(t2=t;t>0;t--) /冒泡法排序/
{
for(;t2>0;t2--)
{
if(zl[t2]i<zl[t2-1]i)
{
t3i=zl[t2]i;t3j=zl[t2]j;t3r=zl[t2]r;t3x=zl[t2]x;t3y=zl[t2]y;t3k=zl[t2]k;
zl[t2]i=zl[t2-1]i;zl[t2]j=zl[t2-1]j;zl[t2]r=zl[t2-1]r;zl[t2]x=zl[t2-1]x;zl[t2]y=zl[t2-1]y;zl[t2]k=zl[t2-1]k;
zl[t2-1]i=t3i;zl[t2-1]j=t3j;zl[t2-1]r=t3r;zl[t2-1]x=t3x;zl[t2-1]y=t3y;zl[t2-1]k=t3k;
}
else if(zl[t2]i==zl[t2-1]i)
{if(zl[t2]j<zl[t2-1]j)
{
t3i=zl[t2]i;t3j=zl[t2]j;t3r=zl[t2]r;t3x=zl[t2]x;t3y=zl[t2]y;t3k=zl[t2]k;
zl[t2]i=zl[t2-1]i;zl[t2]j=zl[t2-1]j;zl[t2]r=zl[t2-1]r;zl[t2]x=zl[t2-1]x;zl[t2]y=zl[t2-1]y;zl[t2]k=zl[t2-1]k;
zl[t2-1]i=t3i;zl[t2-1]j=t3j;zl[t2-1]r=t3r;zl[t2-1]x=t3x;zl[t2-1]y=t3y;zl[t2-1]k=t3k;
}
}
}
}
printf("n");
t=0;
printf("please input wg~!n");
do
{
scanf("%f,%f,%d,%f",&wg[t]pi,&wg[t]qi,&wg[t]i,&wg[t]vi);
t++;
}while(t!=GS);ti=0;
for(t=0;t<GS;t++){if(wg[t]vi<o){pv[ti]vis=labs(wg[t]vi);pv[ti]i=wg[t]i;ti++;}}
t2=0;
printf("please input WL~!n");
do
{
scanf("%f,%f,%d,%f",&wl[t2]pi,&wl[t2]qi,&wl[t2]i,&wl[t2]vi);
t2++;
}while(t2!=LS);
for(t=0;t<LS;t++){if(wl[t]vi<o){pv[ti]vis=labs(wl[t]vi);pv[ti]i=wl[t]i;ti++;}}
}
matrixform()
{
for(t=1;t<N;t++)
{
GII[t]=0;
BII[t]=0;
YDS[t]=0;
}
for(t2=1;t<zls;t2++)
{
ti=labs(zl[t2]i);
tj=labs(zl[t2]j);
tr=zl[t2]r;
tx=zl[t2]x;
temp=ldexp(tr,1)+ldexp(tx,1);
GIJ=tr/temp; BIJ=tx/temp;
y[t2][1]=-GIJ;
y[t2][2]=-BIJ;
y[t2][3]=tj;
GII[ti]=GII[ti]+GIJ; BII[ti]=BII[ti]+BIJ;
GII[tj]=GII[tj]+GIJ; BII[tj]=BII[tj]+BIJ;
YDS[ti]=YDS[ti]+1;
}
YDZ[1]=1;
for(t=1;t<N-1;t++)
{
YDZ[t+1]=YDZ[t]+YDS[t];
} /矩阵型成第一部完成/
/矩阵型成第二部开始/
for(t2=1;t<zls;t2++)
{ /k只用作变压器的标析,变压器变比仍在y中/
ti=zl[t2]i;tj=zl[t2]j;YK=zl[t2]y;
if(ti<0||tj<0)
{ if(ti<0)
ti=labs(ti);
else
ti=labs(tj);
GIJ=y[t2][1];BIJ=y[t2][2];
GII[t2]=GII[t2]+(1-1/YK/YK)GIJ;
BII[t2]=BII[t2]+(1-1/YK/YK)BIJ;
y[t2][1]=GIJ/YK;
y[t2][2]=BIJ/YK;
}
else
GIJ=0;
BIJ=YK/2;
SY(tr); /这个东东要调用,实现节点累计自导纳/
SY(tj); /SY的过程是完成向一个节点累计相应自导纳的实部和虚部/
}
}
int sign,ld,k2,x,im,ai; /k2控制台开关,负荷静态特性开关/
static float fd[]={0};
unsigned AF[1];
static int u[]={0}; /怎么实现?来自那里/
divisorform()
{
/暂时不知道LD PVD 等的作用……待善/
PVD=pv[0]i;
ld=wl[0]i;
t=0;
do{
t2++;
if(sign==1&&t2==PVD)
{t=t+1;pvd=pv[t]i;fd[t2]=0;di[t2]=0;
if(k2==0&&t2==ld)
{t2=t2+1;ld=wl[t2]i;}
}continue;
else
B[t2]=BII[t2];
if(k2==0&&sing==1&&t2==ld)
{
B[t2]=B[t2]+AF[1]wl[t2]qi/wl[t2]vi/wl[t2]vi;t2=t2+1;ld=wl[t2]i;
}
for(temp=YDZ[t2];temp<YDZ[t2+1]-1;temp++)
{
tj=Y[temp][3];B[tj]=Y[temp][2];
}
if(sign=1)
{for(temp=1;temp<PVS;temp++)
tj=pv[temp][2];
B[tj]=0;
}
x=2;im=1;
do{im++;
if(im>t2-1)
break;
else
temp=1;
for(;temp!>fd[im];){if(u[x+1]!=1){temp=temp+1;x=x+2;}else ai=u[x]/} /u[]未完成/
continue;
}
}while(t2!=N-1);
}
dataout()
{
clrscr();
printf("note 1 voltagen");
printf("(639696730300784) + j (1832939) = 194136001255537 ∠ 707609880529659°n");
printf("87u& 婾[1]u孢�u
--------------------------------------------------------------------------------
虍鉧C&8u謤蛝髻n");
}
main()
{
datain(); /数据输入及处理/
matrixform(); /矩阵的形成/
/ divisorform(); / /因子表的形成/
matrixsolve(); /矩阵线形方程的求解/
/ nodepower(); / /迭代过程中节点功率的计算/
/ iterate(); / /迭代/
dataout(); /数据输出及支路功率计算/
}
智能科学与技术专业考研方向1:计算机技术
计算机技术是(专业硕士)工程下的二级学科专业。计算机技术领域重点研究得是如何扩展计算机系统的功能和发挥计算机系统在各学科、各类工程、人类生活和工作中的作用。
计算机技术是信息社会中的核心技术,也是实现现代化的关键技术之一。计算机领域包括计算机软、硬件系统的设计、开发以及与其他领域紧密相关的应用系统的研究、开发和应用、涉及计算机科学与技术学科理论、技术和方法等等。
智能科学与技术专业考研方向2:计算机科学与技术
计算机科学与技术专业学生主要学习计算机科学与技术包括计算机硬件、软件与应用的基本理论、基础知识和基本技能与方法,接受从事计算机应用开发和研究能力的基本训练等。
本专业学生主要学习计算机科学与技术方面的基本理论和基本知识,接受从事研究与应用计算机的基本训练,具有研究和开发计算机系统的基本能力。
智能科学与技术专业毕业生有两条职业路线:
第一类路线,纯技术路线;信息产业是朝阳产业,对人才提出了更高的要求,因为这个行业的特点是技术更新快,这就要求从业人员不断补充新知识,同时对从业人员的学习能力的要求也非常高;
第二类路线,由技术转型为管理,这种转型尤为常见于计算机行业,比方说编写程序,是一项脑力劳动强度非常大的工作,随着年龄的增长,很多从事这个行业的专业人才往往会感到力不从心,因而由技术人才转型到管理类人才不失为一个很好的选择。
智能科学与技术专业考研方向3:电子与通信工程
电子通信工程英文名为Electronics and Communication Engineering,是电子科学与技术和信息技术相结合,构建现代信息社会的工程领域,利用电子科学与技术和信息技术的基本理论解决电子元器件、集成电路、电子控制、仪器仪表、计算机设计与制造及与电子和通信工程相关领域的技术问题,研究电子信息的检测、传输、交换、处理和显示的理论和技术。
电子与通信工程领域工程硕士要求掌握本领域扎实的基础理论和宽广的专业知识以及管理知识,较为熟练地掌握一门外国语,掌握解决工程问题的先进技术方法和现代技术手段,具有创新意识和独立承担工程技术或工程管理等方面的能力。
学生毕业后可在通信企事业单位从事通信网络的设计和维护工作,并能从事通信系统的建设、监理及通信设备的生产、营销等方面工作。
智能科学与技术专业考研方向4:控制科学与工程
控制科学与工程是研究控制的理论、方法、技术及其工程应用的学科。控制科学以控制论、系统论、信息论为基础,研究各应用领域内的共性问题,即为了实现控制目标,应如何建立系统的模型,分析其内部与环境信息,采取何种控制与决策行为;而与各应用领域的密切结合,又形成了控制工程丰富多样的内容。
本专业方向主要研究工业自动控制装置,系统可靠性评估及设计,控制系统的自动测试方法,数据信息采集、传输、处理、转换方法和相应设备,新型传感器和仪表,传感器数据融合理论及应用,动态系统故障诊断技术,工业现场总线技术,高速企业网络组成及安全技术,新型大功率电子器件及应用,嵌入式系统的研究及相关产品的开发。
控制科学与工程专业考研学校推荐:清华大学、北京航空航天大学、东北大学、哈尔滨工业大学、上海交通大学、浙江大学、华中科技大学、西安交通大学、国防科学技术大学。
一、课程设计的目的与要求 目的:培养学生的电力系统潮流计算机编程能力,掌握计算机潮流计算的相关知识 要求:基本要求: 1编写潮流计算程序; 2在计算机上调试通过; 3运行程序并计算出正确结果; 4写出课程设计报告 二、设计步骤: 1根据给定的参数或工程具体要求(如图),收集和查阅资料;学习相关软件(软件自选:本设计选择Matlab进行设计)。
2在给定的电力网络上画出等值电路图。 3运用计算机进行潮流计算。 4编写设计说明书。 三、设计原理 1. 牛顿-拉夫逊原理 牛顿迭代法是取x0 之后,在这个基础上,找到比x0 更接近的方程的跟,一步一步迭代,从而找到更接近方程根的近似跟。牛顿迭代法是求方程根的重要方法之一,其最大优点是在方程f(x) = 0 的单根附近具有平方收敛,而且该法还可以用来求方程的重根、复根。电力系统潮流计算,一般来说,各个母线所供负荷的功率是已知的,各个节点电压是未知的(平衡节点外)可以根据网络结构形成节点导纳矩阵,然后由节点导纳矩阵列写功率方程,由于功率方程里功率是已知的,电压的幅值和相角是未知的,这样潮流计算的问题就转化为求解非线性方程组的问题了。为了便于用迭代法解方程组,需要将上述功率方程改写成功率平衡方程,并对功率平衡方程求偏导,得出对应的雅可比矩阵,给未知节点赋电压初值,一般为额
课程设计报告
2 定电压,将初值带入功率平衡方程,得到功率不平衡量,这样由功率不平衡量、雅可比矩阵、节点电压不平衡量(未知的)构成了误差方程,解误差方程,得到节点电压不平衡量,节点电压加上节点电压不平衡量构成新的节点电压初值,将新的初值带入原来的功率平衡方程,并重新形成雅可比矩阵,然后计算新的电压不平衡量,这样不断迭代,不断修正,一般迭代三到五次就能收敛。 牛顿—拉夫逊迭代法的一般步骤: (1)形成各节点导纳矩阵Y。 (2)设个节点电压的初始值U和相角初始值e 还有迭代次数初值为0。 (3)计算各个节点的功率不平衡量。 (4)根据收敛条件判断是否满足,若不满足则向下进行。 (5)计算雅可比矩阵中的各元素。 (6)修正方程式个节点电压 (7)利用新值自第(3)步开始进入下一次迭代,直至达到精度退出循环。 (8)计算平衡节点输出功率和各线路功率 2. 网络节点的优化 1)静态地按最少出线支路数编号 这种方法由称为静态优化法。在编号以前。首先统计电力网络个节点的出线支路数,然后,按 出线支路数有少到多的节点顺序编号。当由n 个节点的出线支路相同时,则可以按任意次序对这n 个节点进行编号。这种编号方法的根据是导纳矩阵中,出线支路数最少的节点所对应的行中非零元素也 2)动态地按增加出线支路数最少编号在上述的方法中,各节点的出线支路数是按原始网络统计出 来的,在编号过程中认为固定不变的,事实上,在节点消去过程中,每消去一个节点以后,与该节点相连的各节点的出线支路数将发生变化(增加,减少或保持不变)。因此,如果每消去一个节点后,立即修正尚未编号节点的出线支路数,然后选其中支路数最少的一个节点进行编号,就可以预期得到更好的效果,动态按最少出线支路数编号方法的特点就是按出线最少原则编号时考虑了消去过程中各节点出线支路数目的变动情况。 3. MATLAB编程应用 Matlab 是“Matrix Laboratory”的缩写,主要包括:一般数值分析,矩阵运算、数字信号处理、建模、系统控制、优化和图形显示等应用程序。由于使用Matlab 编程运算与人进行科学计算的思路和表达方式完全一致,所以不像学习高级语言那样难于掌握,而且编程效率和计算效率极高,还可在计算机上直接输出结果和精美的图形拷贝,所以它的确为一高效的科研助手。
给你一个kernel做参考吧
void Jacobi(double A , double x , double lagma , unsigned int n)
{
unsigned int i , j , k=0 ;
unsigned int L=20 ;
double temp;
//double mu = 1e-12;//精度
//double Fanshu1; // x的一范数
double AA=(double)malloc((n+1)(n+1));
for(i=1;i<=n;i++)
{
(x+i)=1;//迭代初始值设置为1
(AA+in+i) = (A+in+i)-lagma; // AA=A-lagmaI
}
while(1)
{
for(i = 1 ; i<= n ; i++)
{
temp = 0;
//Fanshu1=0;
for(j = 1 ; j <= n ; j++)
if(j!=i)
temp -= (AA+in+j) (x+j);
(x+i) = temp/ (AA+in+i);
}
k++;
if(k==L)
{
//printf("Jacobi法求解Ax=b时 迭代次数超过最大值");
break;
}
}
free(AA);
}
在公式(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=-030-j018 P2s+jQ2s=-055-j013 P3s=05 V3s=110 V4s=105∠0°
容许误差ε=10-5
节点导纳矩阵:
导纳矩阵
各节点电压:
节点 e f v ζ
10984637 -0008596 0984675 -0500172
20958690 -0108387 0964798 -6450306
31092415 0128955 1100000 6732347
41050000 0000000 1050000 0000000
各节点功率:
节点 P Q
1-0300000 -0180000
2–0550000 -0130000
3 0500000 -0551305
4 0367883 0264698
matlab程序如下:
// 牛顿法潮流计算matlab程序
clc;
Y=[1042093-8242876i -0588235+2352941i 3666667i -0453858+1891074i;
-0588235+2352941i 1069005-4727377i 0 -0480769+2403846i;
3666667i 0 -3333333i 0;
-0453858+1891074i -0480769+2403846i 0 0934627-4261590i];
%导纳矩阵
e=[1 1 11 105];%初始电压
f=zeros(4,1);
V=zeros(4,1);%节点电压
Ws=[-03 ; -018 ; -055 ; -013 ; 05 ; 11];%初始功率
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(2i-1,2j-1)=-(G(i,j)e(i)+B(i,j)f(i));
J(2i,2j)=-J(2i-1,2j-1);
J(2i-1,2j)=B(i,j)e(i)-G(i,j)f(i);
J(2i,2j-1)=J(2i-1,2j);
end
end
end
for j=1:(n-2)
J(6,2j-1)=0;
J(6,2j)=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(2i-1,2i-1)=-s1-G(i,i) e(i)-B(i,i)f(i);
J(2i-1,2i)=-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(2i,2i-1)=s1+B(i,i) e(i)-G(i,i)f(i);
J(2i,2i)=-s2+G(i,i) e(i)+B(i,i)f(i);
s1=0;
s2=0;
end
J(6,5)=-2e(3);
J(6,6)=-2f(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(2i-1)=Ws(2i-1)-s1;
delta_w(2i)=Ws(2i)-s2;
W(2i-1)=s1;
W(2i)=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(2i-1);
f(i)=f(i)+delta_v(2i);
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(2x-1);
S(x,2)=W(2x);
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(n; e=zeros
牛顿拉夫逊潮流计算matlab程序
基于牛顿拉夫逊进行潮流计算,求得各节点电压,各支路功率流动,内附程序输入说明以及案例。
珍藏多年的matlab潮流计算程序源代码集合,包含多个潮流计算程序
达摩老生出品,必属精品,亲测校正,质量保证 资源名:珍藏多年的matlab潮流计算程序源代码集合,包含多个潮流计算程序 资源类型:matlab项目全套源码 源码说明: 全部项目源码都是经过测试校正后百分百成功运行的,如果您下载后不能运行可联系我进行指导或者更换。 适合人群:新手及有一定经验的开发人员
牛顿-拉夫逊法潮流计算——采用极坐标形式
采用极坐标形式的Newton-Raphson法进行潮流计算,并提供IEEE 14、57节点及New England 39节点的计算数据。使用方法:运行/修改PowerFlow_Newton_Polarm文件。
电力系统牛拉法潮流计算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的指导下开发出来的,本章介绍的是MATPOWER40。每一个电网用变量名为“mpc”的结构体(structures)来定义,结构体mpc的不同字段用baseMVA、bus、branch、gen等来定义和返回电网的具体参数。列的数据类似于标准的IEEE 和PTI 列的数据格式。
继续访问
直流潮流计算matlab程序
直流潮流发的特点是用电力系统的交流潮流(有功功率和无功功率)等值的直流电流来代替。甚至只用直流电路的解析法来分析电力系统的有功潮流,而不考虑无功分布对有功的影响。这样一来计算速度加快,但计算的准确度有所降低,本方法适用于对潮流计算准确度要求不高的计算场景。θ为网络中各节点的电压相位角的向量;P为节点注入的有功功率向量。这就相当于线路两端的直流电位分别为θi和θj。(2)按照标幺值计算时,节点电压与其额定电压相差不大,故有:Ui≈Uj≈10;以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 10 0 02 02j;2 1 10 0 -045 -015j;3 1 10 0
继续访问
matlab潮流计算函数,基于牛顿拉夫逊法潮流计算的matlab实验报告(含源程序和结果)
《基于牛顿拉夫逊法潮流计算的matlab实验报告(含源程序和结果)》由会员分享,可在线阅读,更多相关《基于牛顿拉夫逊法潮流计算的matlab实验报告(含源程序和结果)(24页珍藏版)》请在人人文库网上搜索。1、基于牛顿拉夫逊法潮流计算的matlab实验报告一、 实验目的和要求1学习掌握matlab的基本用法2应用MATLAB语言编写具有一定通用性的牛顿-拉夫逊法潮流计算程序。要求:(1)潮流计
继续访问
matlab的做潮流计算,Matlab实现潮流计算程序
关于Matlab趋势计算programdoc文件的实现,爱文共享的信息具有丰富的相关文档,每天都有成千上万的行业名人在该站点上共享最新信息程序代码如下: 读取数据clcclearfilename ='txt'a = textread(filename)n = a(,)pinghengjd = a(,)phjddianya = a(,)jingdu = a(,)b = zeros (,)j =
继续访问
天然气潮流计算matlab程序
此外,由于天然气在管道内传输时会产生压力损耗,所以每隔一段都要设置压缩机来提升节点压力,保证天然气系统的正常运行。(3)如果节点中存在压缩机,则可以求得压缩机消耗的等效天然气流量,将其作为一个负荷加入到潮流计算中;管道或者节点的约束,例如流量、节点压力、压缩机消耗电能和压缩比等,如下面四式所示。(2)根据天然气节点压力与节点间流量的关系式求出前一个节点的节点压力;(1)由用户负荷求得微型燃气轮机的功率
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)