东南大学数据结构实验报告电气工程学院王磊实验三.docxVIP

东南大学数据结构实验报告电气工程学院王磊实验三.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
东南大学数据结构实验报告电气工程学院王磊实验三

导纳矩阵的处理 侯创 2012/11/23 需求分析 程序功能 读取任意规模大小的节点与线路矩阵,读取各个数据,对数据这个数据组进行分析求解,进而求出导纳矩阵,并提供对于支路的查找功能。 输入输出要求 为测试方便,本测试程序已在main函数中将所有需要测试的数据写入,直接运行即可。节点导纳矩阵采用的储存方式为稀疏矩阵常用的3元组储存方式,并提供全矩阵显示。 测试数据 见工程文件夹内部4个txt文件 概要设计 数据结构 数据读取部分采用struct结构体形式读取数据,并将读取数据显示。 Struct bus 结构体 元素包含所有bus内元素 Struct branch 结构体内部 除branch数据外包含作者设计为了计算导纳矩阵的三个数据,分别为支路前测接地导纳,支路导纳,和后侧接地导纳。 整体存储使用邻接表,每个节点都作为一个头结点,向下分别链表指向所关联的节点,同时在下一个节点存储节点和支路数据。 各个模块 读取数据模块,包括函数read_bus和read_branch. 寻找模块。包括search_branch和search_bus 处理模块函数胃药分为处理支路导纳,和统计节点自导纳,统计节点互导纳。 并形成稀疏矩阵的三元组。 模块关系 读取模块 寻找模块 图处理模块 稀疏矩阵处理模块 导纳计算 详细设计 读取数据 对于节点矩阵与支路矩阵,因数据格式已经知道,所以设置结构体,对于多节点数据以结构体接受数据,已结构体数组存储。比较简单不再详述。 寻找模块 因数据已经读取进入,所以要求用户输入节点或者支路名称,进行寻找,找到返回节点或者支路数据,如未找到,返回该元素不存在。 图的生成 所有节点数据与支路数据均 存储在结构体数组中,所以构成图,我采用邻接表生成方法,所有头结点仅存储节点,每个头结点形成链表,每个链表的每个子节点里面包含节点数据和支路数据。便于数据分析。与导纳矩阵形成 计算导纳矩阵 首先计算各个支路的前接地导纳,后接地导纳,连接导纳, 在计算各个连接支路导纳 将形成的导纳存储至三元组数组。 矩阵输出与字符寻找 因三元组生成时未使用顺序方法放入,如采用pos num方法,写寻找函数。那么就需要将三元组二维排序,较为冗杂,所以本程序采用普通的顺序查找的方法,因本身为稀疏矩阵所以,复杂度很低。 调试分析 遇到问题 主要为一些语法错误,按照编译器提示修改即可 算法复杂度 图的生成时间复杂度O(n2)空间复杂度O(n2) 图的搜寻时间复杂度O(n) 计算函数时间复杂度O(n2) 使用说明及测试结果 本程序为避免操作错误,已经将所有检测项目内嵌于主程序内,观察即可得结果 可按照提示,按任意键,进行程序运行即可。 5节点矩阵,对于程序的每一部分均有详细介绍,对于14节点矩阵,仅是将3元组输出。 源程序 类的头文件 #includestring #include iostream using namespace std; struct elem//虚数结构体 { float real; float image; }; struct branch//支路结构体 { int Former; int Next; string Name; int Type; float R; float X; float B; float K; elem front0;//前对地导纳 elem linked;//连接导纳 elem lated0;//后对地导纳 }; struct bus//节点 { int Id; string Name; int Type; float V; float cita; float LP; float LQ; }; struct node { struct bus* data; struct branch* link; struct node* next; }; struct gpnode { struct bus* data; struct node* next; }; struct three_elem { int X_i; int Y_j; elem Y; }; class Current_Calu { public: Current_Calu(); void read_bus (int,char*); void read_branch(int,char*); void creat_Current_Graph (); void search_bus (string); void search_branch (string);

文档评论(0)

haihang2017 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档