ImageVerifierCode 换一换
格式:DOC , 页数:34 ,大小:481.50KB ,
资源ID:8796028      下载积分:10 金币
验证码下载
登录下载
邮箱/手机:
图形码:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/8796028.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请。


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(数据库与数据结构实验三电力网络信息存储及导纳矩阵的处理.doc)为本站上传会员【s4****5z】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

数据库与数据结构实验三电力网络信息存储及导纳矩阵的处理.doc

1、 数据结构与数据库实验 仅供参考 实验三 电力网络信息存储及导纳矩阵处理 实验名称: 电力网络信息存储及导纳矩阵处理 专 业: 电气工程 姓 名: 学 号: 电力网络信息存储及导纳矩阵处理 一、 实验要求 (1) 网络数据输入的内容包括节点信息和支路信息 (2) 可适合任意规模的网络 (3) 可查询节点、支路信息(根据节点名或支路名)

2、 (4) 形成导纳矩阵及输出 (5) 导纳矩阵稀疏处理 (6) 基于导纳矩阵的稀疏表示,获取 Yij (7) 测试数据 IEEE 5 节点网络 (8)选作内容 IEEE 14 节点网络。 二、 概要设计 1.采用的数据结构的定义及主要功能模块的功能: Ø 在本实验中,导纳矩阵数据的输入采用文件流方式的读方式建立,输出采用文件流写方式输出,导纳矩阵数据的存储采用邻接表存储方式。为了适合任意规模的网络,导纳矩阵的建立采用动态创建方式,存储的物理结构为非连续存储,稀疏矩阵的压缩处理采用邻接表和三元组。对于矩阵的存储节点类以及支路信息节点类采用结构体template

3、me NameType,typename BDataType>struct BusNode和template structBranchNode 定义,节点链表类为template struct SBusNode,支路节点链表类template struct SBranchNode,稀疏矩阵三元组

4、类templatestruct Twice,邻接表头指针节点类templatestruct YNode,邻接表next域节点类templatestruct YYNode,以上全为结构体定义,方便调用,稀疏矩阵采用模板类template class Matrix。计算导纳模块牵涉到复数的运算,所以采用自定义复数类class Complex,并重载了+、+=、/、/=以及插入符<<

5、等。 Ø 矩阵的建立分为节点信息矩阵的建立void CreatBusM(int n,int d[],char*filename)和支路信息矩阵的建立void CreatBranchM(int n,int d[],char*filename),相应的输出分为节点的输出void PrintBus()和支路信息的输出void PrintBranch(),输出的形式与文件中数据的存储形式类似。节点自导纳的创建分为稀疏矩阵的创建CreatSparseMatrix(int d[])以及压缩矩阵的创建MatrixY(int d[]),导纳矩阵输出为复数的输出,在复数类中重载了输出<<符,ostream&o

6、perator<<(ostream& out,Complex&c) ,输出的形式分为两种,一种是矩阵形式输出,一种是只打印非零值的输出。 Ø 为了更好地体现类的封装性,在本实验中采用调用函数和执行函数分离的方式,可以使相关类的数据更加安全。如节点及支路信息的查询函数Search(),执行函数为支路查询函数void SearchBranch(int,int)和节点查询函数void SearchBus(int i,SBusNode*BS),它们是私有函数,而在计算导纳时,真正的执行函数是void CaculateY(int,int),vo

7、id Caculate()是用来调用它的接口函数。避免类的内容被篡改,使类的内容更加安全。 2、各个结构体及类的声明及其功能如下: 1、节点模板: template struct BusNode//节点 {//I: 节点编号 //Name:名称 //Type:节点类型 1=PQ 2:PV 3:SlackBus //V: 电压幅值 //cita:电压角度 //LP: 负荷P //LQ: 负荷Q NameType name1; int I1; int type1;

8、 BDataType V; BDataType cita1; BDataType LP; BDataType LQ; //BusNode*next; }; template struct SBusNode//节点结点链表 { DataType data;//节点编号 BusNode*next; }; 2、支路节点模板: 、 template

