探讨结构化程序设计主要强调的是程序(精选五篇)

时间:2019-05-15 10:19:58下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《探讨结构化程序设计主要强调的是程序》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《探讨结构化程序设计主要强调的是程序》。

第一篇:探讨结构化程序设计主要强调的是程序

探讨结构化程序设计主要强调的是程序的论文由代写论文网提供搜集整理,作者简诉了程序的任何逻辑问题均可用顺序结构、选择结构和循环结构这3种基本结构来描述。

结构化程序设计(STRUCTURED PRO代写计算机硕士论文GRAMING,简称SP)的概念是由荷兰学者E·W.DUKSTRA等人在20世纪60年代后期提出的,是以模块化设计为中心,将原来较为复杂的问题化简为一系列简单模块的设计,也就是将—个大的计算任务划分为一个个比较小的任务,这些小任务均由函数来完成。而函数既可以是C的标准库函数。也可以是自定义函数。在C中,一个具备一定规模的C程序往往是由多个函数组成,其中必有一个名为main的主函数,由main来调用其他函数,必要的话,其他函数还可以调用另外的函数。同一函数可以被一个或多个函数调用一次或多次。代写计算机毕业论文模块的独立性还为扩充已有的系统、建立新系统带来了不少的方便,因为我们可以充分利用现有的模块作积木式的扩展。结构化程序设计的思想是一个程序的任何逻辑问题,代写论文 均可用顺序结构、选择结构和循环结构这3种基本结构来描述。顺序结构的程序流程是按语句的书写顺序依次执行;选择结构是对给定条件进行判断,根据判断结果决定执行两分支中的一个分支或多分支中的一个分支;循环结构是在给定条件成立的情况下,反复执行某个程序段。实现这些程序流程的语句都是流程控制语句。流程控制语句在程序设计中起着重要的作用,通过3种基本控制结构使结构化程序具有唯一的人口和出口,没有死循环,而且程序的静态形式与动态执行形式之间具有良好的对应关系。在C语言中,有4种语句是顺序执行的:①空语句,光有一个分号“;”作为语句结束符,它表示什么也不做。②表达式语句,表达式后面加一个分号,表达式语句主要有赋值语句、自加减运算符构成的语句和逗号表达式语句。③函数调用语句,它是由一个函数调用加上一个分号组成的。④复合语句,由“{”和“}”把一些变量说明和计算机专业毕业论文语句组合放在一起,又称为语句块。选择语句有if语句和switch语句。循环语句有for,while和do-while语句以及一些辅助流程转向语句如continue,break,goto等。顺序结构,选择结构和循环结构共同作为各种复杂程序的基本构造单元,由这3种结构经过反复嵌套构成的程序称为结构化程序,也就是说,结构化程序是由上述3种基本结构组成的。但如果在编程过程中无限制地使用转移语句(goto),会使程序的控制流程强制性地向前或向后跳转而导计算机毕业论文范文致程序的流程无序可循,结构杂乱无章。结构化构造减少了程序的复杂性,提高了可靠性、可测试性和可维护性,使用少数的基本结构,就可使程序逻辑结构清晰,易读易懂,并且容易验证程序的正确性。对—个初学计算机语言的人来说。最重要的就是要有正确的程序流程概念,不仅要懂得而且要灵活应用。由此可见,用结构化方法设计的结构是清晰的,有利于编写出结构良好的程序。因此。结构化程序设计方法的主要原则可以概括为自顶向下,逐步求精,模块化,限制使用goto语句。将程序设计针对的问题进行分解,直到分解到对应于一个个功能更简单,又独立的模块,每个模块再分解到上述3种基本程序结构。

第二篇:c语言程序设计实习报告程序

#include “stdio.h” /*定义学生结构体*/ struct Student {

char ID[20];

char Name[20];

float Mark1;/*计算机*/

float Mark2;/*英语*/

float Mark3;/*数学*/

float Zongfen;/*总分*/