9、NameType,typename BDataType>struct BranchNode//支路 { /*i: 支路的始端节点编号 j: 支路的末端节点编号 Name:支路名称 Type:类型, 2=变压器 1=线路 R: 电阻 X: 电抗 B: 线路总电纳(pai型等值电路) K: 变压器非标准变比 */ NameType name2; int I2;//行 int J2;//列 int type2; BDataType R; BDataType X; BDataType B; BDataType K;

10、 //BranchNode*next; }; template struct SBranchNode//支路结点链表 { DataType data;//支路编号 BranchNode*next; }; 3、稀疏矩阵节点模板类 templatestruct YYNode{ T C; int I3; int J3; // YYNode<

11、T> *next; //YYNode(){J3=0;next=NULL;} }; templatestruct YNode{ DataType data; YYNode *next; }; 4、三元组模板类 templatestruct Twice{//稀疏矩阵三元组类 T data; int row,col;//行号列号 }; 5、矩阵模板类: template

12、pe>class Matrix//稀疏矩阵 { private: Complex cc[14][14]; SBranchNode< NameType,BDataType,DataType>*branch;//支路结点链表头指针 SBusNode*bus;//节点结点链表头指针 YNode *y;//稀疏矩阵邻接表头结点 Twice *aa;//压缩稀疏矩阵三元组 // Twice *cc;;//稀疏矩阵三元组

13、 int nn;//节点个数 bool SearchBranch(int i,int j,SBranchNode*BS);//支路信息查询函数 void SearchBus(int i,SBusNode*BS); //节点信息查询函数 Complex CaculateY(int,int);//导纳Yij的计算函数 public: Matrix(){} ~Matrix(){ delete[]bus; delete[

14、]branch;//动态建立,要有自己的析构函数 } //BusNode SearchBus(int); // void SearchBranch(int,int); void CreatBusM(int n,int d[],char*filename);//创建节点信息矩阵 void CreatBranchM(int n,int d[],char*filename);//创建支路信息矩阵 void PrintBus();//输出接点信息 void PrintBranch();//输出支路信息 void Pri

15、ntY();//输出Yij的值 void PrintSparseMatrix();//打印稀疏矩阵 void Search();//查询函数 void MatrixY(int d[]);//邻接表 void PrintSMatrix();//打印矩阵 void PrintMatrix();//打印矩阵 void Caculate();//计算导纳的接口函数 void CreatSparseMatrix(int d[]);//创建导纳稀疏矩阵 }; 6、复数类: class Complex{ public: double real; d

16、ouble image; Complex(double r=0,double i=0){real=r;image=i;} ~Complex(){} Complex operator+(Complex); Complex operator+(double); Complex operator=(Complex); Complex operator/(double); Complex operator/=(Complex); void Print(Complex); void Print0(Complex,Complex); friend ostream

17、operator<<(ostream& out,Complex&c); }; 三、 详细设计 1、各主要模块的流程图: (1)文件流的读入: Ø 从文件中依次读入节点或支路信息,每读入一组数据,建立一个邻接表节点,读入的数据和节点的数据域一一对应,最终生成存储了所有从文件读入的电力网的节点和支路信息的邻接表。 文件流读入数据是否已读完 否 是 动态创建邻接表头结点 动态创建信息存储节点 以编号的节点为头节点创建链表 结束 2、创建导纳稀疏矩阵: 建立二维数组

18、 初始化为零 遍历支路信息的邻接表 计算相应支路的导纳值存入数组 3、稀疏矩阵的压缩处理: 建立节点编号的头结点链表 遍历支路信息的邻接表 为相应的支路建立存储节点 以相应的编号节点为头结点建立邻接表 3、导纳计算: 自导纳 i=j 从支路信息邻接表获取数据数据 将所有与i有关的互导纳相加,然后求其相反数,即为自导纳 互导纳 i!=j 根据数据域的电阻、电抗,将阻抗求倒数转换为导纳 判

19、断支路数据域的变比K是否为零 否 将转换后的导纳值除以变比获得相应支路的导纳值 四、 调试分析 测试数据的输出结果: (1) 下图初始选择界面,可根据需要选择005或者014,或者终止。 (2) 若输入除“a”、”b”、”$”以外的字符,系统提示错误,要求重新输入选择符。下图为输入“w”时的系统界面: (3) 输入a,选择005bus.txt 以及005branch.Txt 打印005bus信息以及005branch信息 打印导纳稀疏矩阵,并提示是否输出矩阵的非零值 (4) 打印非零数据 非零数据,包

20、括自导纳和互导纳 (5) 查询:查询节点信息或者支路信息 输入节点超出范围,提示 打印支路导纳值 若支路不存在,提示 打印支路信息 输入支路两端节点号 打印节点信息 输入节点编号 (6) 可以以“@“结束对005的查询,进入下一轮的选择,进入014 打印014bus信息 打印014branch的信息 (7)打印导纳矩阵 互导纳 自导纳 (9)查询节点和支路信息 源程序: 主程序 #include

21、include #include #include"Matrix.h" using namespace std; void run(){ Matrix m; int i; i=m.SBalance(); cout<<"balance"<

22、Please choose the Matrix you want to check . 005 (a) OR 014 (b) "<>a; while(a!='a'&& a!='b'&& a!='c'){ cout<<"ERROR.Please Try Again."<

23、>a; } if(a=='a'||a=='b'){ if(a=='b'){ cout<<"014bus"<

24、t<<"B1:"<>s1; if(s1=='y'||s1=='Y') m.MatrixY(d14); m.Search(); run(); return ; } if(a=='a'){

25、cout<<"005bus.txt"<

26、ntSparseMatrix(); cout<<"Print the non_zero value of the SparseMatrix. YES (y/Y) OR NOT (n/N)."<>s2; if(s2=='y'||s2=='Y') m.MatrixY(d5); m.Search(); run(); return ; } } if(a=='c') return; } int main(){ run(); return 0; } 头文件: #include

27、m> #include #include #include #include"Complex.h" using namespace std; #define max 14; template struct BusNode//节点 {//I: 节点编号 //Name:名称 //Type:节点类型 1=PQ 2:PV 3:SlackBus //V: 电压幅值 //cita:电压角度 //LP: 负荷P //LQ: 负荷Q

28、 NameType name1; int I1; int type1; BDataType V; BDataType cita1; BDataType LP; BDataType LQ; //BusNode*next; }; template struct BranchNode//支路 { /*i: 支路的始端节点编号 j: 支路的末端节点编号 Name:支路名称 Type:类型,2=变压器 1=线路 R: 电阻 X:

29、 电抗 B: 线路总电纳(pai型等值电路) K: 变压器非标准变比 */ NameType name2; int I2;//行 int J2;//列 int type2; BDataType R; BDataType X; BDataType B; BDataType K; //BranchNode*next; }; template struct SBusNode//节点结点链表 {

30、 DataType data;//节点编号 BusNode*next; }; template struct SBranchNode//支路结点链表 { DataType data;//支路编号 BranchNode*next; }; templatestruct YYNode{ T C; int I3; int J3; // YYNod

31、e *next; //YYNode(){J3=0;next=NULL;} }; templatestruct YNode{ DataType data; YYNode *next; }; templatestruct Twice{//稀疏矩阵三元组类 T data; int row,col;//行号列号 }; templatestruct BNode{ T data; }; template

32、ename BDataType,typename DataType>class Matrix//稀疏矩阵 { private: Complex cc[14][14]; SBranchNode< NameType,BDataType,DataType>*branch;//支路结点链表头指针 SBusNode*bus;//节点结点链表头指针 YNode *y;//稀疏矩阵邻接表头结点 Twice *aa;//压缩稀疏矩阵三元组

33、 BNode **B1; BNode **B2; // Twice *cc;;//稀疏矩阵三元组 int nn;//节点个数 bool SearchBranch(int i,int j,SBranchNode*BS);//支路信息查询函数 void SearchBus(int i,SBusNode*BS); //节点信息查询函数 Complex CaculateY(int,int);//导纳

34、Yij的计算函数 public: Matrix(){} ~Matrix(){ delete[]bus; delete[]branch;//动态建立,要有自己的析构函数 } //BusNode SearchBus(int); // void SearchBranch(int,int); void CreatBusM(int n,int d[],char*filename);//创建节点信息矩阵 void CreatBranchM(int n,int d[],char*filename

35、);//创建支路信息矩阵 void PrintBus();//输出接点信息 void PrintBranch();//输出支路信息 void PrintY();//输出Yij的值 void PrintSparseMatrix();//打印稀疏矩阵 void Search();//查询函数 void MatrixY(int d[]);//打印非零值 void PrintSMatrix();//打印矩阵 void PrintMatrix();//打印矩阵 void Caculate();//计算导纳的接口函数 void CreatS