float Average;};/*平均分*/ /*声明学生数组及学生数量*/ struct Student students[2000];int num=0;/*求总分*/ float Zong(struct Student stu){ return(stu.Mark1+stu.Mark2+stu.Mark3);} /*求平均值*/ float Avg(struct Student stu){return(stu.Mark1+stu.Mark2+stu.Mark3)/3;} /*通过学号返回数组下标*/ int Student_SearchByIndex(char id[]){

int i;

for(i=0;i

int i;

for(i=0;i

{if(strcmp(students[i].Name,name)==0)

{return i;}}

return-1;}

/*通过学号返回数组下标*/ int Student_SearchID(char id[]){

int i;

for(i=0;i

{if(strcmp(students[i].ID,id)==0)

{return i;}}

return-1;} /*显示单条学生记录*/ void Student_DisplaySingle(int index){printf(“%10s%10s%8s%8s%8s%8s%10sn”,“学号”,“姓名”,“计算机”,“英语”,“数学”,“总分”,“平均成绩”);printf(“------------------------------n”);printf(“%10s%10s%8.0f%8.0f%8.0f%8.0f%10.2fn”,students[index].ID,students[index].Name, students[index].Mark1,students[index].Mark2,students[index].Mark3,students[index].Zongfen,students[index].Average);}void Student_DisplaySingle1(int index){printf(“------------------------------n”);printf(“%10s%10s%8.0f%8.0f%8.0f%8.0f%10.2fn”,students[index].ID,students[index].Name, students[index].Mark1,students[index].Mark2,students[index].Mark3,students[index].Zongfen,students[index].Average);} /*插入学生信息*/ void Student_Insert(){while(1){printf(“请输入学号:”);scanf(“%s”,&students[num].ID);getchar();printf(“请输入姓名:”);scanf(“%s”,&students[num].Name);getchar();printf(“请输入计算机成绩:”);scanf(“%f”,&students[num].Mark1);getchar();printf(“请输入英语成绩:”);scanf(“%f”,&students[num].Mark2);getchar();printf(“请输入数学成绩:”);scanf(“%f”,&students[num].Mark3);getchar();

students[num].Average=Avg(students[num]);

students[num].Zongfen=Zong(students[num]);

num++;

printf(“是否继续?(y/n)”);

if(getchar()=='n'){break;} }} void exit();/*修改学生信息*/ void Student_Modify(){

float mark1,mark2,mark3;

while(1)

{

char id[20];

int index;

printf(“请输入要修改的学生的学号:”);

scanf(“%s”,&id);

getchar();

index=Student_SearchByIndex(id);

if(index==-1)

{

printf(“学生不存在!n”);

}

else

{

printf(“你要修改的学生信息为:n”);

Student_DisplaySingle(index);

printf(“--请输入新值--n”);

printf(“请输入学号:”);

scanf(“%s”,&students[index].ID);

getchar();

printf(“请输入姓名:”);

scanf(“%s”,&students[index].Name);

getchar();

printf(“请输入成绩:”);

scanf(“%f”,&students[index].Mark1);

getchar();

printf(“请输入成绩:”);

scanf(“%f”,&students[index].Mark2);

getchar();

printf(“请输入成绩:”);

scanf(“%f”,&students[index].Mark3);

getchar();

students[index].Zongfen=Zong(students[index]);

students[index].Average=Avg(students[index]);

printf(“是否继续?(y/n)”);

if(getchar()=='n')

{

break;

}

} } /*删除学生信息*/

void Student_Delete(){

int i;

while(1)

{

char id[20];

int index;

printf(“请输入要删除的学生的学号:”);

scanf(“%s”,&id);

}

getchar();

index=Student_SearchByIndex(id);

if(index==-1)

{

printf(“学生不存在!n”);

}

else

{

printf(“你要删除的学生信息为:n”);

Student_DisplaySingle(index);

printf(“是否真的要删除?(y/n)”);

if(getchar()=='y')

{

for(i=index;i

{

students[i]=students[i+1];

}

num--;

}

getchar();

}

printf(“是否继续?(y/n)”);

if(getchar()=='n')

{

break;

}

} } /*按姓名或学号查询*/ void Student_Select(){

int sel;

printf(“1--------------------按姓名查询n”);

printf(“2--------------------按学号查询n”);

scanf(“%d”,&sel);

if(sel==2){

while(1)

{

char id[20];

int index;

printf(“请输入要查询的学生的学号:”);

scanf(“%s”,&id);

getchar();

index=Student_SearchID(id);

if(index==-1)

{

printf(“学生不存在!n”);

}

else

{

printf(“你要查询的学生信息为:n”);

Student_DisplaySingle(index);

}

printf(“是否继续?(y/n)”);

if(getchar()=='n')

{

break;

}

}}else if(sel==1)

{while(1)

{

char name[20];

int index;

printf(“请输入要查询的学生的姓名:”);

scanf(“%s”,&name);

getchar();

index=Student_SearchByName(name);

if(index==-1)

{

printf(“学生不存在!n”);

}

else

{

printf(“你要查询的学生信息为:n”);

Student_DisplaySingle(index);

}

printf(“是否继续?(y/n)”);

if(getchar()=='n')

{

break;

}

}}

else printf(“信息错误!n”);} /*排序*/ void Student_SortByAverage(){

int a,sel;

printf(“1--------------------按学号排序n”);

printf(“2--------------------按姓名排序n”);

printf(“3--------------------按计算机排序n”);

printf(“4--------------------按英语排序n”);

printf(“5--------------------按数学排序n”);

printf(“6--------------------按总分排序n”);

printf(“7--------------------按平均分排序n”);

scanf(“%d”,&sel);

if(sel==1)

{int i,j;

struct Student tmp;

for(i=0;i

{

for(j=1;j

{

if(strcmp(students[j-1].ID,students[j].ID)>0)

{

tmp=students[j-1];

students[j-1]=students[j];

students[j]=tmp;

}

}

}}

else if(sel==2)

{int i,j;

struct Student tmp;

for(i=0;i

{

for(j=1;j

{

if(strcmp(students[j-1].Name,students[j].Name)>0)

{

tmp=students[j-1];

students[j-1]=students[j];

students[j]=tmp;

}

}

}}

else if(sel==3)

{int i,j;

struct Student tmp;

for(i=0;i

{

for(j=1;j

{

if(students[j-1].Mark1>students[j].Mark1)

{

tmp=students[j-1];

students[j-1]=students[j];

students[j]=tmp;

}

}

}}

else if(sel==4)

{int i,j;

struct Student tmp;

for(i=0;i

{

for(j=1;j

{

if(students[j-1].Mark2>students[j].Mark2)

{

tmp=students[j-1];

students[j-1]=students[j];

students[j]=tmp;

}

}

}}

else if(sel==5)

{int i,j;

struct Student tmp;

for(i=0;i

{

for(j=1;j

{

if(students[j-1].Mark3>students[j].Mark3)

{

tmp=students[j-1];

students[j-1]=students[j];

students[j]=tmp;

}

}

}}

else if(sel==6)

{int i,j;

struct Student tmp;

for(i=0;i

{

for(j=1;j

{

if(students[j-1].Zongfen>students[j].Zongfen)

{

tmp=students[j-1];

students[j-1]=students[j];

students[j]=tmp;

}

}

}}

else if(sel==7)

{int i,j;

struct Student tmp;

for(i=0;i

{

for(j=1;j

{

if(students[j-1].Average>students[j].Average)

{

tmp=students[j-1];

students[j-1]=students[j];

students[j]=tmp;

}

}

}}

else printf(“信息错误!n”);} /*显示学生信息*/ void Student_Display(){

int i;

printf(“%10s%10s%8s%8s%8s%8s%10sn”,“学号”,“姓名”,“计算机”,“英语”,“数学”,“总分”,“平均成绩”);

printf(“------------------------------n”);

for(i=0;i

{

printf(“%10s%10s%8.0f%8.0f%8.0f%8.0f%10.2fn”,students[i].ID,students[i].Name,students[i].Mark1,students[i].Mark2,students[i].Mark3,students[i].Zongfen,students[i].Average);

} } /*将学生信息从文件读出*/ void IO_ReadInfo(){

FILE *fp;

int i;

if((fp=fopen(“Database.txt”,“rb”))==NULL)

{

printf(“不能打开文件!n”);

return;

}

if(fread(&num,sizeof(int),1,fp)!=1)

{

num=-1;

}

else

{

for(i=0;i

{

fread(&students[i],sizeof(struct Student),1,fp);

}

}

fclose(fp);} /*将学生信息写入文件*/ void IO_WriteInfo(){

FILE *fp;

int i;

if((fp=fopen(“Database.txt”,“wb”))==NULL)

{

printf(“不能打开文件!n”);

return;

}

if(fwrite(&num,sizeof(int),1,fp)!=1)

{

printf(“写入文件错误!n”);

}

for(i=0;i

{

if(fwrite(&students[i],sizeof(struct Student),1,fp)!=1)

{

printf(“写入文件错误!n”);

}

}

fclose(fp);} /*统计不同分数段的学生*/ void Student_TJ(){

while(1)

{

int a,sel;

float m,n;

printf(“1--------------------按计算机统计不同分数段的学生n”);

printf(“2--------------------按英语统计不同分数段的学生n”);

printf(“3--------------------按数学统计不同分数段的学生n”);

printf(“4--------------------按总分统计不同分数段的学生n”);

printf(“5--------------------按平均分统计不同分数段的学生n”);

scanf(“%d”,&sel);

printf(“输入所需查询的分数段[m,n]”);

scanf(“%f%f”,&m,&n);

printf(“%10s%10s%8s%8s%8s%8s%10sn”,“学号”,“姓名”,“计算机”,“英语”,“数学”,“总分”,“平均成绩”);

if(sel==1)

{int j;

for(j=0;j<=num;j++)

{

if(students[j].Mark1>=m&&students[j].Mark1<=n)

Student_DisplaySingle1(j);

}}

else if(sel==2)

{int j;

for(j=0;j<=num;j++)

{

if(students[j].Mark2>=m&&students[j].Mark2<=n)

Student_DisplaySingle1(j);

}}

else if(sel==3)

{int j;

for(j=0;j<=num;j++)

{

if(students[j].Mark3>=m&&students[j].Mark3<=n)

Student_DisplaySingle1(j);

}}else if(sel==4)

{int j;

for(j=0;j<=num;j++)

{

if(students[j].Zongfen>=m&&students[j].Zongfen<=n)

Student_DisplaySingle1(j);

}}else if(sel==5)

{int j;

for(j=0;j<=num;j++)

{

if(students[j].Average>=m&&students[j].Average<=n)

Student_DisplaySingle1(j);

}}

else printf(“信息错误!n”);

printf(“是否继续?(y/n)”);

a=getchar();

if(getchar()=='n'){break;} } } /*主程序*/ main(){ int choice;

IO_ReadInfo();

fflush(stdin);while(1)

{ /*主菜单*/ printf(“

~~~~~~~~~~~~~~~~~~~~~&欢迎进入学生成绩管理系统&~~~~~~~~~~~~~~~~~~~~~ n”);printf(“

*

1.输入学生记录

*n”);printf(“

*

2.添加学生记录

*n”);printf(“

*

3.修改学生记录

*n”);printf(“

*

4.删除学生记录

*n”);printf(“

*

5.按姓名或学号查询学生记录

*n”);printf(“

*

6.排序

*n”);printf(“

*

7.统计不同分数段的学生

*n”);printf(“

*

8.输出学生记录

*n”);printf(“

*

9.退出

*n”);printf(“

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ n”);printf(“

请选择(1-9):”);scanf(“%d”,&choice);getchar();switch(choice){ case 1:Student_Insert();break;case 2:Student_Insert();break;case 3:Student_Modify();break;case 4:Student_Delete();break;case 5:Student_Select();break;case 6:Student_SortByAverage();Student_Display();break;case 7:Student_TJ();break;case 8:Student_Display();break;} IO_WriteInfo();

} }

第三篇:C程序设计教学改革之趣味程序教学法

摘 要:c语言是一门通用的计算机程序设计语言,具有丰富的功能,表达力强,目标程序效果高,可移植性强的特点。许多中等职业学校和技工类学校的计算机类专业开设了c语言程序设计课程。但是近几年来,这门课程的教学都没有能取得良好的学习效果。本文重点介绍了如何通过采用趣味程序教学法,增加趣味实例的讲解和编程设计,培养学生对c语言的学习兴趣,以增强学生的学习效果。

关键词:c语言 学习兴趣 趣味程序 实例

一、教学过程中存在的问题及产生问题的原因

1.绝大部分学生文化基础差,开始学习时经常会产生厌倦感

c程序设计这门课程,一般在新生入学的第一个学期或第二学期就开设了,是学生接触的计算机编程的入门课程。这门课程结合了语言、算法、数据结构和程序设计方法等方面的知识。学生对着这些知识相当陌生,而且很多内容跟他们所熟悉的知识内容不相同,使他们经常感觉这些内容很难理解,枯燥无味,从而产生厌倦感。

2.对编程语言的学习方法不能适应

大部分学生在开始学习这门编程语言时,还是沿用了之前旧的学习方法,而这门新课程的内容是需要很好去记忆和注意的,他们就没能很好地掌握起来。

3.学生上课注意力不集中,上机实践课缺乏积极主动性

在理论课教学中,学生面对着课本上大量抽象概念的理论内容,就会出现注意力不集中的现象。而到上机操作环节,教师要学生自己编写一道程序,学生往往需要很久才会编出来,并且如果一个小程序由于错误运行不出,就马上放弃编程。有的学生看到编程题,就提不起精神去编写,一旦没有动手解决问题的欲望,就经常偷偷地玩游戏。

二、c语言设计课程教学建议

要解决上面所遇到的三种情况,教师在学生开始学习的时候就要指导他们这是一门新课程,在学习上要用新的学习方式来学习。在教学方式上,教师要尽量降低c语言的难度,在讲解理论知识点的过程中,增加一些趣味性的程序,使学生能从中学到知识。

1.从教学语言上提高趣味性

在课堂教学上,教师要使用趣味幽默的语言,接近生活。这样既激发学生的学习兴趣,又能引发学生积极思考和制造轻松的气氛,也能让学生轻松地接受知识,增强学习的兴趣和学习动机,从而也使学生接受这位老师。

2.增加趣味练习,提高学生的学习兴趣

兴趣是一个人力求认识和趋向某种客体的积极态度的个性倾向。培养学生学习兴趣,是提高课堂教学效果的重要途径。怎么从枯燥的c语言中解脱出来,让学生提高兴趣去学习呢? 我们可通过编写小游戏程序或与生活相关的程序来提高它的趣味性,这样程序设计就像电脑游戏一样充满好奇,富有乐趣。

(2)随着学习的深入,我们还可以编写其他有趣的程序。传统的讲授型教学方法是灌输式的,是能较好地保证所讲授知识的系统性,但学生的学习思维和学习的积极性都处在被动状态,达不到理想的教学效果。

为了使学生能够学习掌握课本中相关的知识,对编程产生的兴趣,在教学过程中,教师要先从对学生有意义的问题出发,然后在讲解的过程中,把产生的问题与实际的例子结合起来,让学生能够发现并找到解决的方法。在这种方法中,我们可以将这些现实问题与计算机语言结合到一起,降低问题难度,使得学生对c语言有了印象,从而提高了学习的兴趣,使处于被动状态的学习转为主动的学习。例如我们可以给学生演示一些简单地用c语言编写的图形或让学生利通scanf()和printf()这两个标准输入出函数编写短小的程序。这样可以增强程序的趣味性,同时可以提高学生的兴趣,使学生觉得这种的编程比较有趣。从“简单”开始,慢慢再加大学习难度。

每一个人对一些比较有趣的事情都是非常感兴趣的。在教学讲解实例的时候,我们可以适当地加入一些生活的例子,充分利用学生的好奇心,增强了他们学习程序语言的积极性。比如我们讲解循环语句时可以利用这样的例子。有三对情侣举行婚礼,三个新郎为a,b,c,三个新娘为x,y,z。有人不知道他们谁和谁结婚,于是询问了六位新人中的三位,但听到的回答是这样的:a说他将与x结婚;x说她的未婚夫是c;c说他将与z结婚。这人听后知道他们在开玩笑,全是假话。这里面,他到底谁跟谁结婚呢?

对于这样的问题,我们先把新郎a,b,c用1,2,3来表示。从题目的叙述中,我们可以得出下面的内容,a不与x结婚,即x≠1;x的未婚夫不是c,即x≠3;c不与z结婚,即z≠3;同时题意还隐含着x,y,z三个新娘不能结为配偶,则有:x≠y且x≠z且y≠z。

我们把问题变成普通的判断式,将式子写出来以后,可以利用列举法的推理运算列出所有可能出现的情况。

每一个循环表示每一个人都有三种可能性。在这所有的可能中,满足全部条件的两人即为情侣。这个例子既满足学生对问题的好奇心,又贴近生活,还能充分地说明c程序中循环结构,特别是多重循环的使用。这样既可以充分调动学生学习的积极性,将学生的从被动学习方式转换为主动学习方式,同时提高教学的质量,达到预期效果。这样的现象也叫自我效能感,让学生能够意识到计算机的编程语言是可以解决很多生活上的实际问题,因此也激发他们听课的兴趣。当然这样的例子还有很多,教师们要充分利用多媒体的功能,从不同的角度,不同的方面来提高教学的效果。

3.设计不同层次的编程实践环节,培养学生的动手能力

对于学生,要读懂一条程序并不是特别难,但是让他们自己根据问题来编写程序,很多学生就望而却步了。这时,我们就要根本学生的情况,设计编写一些适合他们的编程题目。比如说,我们在讲解条件分支语句时,我们可以利用生活中用来判定闰年的问题,来让学生自己分析判别的计算方法,找出判断方法后,用相应的语句来实现。分阶段地实现编程的内容,使得学生能品尝到阶段性的成功,增强学生攀登知识高峰的信心和勇气。

同时根据对学生知识掌握情况的了解,将学生进行搭配分组。在编写小规模程序时,学生自己可以通过相互间的讨论,对程序的每个部分进行分工,通力合作,最后完成整个程序的编写任务。这样促进不同层次学生的全面提高,也能培养学生如何将所学知识来应用到实际问题上,培养学生的互助互帮,团队合作的精神和集体观念。

教学方法是一门艺术,每个人所用的方法都不尽相同。教师不仅要懂得专业的知识,更重要的是要懂得如何把自己的专业知识传授给学生。c 语言的教学虽有一定难度,但要取得良好的教学效果,就要了解学生的心理,在各种不同教学方法的尝试下,找到符合学生实际的教学方法,采用多种形式与方法去激发学生的学习兴趣与学产动力,提高了教学的趣味性,这样学生才能很好地掌握和运用所学到的知识,就能收到良好的教学效果。

第四篇:《c语言程序设计新视角》第三章 程序语句小结

《c语言程序设计新视角》第三章 程序语句 小结 各种语句格式规则要对应;

三选择四循环语句记分明;

单、双选择用if;多路选择switch灵。初值、条件与增量,循环要素三并行。

do while做了再说;while判后再执行; for要摆明三要素,耍简约风格数它精。

continue和break,跳越不一般,远近要分清。

第五篇:电力系统潮流计算的MATLAB辅助程序设计,潮流计算程序

电力系统潮流计算的MATLAB辅助程序设计

潮流计算,通常指负荷潮流,是电力系统分析和设计的主要组成部分,对系统规划、安全运行、经济调度和电力公司的功率交换非常重要。此外,潮流计算还是其它电力系统分析的基础,比如暂态稳定,突发事件处理等。现代电力系统潮流计算的方法主要:高斯法、牛顿法、快速解耦法和MATLAB的M语言编写的MATPOWER4.1,这里主要介绍高斯法、牛顿法和快速解耦法。高斯法的程序是lfgauss,其与lfybus、busout和lineflow程序联合使用求解潮流功率。lfybus、busout和lineflow程序也可与牛顿法的lfnewton程序和快速解耦法的decouple程序联合使用。(读者可以到MATPOWER主页下载MATPOWER4.1,然后将其解压到MATLAB目录下,即可使用该软件进行潮流计算)

一、高斯-赛德尔法潮流计算使用的程序:

高斯-赛德法的具体使用方法读者可参考后面的实例,这里仅介绍各程序的编写格式: lfgauss:该程序是用高斯法对实际电力系统进行潮流计算,需要用到busdata和linedata两个文件。程序设计为输入负荷和发电机的有功MW和无功Mvar,以及节点电压标幺值和相角的角度值。根据所选复功率为基准值将负荷和发电机的功率转换为标幺值。对于PV节点,如发电机节点,要提供一个无功功率限定值。当给定电压过高或过低时,无功功率可能超出功率限定值。在几次迭代之后(高斯-塞德尔迭代为10次),需要检查一次发电机节点的无功出力,如果接近限定值,电压幅值进行上下5%的调整,使得无功保持在限定值内。

lfybus:这个程序需要输入线路参数、变压器参数以及变压器分接头参数。并将这些参数放在名为linedata的文件中。这个程序将阻抗转换为导纳,并得到节点导纳矩阵。

busout:该程序以表格形式输出结果,节点输出包括电压幅值和相角,发电机和负荷的有功和无功功率,以及并联电容器或电抗器的有功和无功功率。

lineflow:该程序输出线路的相关数据,程序设计输出流入线路终端的有功和无功的功率、线损以及节点功率,还包含整个系统的有功和无功损耗。

lfnewton是牛顿-拉夫逊法对实际电力系统潮流计算开发的程序,数据准备和程序格式和高斯-赛德尔法一样,包括程序lfybus,busout和lineflow。

decouple是快速解耦法对实际电力系统潮流计算开发的程序,同高斯法和牛顿法一样需要用到三个程序:lfybus、busout、lineflow。

二、数据准备

为了在MATLAB环境下用高斯法进行潮流计算,必须定义下列变量:基准功率,功率允许误差,加速因子和最大迭代次数。上述变量命名(小写字母)为:basemva、accuracy、accel和maxiter,一般规定为:basemva=100; accuracy=0.001;accel=1.6;maxiter=80;输入文件准备的第一步是给节点编号,节点号码必须是连续的,但节点数据输入不一定按顺序来编写。此外,还需要下列数据文件:

1.节点数据文件busdata:节点信息输入格式为单行输入,输入的数据形成一个矩阵,叫做busdata矩阵。第一列为节点号;第二列为节点类型;第三列和第四列分别为节点电压幅值(标幺值)和相角(单位为度);第五列和第六列分别为负荷的有功功率和无功功率;第七列到十列分别为发电机的有功功率、无功功率、最小无功出力和最大无功出力;最后一列为并联电容器注入无功功率。第二列的编码用0、1、2来区分PQ节点、平衡节点和PV节点:

0表示PQ节点,输入正的有功功率(MW)和无功功率(Mvar),并且要设定节点电压初始估计值,一般幅值和相角分别设为1和0,若已经给定初始值,则用其给定值来代替1和0。

1表示平衡节点,且已知该节点的电压幅值和相角。

2表示PV节点,要设定该节点的节点电压幅值和发电机的有功功率(MW),并设定发电机的无功最小出力和最大出力(Mvar)。

2.线路数据文件linedata线路数据用节点对的方法来确定,数据包含在称为linedata的矩阵中。第一列和第二列为节点号码,第三列到第五列为线路电阻、电抗及该线路电纳值的一半,以标幺值表示。最后一列为变压器分接头设定值,对线路来说,需要输入1。线路输入为无输入顺序,对变压器来说,左侧的节点号设为分接头端。

3.zdata是线路数据输入变量,包括四项,前两项是节点编号,后两项是线路电阻和电抗,均以标幺值表示,函数返回节点导纳矩阵。

三、潮流计算的MATLAB程序清单

1.lfgauss.m程序清单

% Power flow solution by Gauss-Seidel method Vm=0;delta=0;yload=0;deltad =0;nbus = length(busdata(:,1));kb=[];Vm=[];delta=[];Pd=[];Qd=[];Pg=[];Qg=[];Qmin=[];Qmax=[];Pk=[];P=[];Qk=[];Q=[];S=[];V=[];for k=1:nbus n=busdata(k,1);kb(n)=busdata(k,2);Vm(n)=busdata(k,3);delta(n)=busdata(k, 4);Pd(n)=busdata(k,5);Qd(n)=busdata(k,6);Pg(n)=busdata(k,7);Qg(n)= busdata(k,8);Qmin(n)=busdata(k, 9);Qmax(n)=busdata(k, 10);Qsh(n)=busdata(k, 11);if Vm(n)<= 0 Vm(n)= 1.0;V(n)= 1 + j*0;else delta(n)= pi/180*delta(n);V(n)= Vm(n)*(cos(delta(n))+ j*sin(delta(n)));P(n)=(Pg(n)-Pd(n))/basemva;Q(n)=(Qg(n)-Qd(n)+ Qsh(n))/basemva;S(n)= P(n)+ j*Q(n);end

DV(n)=0;end

num = 0;AcurBus = 0;converge = 1;Vc = zeros(nbus,1)+j*zeros(nbus,1);Sc = zeros(nbus,1)+j*zeros(nbus,1);

while exist('accel')~=1 accel = 1.3;end

while exist('accuracy')~=1 accuracy = 0.001;end

while exist('basemva')~=1 basemva= 100;end

while exist('maxiter')~=1 maxiter = 100;end

mline=ones(nbr,1);for k=1:nbr for m=k+1:nbr if((nl(k)==nl(m))&(nr(k)==nr(m)));mline(m)=2;elseif((nl(k)==nr(m))&(nr(k)==nl(m)));mline(m)=2;else, end end end

iter=0;maxerror=10;while maxerror >= accuracy & iter <= maxiter iter=iter+1;for n = 1:nbus;YV = 0+j*0;for L = 1:nbr;if(nl(L)== n & mline(L)== 1), k=nr(L);YV = YV + Ybus(n,k)*V(k);elseif(nr(L)== n & mline(L)==1), k=nl(L);YV = YV + Ybus(n,k)*V(k);end end

Sc = conj(V(n))*(Ybus(n,n)*V(n)+ YV);Sc = conj(Sc);DP(n)= P(n)imag(Sc);if kb(n)== 1 S(n)=Sc;P(n)= real(Sc);Q(n)= imag(Sc);DP(n)=0;DQ(n)=0;Vc(n)= V(n);elseif kb(n)== 2 Q(n)= imag(Sc);S(n)= P(n)+ j*Q(n);

if Qmax(n)~= 0 Qgc = Q(n)*basemva + Qd(n)0.005;DV(n)=DV(n)+.005;end else, end else,end else,end end

if kb(n)~= 1 Vc(n)=(conj(S(n))/conj(V(n))VcI^2);Vc(n)= VcR + j*VcI;V(n)= V(n)+ accel*(Vc(n)-V(n));end end

maxerror=max(max(abs(real(DP))), max(abs(imag(DQ))));if iter == maxiter & maxerror > accuracy fprintf('nWARNING: Iterative solution did not converged after ')fprintf('%g', iter), fprintf(' iterations.nn')fprintf('Press Enter to terminate the iterations and print the results n')converge = 0;pause, else, end

end

if converge ~= 1 tech=(' ITERATIVE SOLUTION DID NOT CONVERGE');else, tech=(' Power Flow Solution by Gauss-Seidel Method');end k=0;for n = 1:nbus Vm(n)= abs(V(n));deltad(n)= angle(V(n))*180/pi;if kb(n)== 1 S(n)=P(n)+j*Q(n);Pg(n)= P(n)*basemva + Pd(n);Qg(n)= Q(n)*basemva + Qd(n)Qsh(n);end

yload(n)=(Pd(n)-j*Qd(n)+j*Qsh(n))/(basemva*Vm(n)^2);end

Pgt = sum(Pg);Qgt = sum(Qg);Pdt = sum(Pd);Qdt = sum(Qd);Qsht = sum(Qsh);busdata(:,3)=Vm';busdata(:,4)=deltad';clear AcurBusDPDQDVLScVcVcIVcRYVconvergedelta

2.lfybus.m程序清单

% This program obtains the Bus Admittance Matrix for power flow solution j=sqrt(-1);i = sqrt(-1);nl = linedata(:,1);nr = linedata(:,2);R = linedata(:,3);X = linedata(:,4);Bc = j*linedata(:,5);a = linedata(:, 6);nbr=length(linedata(:,1));nbus = max(max(nl), max(nr));Z = R + j*X;y= ones(nbr,1)./Z;%支路导纳 for n = 1:nbr if a(n)<= 0 a(n)= 1;elseend

Ybus=zeros(nbus,nbus);% 将Ybus初始化为0 %非对角元素的数值

Ybus(nl(k),nr(k))=Ybus(nl(k),nr(k))-y(k)/a(k);Ybus(nr(k),nl(k))=Ybus(nl(k),nr(k));end end

% 对角元素的数值 for n=1:nbus for k=1:nbr if nl(k)==n Ybus(n,n)= Ybus(n,n)+y(k)/(a(k)^2)+ Bc(k);elseif nr(k)==n Ybus(n,n)= Ybus(n,n)+y(k)+Bc(k);else, end end end

clear Pgg

3.busout.m程序清单

% This program prints the power flow solution in a tabulated form % on the screen.disp(tech)fprintf(' Maximum Power Mismatch = %g n', maxerror)fprintf(' No.of Iterations = %g nn', iter)head =[' Bus Voltage Angle------Load---------Generation---Injected' ' No.Mag.Degree MW Mvar MW Mvar Mvar ' ' '];disp(head)for n=1:nbus fprintf(' %5g', n), fprintf(' %7.3f', Vm(n)), fprintf(' %8.3f', deltad(n)), fprintf(' %9.3f', Pd(n)), fprintf(' %9.3f', Qd(n)), fprintf(' %9.3f', Pg(n)), fprintf(' %9.3f ', Qg(n)), fprintf(' %8.3fn', Qsh(n))end

fprintf(' n'), fprintf(' Total ')fprintf(' %9.3f', Pdt), fprintf(' %9.3f', Qdt), fprintf(' %9.3f', Pgt), fprintf(' %9.3f', Qgt), fprintf(' %9.3fnn', Qsht)

4.lineflow.m程序清单

% This program is used in conjunction with lfgauss or lfNewton % for the computation of line flow and line losses.SLT = 0;fprintf('n')fprintf(' Line Flow and Losses nn')fprintf('--Line--Power at bus & line flow--Line loss--Transformern')fprintf('from to MW Mvar MVA MW Mvar tapn')for n = 1:nbus busprt = 0;for L = 1:nbr;if busprt == 0 fprintf(' n'), fprintf('%6g', n), fprintf(' %9.3f', P(n)*basemva)fprintf('%9.3f', Q(n)*basemva), fprintf('%9.3fn', abs(S(n)*basemva))

busprt = 1;else, end

if nl(L)==n k = nr(L);In =(V(n)V(n)/a(L))*y(L)+ Bc(L)*V(k);Snk = V(n)*conj(In)*basemva;Skn = V(k)*conj(Ik)*basemva;SL = Snk + Skn;SLT = SLT + SL;elseif nr(L)==n k = nl(L);In =(V(n)a(L)*V(n))*y(L)/a(L)^2 + Bc(L)/a(L)^2*V(k);Snk = V(n)*conj(In)*basemva;Skn = V(k)*conj(Ik)*basemva;SL = Snk + Skn;SLT = SLT + SL;else, end

if nl(L)==n | nr(L)==n fprintf('%12g', k), fprintf('%9.3f', real(Snk)), fprintf('%9.3f', imag(Snk))fprintf('%9.3f', abs(Snk)), fprintf('%9.3f', real(SL)), if nl(L)==n & a(L)~= 1 fprintf('%9.3f', imag(SL)), fprintf('%9.3fn', a(L))else, fprintf('%9.3fn', imag(SL))end

else, end end end

SLT = SLT/2;fprintf(' n'), fprintf(' Total loss ')fprintf('%9.3f', real(SLT)), fprintf('%9.3fn', imag(SLT))clear IkInSLSLTSknSnk

5.lfnewton.m程序清单

%Power flow solution by Newton-Raphson method ns=0;ng=0;Vm=0;delta=0;yload=0;deltad=0;nbus = length(busdata(:,1));kb=[];Vm=[];delta=[];Pd=[];Qd=[];Pg=[];Qg=[];Qmin=[];Qmax=[];Pk=[];P=[];Qk=[];Q=[];S=[];V=[];for k=1:nbus n=busdata(k,1);kb(n)=busdata(k,2);Vm(n)=busdata(k,3);delta(n)=busdata(k, 4);Pd(n)=busdata(k,5);Qd(n)=busdata(k,6);Pg(n)=busdata(k,7);Qg(n)= busdata(k,8);Qmin(n)=busdata(k, 9);Qmax(n)=busdata(k, 10);Qsh(n)=busdata(k, 11);if Vm(n)<= 0 Vm(n)= 1.0;V(n)= 1 + j*0;else delta(n)= pi/180*delta(n);V(n)= Vm(n)*(cos(delta(n))+ j*sin(delta(n)));P(n)=(Pg(n)-Pd(n))/basemva;Q(n)=(Qg(n)-Qd(n)+ Qsh(n))/basemva;S(n)= P(n)+ j*Q(n);end end

for k=1:nbus if kb(k)== 1, ns = ns+1;else, end if kb(k)== 2 ng = ng+1;else, end ngs(k)= ng;nss(k)= ns;end

Ym=abs(Ybus);t = angle(Ybus);m=2*nbus-ng-2*ns;maxerror = 1;converge=1;iter = 0;

mline=ones(nbr,1);for k=1:nbr for m=k+1:nbr if((nl(k)==nl(m))&(nr(k)==nr(m)));mline(m)=2;elseif((nl(k)==nr(m))&(nr(k)==nl(m)));mline(m)=2;else, end end end

%雅可比矩阵 clear ADCJDX

while maxerror >= accuracy & iter <= maxiter for ii=1:m for k=1:m A(ii,k)=0;%初始化雅可比矩阵 end, end

iter = iter+1;for n=1:nbus nn=n-nss(n);lm=nbus+n-ngs(n)-nss(n)-ns;J11=0;J22=0;J33=0;J44=0;for ii=1:nbr if mline(ii)==1 if nl(ii)== n | nr(ii)== n if nl(ii)== n , l = nr(ii);end if nr(ii)== n , l = nl(ii);end

J11=J11+ Vm(n)*Vm(l)*Ym(n,l)*sin(t(n,l)-delta(n)+ delta(l));J33=J33+ Vm(n)*Vm(l)*Ym(n,l)*cos(t(n,l)-delta(n)+ delta(l));if kb(n)~=1 J22=J22+ Vm(l)*Ym(n,l)*cos(t(n,l)-delta(n)+ delta(l));J44=J44+ Vm(l)*Ym(n,l)*sin(t(n,l)-delta(n)+ delta(l));else, end

if kb(n)~= 1 & kb(l)~=1 lk = nbus+l-ngs(l)-nss(l)-ns;ll = l-nss(l);% J1的非对角元素

A(nn, ll)=-Vm(n)*Vm(l)*Ym(n,l)*sin(t(n,l)-delta(n)+ delta(l));if kb(l)== 0 % J2的非对角元素 A(nn, lk)=Vm(n)*Ym(n,l)*cos(t(n,l)-delta(n)+ delta(l));end if kb(n)== 0 % J3的非对角元素

A(lm, ll)=-Vm(n)*Vm(l)*Ym(n,l)*cos(t(n,l)-delta(n)+delta(l));end

if kb(n)== 0 & kb(l)== 0 % J4的非对角元素

A(lm, lk)=-Vm(n)*Ym(n,l)*sin(t(n,l)-delta(n)+ delta(l));end elseend else , end else, end end

Pk = Vm(n)^2*Ym(n,n)*cos(t(n,n))+J33;Qk =-Vm(n)^2*Ym(n,n)*sin(t(n,n))-J11;if kb(n)== 1 P(n)=Pk;Q(n)= Qk;end% Swing bus P if kb(n)== 2 Q(n)=Qk;if Qmax(n)~= 0 Qgc = Q(n)*basemva + Qd(n)0.01;end else, end else,end else,end end

if kb(n)~= 1 A(nn,nn)= J11;% J1对角元素 DC(nn)= P(n)-Pk;end

if kb(n)== 0 A(nn,lm)= 2*Vm(n)*Ym(n,n)*cos(t(n,n))+J22;% J2对角元素 A(lm,nn)= J33;% J3对角元素

A(lm,lm)=-2*Vm(n)*Ym(n,n)*sin(t(n,n))-J44;% J4对角元素 DC(lm)= Q(n)-Qk;end end

DX=ADC';for n=1:nbus nn=n-nss(n);lm=nbus+n-ngs(n)-nss(n)-ns;if kb(n)~= 1 delta(n)= delta(n)+DX(nn);end if kb(n)== 0 Vm(n)=Vm(n)+DX(lm);end end

maxerror=max(abs(DC));if iter == maxiter & maxerror > accuracy fprintf('nWARNING: Iterative solution did not converged after ')fprintf('%g', iter), fprintf(' iterations.nn')fprintf('Press Enter to terminate the iterations and print the results n')converge = 0;pause, else, end

end

if converge ~= 1 tech=(' ITERATIVE SOLUTION DID NOT CONVERGE');else, tech=(' Power Flow Solution by Newton-Raphson Method');end

V = Vm.*cos(delta)+j*Vm.*sin(delta);deltad=180/pi*delta;i=sqrt(-1);k=0;for n = 1:nbus if kb(n)== 1 k=k+1;S(n)= P(n)+j*Q(n);Pg(n)= P(n)*basemva + Pd(n);Qg(n)= Q(n)*basemva + Qd(n)Qsh(n);Pgg(k)=Pg(n);Qgg(k)=Qg(n);end

yload(n)=(Pd(n)-j*Qd(n)+j*Qsh(n))/(basemva*Vm(n)^2);end

busdata(:,3)=Vm';busdata(:,4)=deltad';Pgt = sum(Pg);Qgt = sum(Qg);Pdt = sum(Pd);Qdt = sum(Qd);Qsht = sum(Qsh);

6.decouple.m程序清单

% Fast Decoupled Power Flow Solution ns=0;Vm=0;delta=0;yload=0;deltad=0;nbus = length(busdata(:,1));kb=[];Vm=[];delta=[];Pd=[];Qd=[];Pg=[];Qg=[];Qmin=[];Qmax=[];Pk=[];P=[];Qk=[];Q=[];S=[];V=[];for k=1:nbus n=busdata(k,1);kb(n)=busdata(k,2);Vm(n)=busdata(k,3);delta(n)=busdata(k, 4);Pd(n)=busdata(k,5);Qd(n)=busdata(k,6);Pg(n)=busdata(k,7);Qg(n)= busdata(k,8);Qmin(n)=busdata(k, 9);Qmax(n)=busdata(k, 10);Qsh(n)=busdata(k, 11);if Vm(n)<= 0 Vm(n)= 1.0;V(n)= 1 + j*0;else delta(n)= pi/180*delta(n);V(n)= Vm(n)*(cos(delta(n))+ j*sin(delta(n)));P(n)=(Pg(n)-Pd(n))/basemva;Q(n)=(Qg(n)-Qd(n)+ Qsh(n))/basemva;S(n)= P(n)+ j*Q(n);end

if kb(n)== 1, ns = ns+1;else, end nss(n)= ns;end

Ym = abs(Ybus);t = angle(Ybus);ii=0;for ib=1:nbus if kb(ib)== 0 | kb(ib)== 2 ii = ii+1;jj=0;for jb=1:nbus if kb(jb)== 0 | kb(jb)== 2 jj = jj+1;B1(ii,jj)=imag(Ybus(ib,jb));else,end end

else, end end

ii=0;for ib=1:nbus if kb(ib)== 0 ii = ii+1;jj=0;for jb=1:nbus if kb(jb)== 0 jj = jj+1;B2(ii,jj)=imag(Ybus(ib,jb));else,end end

else, end end

B1inv=inv(B1);B2inv = inv(B2);

maxerror = 1;converge = 1;iter = 0;

mline=ones(nbr,1);for k=1:nbr for m=k+1:nbr if((nl(k)==nl(m))&(nr(k)==nr(m)));mline(m)=2;elseif((nl(k)==nr(m))&(nr(k)==nl(m)));mline(m)=2;else, end end end

% 开始迭代

while maxerror >= accuracy & iter <= maxiter % 检验不平衡功率 iter = iter+1;id=0;iv=0;for n=1:nbus nn=n-nss(n);J11=0;J33=0;for ii=1:nbr if mline(ii)==1 if nl(ii)== n | nr(ii)== n if nl(ii)== n, l = nr(ii);end if nr(ii)== n, l = nl(ii);end

J11=J11+ Vm(n)*Vm(l)*Ym(n,l)*sin(t(n,l)-delta(n)+ delta(l));J33=J33+ Vm(n)*Vm(l)*Ym(n,l)*cos(t(n,l)-delta(n)+ delta(l));else , end else, end end

Pk = Vm(n)^2*Ym(n,n)*cos(t(n,n))+J33;Qk =-Vm(n)^2*Ym(n,n)*sin(t(n,n))-J11;if kb(n)== 1 P(n)=Pk;Q(n)= Qk;end% Swing bus P if kb(n)== 2 Q(n)=Qk;Qgc = Q(n)*basemva + Qd(n)0.005;end% the specified limits.else, end else,end else,end end

if kb(n)~= 1 id = id+1;DP(id)= P(n)-Pk;DPV(id)=(P(n)-Pk)/Vm(n);end

if kb(n)== 0 iv=iv+1;DQ(iv)= Q(n)-Qk;DQV(iv)=(Q(n)-Qk)/Vm(n);end end

Dd=-B1DPV';DV=-B2DQV';id=0;iv=0;for n=1:nbus if kb(n)~= 1 id = id+1;delta(n)= delta(n)+Dd(id);end if kb(n)== 0 iv = iv+1;Vm(n)=Vm(n)+DV(iv);end end

maxerror=max(max(abs(DP)),max(abs(DQ)));if iter == maxiter & maxerror > accuracy fprintf('nWARNING: Iterative solution did not converged after ')fprintf('%g', iter), fprintf(' iterations.nn')fprintf('Press Enter to terminate the iterations and print the results n')converge = 0;pause, else, end

end

if converge ~= 1 tech=(' ITERATIVE SOLUTION DID NOT CONVERGE');else, tech=(' Power Flow Solution by Fast Decoupled Method');end k=0;V = Vm.*cos(delta)+j*Vm.*sin(delta);deltad=180/pi*delta;clear A;clear DC;clear DX i=sqrt(-1);for n = 1:nbus if kb(n)== 1 S(n)=P(n)+j*Q(n);Pg(n)= P(n)*basemva + Pd(n);Qg(n)= Q(n)*basemva + Qd(n)Qsh(n);k=k+1;Pgg(k)=Pg(n);end

yload(n)=(Pd(n)-j*Qd(n)+j*Qsh(n))/(basemva*Vm(n)^2);end

busdata(:,3)=Vm';busdata(:,4)=deltad';Pgt = sum(Pg);Qgt = sum(Qg);Pdt = sum(Pd);Qdt = sum(Qd);Qsht = sum(Qsh);clear PkQkDPDQJ11J33B1B1invB2B2invDPVDQVDddeltaibidiiivjbjj

四、30节点电力系统计算实例

潮流计算时,必须将前面的六个程序保存在MATLAB目录下格式为.m的文件,然后在MATLAB的命令窗口输入如下命令: clear basemva = 100;accuracy = 0.001;accel = 1.8;maxiter = 100;% 30节点电力系统

% 母线--母线 电压 相角 负载 发电机 注入功率

% 编号节点 幅值 角度有功 无功有功 无功 无功最小值 无功最大值 无功 busdata=[1 1 1.06 0.0 0.0 0.0 0.0 0.0 0 0 0 2 2 1.043 0.0 21.70 12.7 40.0 0.0-40 50 0 3 0 1.0 0.0 2.4 1.2 0.0 0.0 0 0 0 4 0 1.06 0.0 7.6 1.6 0.0 0.0 0 0 0 5 2 1.01 0.0 94.2 19.0 0.0 0.0-40 40 0 6 0 1.0 0.0 0.0 0.0 0.0 0.0 0 0 0 7 0 1.0 0.0 22.8 10.9 0.0 0.0 0 0 0 8 2 1.01 0.0 30.0 30.0 0.0 0.0-30 40 0 9 0 1.0 0.0 0.0 0.0 0.0 0.0 0 0 0 10 0 1.0 0.0 5.8 2.0 0.0 0.0-6 24 19 11 2 1.082 0.0 0.0 0.0 0.0 0.0 0 0 0 12 0 1.0 0 11.2 7.5 0 0 0 0 0 13 2 1.071 0 0 0.0 0 0-6 24 0 14 0 1 0 6.2 1.6 0 0 0 0 0 15 0 1 0 8.2 2.5 0 0 0 0 0 16 0 1 0 3.5 1.8 0 0 0 0 0 17 0 1 0 9.0 5.8 0 0 0 0 0 18 0 1 0 3.2 0.9 0 0 0 0 0 19 0 1 0 9.5 3.4 0 0 0 0 0 20 0 1 0 2.2 0.7 0 0 0 0 0 21 0 1 0 17.5 11.2 0 0 0 0 0 22 0 1 0 0 0.0 0 0 0 0 0 23 0 1 0 3.2 1.6 0 0 0 0 0 24 0 1 0 8.7 6.7 0 0 0 0 4.3 25 0 1 0 0 0.0 0 0 0 0 0 26 0 1 0 3.5 2.3 0 0 0 0 0 27 0 1 0 0 0.0 0 0 0 0 0 28 0 1 0 0 0.0 0 0 0 0 0 29 0 1 0 2.4 0.9 0 0 0 0 0 30 0 1 0 10.6 1.9 0 0 0 0 0];% 线路数据

% bus bus R X 1/2 B 1 for lines linedata=[1 2 0.0192 0.0575 0.02640 1 1 3 0.0452 0.1852 0.02040 1 2 4 0.0570 0.1737 0.01840 1 3 4 0.0132 0.0379 0.00420 1 2 5 0.0472 0.1983 0.02090 1 2 6 0.0581 0.1763 0.01870 1 4 6 0.0119 0.0414 0.00450 1 5 7 0.0460 0.1160 0.01020 1 6 7 0.0267 0.0820 0.00850 1 6 8 0.0120 0.0420 0.00450 1 6 9 0.0 0.2080 0.0 0.978 6 10 0.5560 0 0.969 9 11 0.2080 0 1 9 10 0.1100 0 1 4 12 0.2560 0 0.932 12 13 0.1400 0 1 12 14.1231.2559 0 1 12 15.0662.1304 0 1 12 16.0945.1987 0 1 14 15.2210.1997 0 1 16 17.0824.1923 0 1 15 18.1073.2185 0 1 18 19.0639.1292 0 1 19 20.0340.0680 0 1 10 20.0936.2090 0 1 10 17.0324.0845 0 1 10 21.0348.0749 0 1 10 22.0727.1499 0 1 21 22.0116.0236 0 1 15 23.1000.2020 0 1 22 24.1150.1790 0 1 23 24.1320.2700 0 1 24 25.1885.3292 0 1 25 26.2544.3800 0 1 25 27.1093.2087 0 1 28 27 0.3960 0 0.968 27 29.2198.4153 0 1 27 30.3202.6027 0 1 29 30.2399.4533 0 1 8 28.0636.2000 0.0214 1 6 28.0169.0599 0.065 1];最后运行程序输入以下命令: lfybus % 形成节点导纳矩阵 lfgauss % 高斯-赛德尔法潮流计算 busout % 屏幕显示潮流计算结果 lineflow % 计算并显示线路潮流和损耗

将lfgauss变为lfnewton/decouple,即可使用牛顿-拉夫逊法/快速解耦法进行潮流计算,输入以上4个命令行后,即可得到潮流计算结果:

下载探讨结构化程序设计主要强调的是程序(精选五篇)word格式文档
下载探讨结构化程序设计主要强调的是程序(精选五篇).doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    2013河南省公务员面试形式:结构化面试(什么是结构化面试)

    2013河南省公务员面试形式:结构化面试(什么是结构化面试) 什么是结构化面试 结构化面试是公务员面试中使用最早、采用频率最高的面试形式。迄今为止,公务员面试所采用的形式主要......

    2018国家公务员面试备考:什么是结构化面试(5篇)

    2018国家公务员面试备考:什么是结构化面试 2018国家公务员考试成绩即将公布,国考成绩公布后,2018国家公务员面试也即将开始。进入公务员面试后如何有效备考?华图面试班教学如何?......

    典型的“结构化定增”是如何操作的?

    2014年6月20日,中国证监会发布《关于上市公司实施员工持股计划试点的指导意见》,该意见出台的目的是使上市公司员工与股东形成利益共同体,提高上市公司的凝聚力和竞争力。 该《......

    什么是好的程序

    什么是好的程序员?是不是懂得很多技术细节?还是懂底层编程?还是编程速度比较快? 我觉得都不是。对于一些技术细节来说和底层的技术,只要看帮助,查资料就能找到,对 于速度快,只要编得......

    《c语言程序设计新视角》第二章程序中的数据小结

    《c语言程序设计新视角》第二章程序中的数据 小结 数据类型自己选, 大小长度不一般; 数据可以混合算, 注意类型会改变; 常量直接拿来用, 遇到变量分单元。......

    《c语言程序设计新视角》第十章 程序调试及测试小结

    《c语言程序设计新视角》第十章 程序调试及测试 小结 调试前测试样例设计要费思忖, 输入是什么输出有哪些,事前要确认, 正常、异常、边界情形要想周全, 认真仔细达到要求才能完......

    商业承兑汇票结算程序是怎样

    赢了网s.yingle.com 遇到保险纠纷问题?赢了网律师为你免费解惑!访问>>http://s.yingle.com 商业承兑汇票结算程序是怎样 商业汇票相关知识,你了解吗?商业汇票有两种,商业承兑汇......

    办理结婚登记的程序是怎样的

    赢了网s.yingle.com 遇到婚姻法问题?赢了网律师为你免费解惑!访问>>http://s.yingle.com 办理结婚登记的程序是怎样的 办理了结婚登记,两人就成为法律上的夫妻,受到婚姻法的保......