36、parseMatrix(int d[]);//创建导纳稀疏矩阵 int SBalance(); int SPQ(int); void CreatB1(); void PrintB1(); void PrintB2(); }; template int Matrix::SBalance(){ int bal=0; BusNode*bb; int

37、 b; for(b=0;bnext; if(bb->type1==3)bal=bb->I1; } return bal; } template int Matrix::SPQ(int i){ int pq=0; BusNode*bb; int b; for(b=0;b

38、bus+b)->next; if(bb->I1==i)pq=bb->type1; } return pq; } template void Matrix::Search(){ ///查询节点、支路信息(根据节点名或支路名) cout<<"Search BUS (A/a) OR BRANCH (B/b) .Also this process can be ignored by entering @

39、"<>c; if(c=='A' ||c=='a'){ SBusNode*BS; BS=bus; int s; cout<<"Enter the number of the bus"<>s; SearchBus(s,BS); Search(); return; } if(c=='b'||c=='B'){ SBranchNode*BS; BS=branch;

40、 int i,j; cout<<"Enter the number of the branch"<>i>>j; SearchBranch(i,j,BS); Search(); return; } else return; return; } template void Matrix::CreatBusM(int n,int d[],char*filename

41、){ BusNode*b; int k; NameType name; int i; int type; BDataType v; BDataType cita; BDataType lp; BDataType lq; ifstream infile(filename,ios::in); nn=n; bus=new SBusNode[nn]; for(k=0;kdata=d[k];

42、 //cout<<"infile bus"<<'\t'<next=NULL; infile>>name>>i>>type>>v>>cita>>lp>>lq; b=new BusNode; b->name1=name; // cout<<"name"<<'\t'<I1=i; // cout<<"i"<<'\t'<type1=type; // cout<<"type"<<'\t

43、'<V=v; // cout<<"v"<<'\t'<cita1=cita; // cout<<"cita"<<'\t'<LP=lp; // cout<<"lp"<<'\t'<LQ=lq; // cout<<"lq"<<'\t'<next=b; /*b=new BusNode; b->name1=name; b->I1=i;

44、 b->type1=type; b->cita1=cita; b-LP=lp; b->LQ=lq; bus->next=b;*/ } return; } template void Matrix::SearchBus(int i,SBusNode*bs){ BusNode *BS;

45、 if(i<0||i>nn) { cout<<"OUT OF RANGE"<next; if((bs+k)->data==i){ cout<<"i"<<'\t'<<"name"<<'\t'<<"type"<<'\t'<<"V"<<'\t'<<"cita"<<'\t'<<"LP"<<'\t'<<"LQ"<I1<<'\t'<<"bus_"<name1<<'\t'<typ

46、e1<<'\t'<V<<'\t'<cita1<<'\t'<LP<<'\t'<LQ<void Matrix::PrintBus(){ BusNode*BS; int k; cout<<"i"<<'\t'<

47、<"name"<<'\t'<<"type"<<'\t'<<"V"<<'\t'<<"cita"<<'\t'<<"LP"<<'\t'<<"LQ"<next; cout<I1<<'\t'<<"bus_"<name1<<'\t'<type1<<'\t'<V<<'\t'<cita1<<'\t'<LP<<'\t'<LQ<

48、 } cout<void Matrix::CreatBranchM(int n,int d[],char*filename){ BranchNode*b; Complex c,a(0,0); //Complex cc[14][14]; int k; NameType name; int i,

49、j; int type; BDataType r; BDataType x; BDataType bb; BDataType kk; ifstream infile(filename,ios::in); nn=n; branch=new SBranchNode[nn]; // cc=new Twice[*nn]; //for(int r=0;r

50、h+k)->data=d[k]; // cout<<"infile bus"<<'\t'<next=NULL; infile>>i>>j>>name>>type>>r>>x>>bb>>kk; b=new BranchNode; b->I2=i; // cout<<"i"<<'\t'<J2=j; // cout<<"j"<<'\t'<name2=name; // cout<<"name"

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服