稀疏化形成节点导纳矩阵
- 格式:doc
- 大小:42.00 KB
- 文档页数:5
稀疏矩阵名词解释稀疏矩阵是指元素大多数为零的矩阵,它在许多实际应用中具有重要的作用。
本文将介绍稀疏矩阵的概念、性质和应用,以及与之相关的节点导纳矩阵和支路阻抗矩阵。
下面是本店铺为大家精心编写的4篇《稀疏矩阵名词解释》,供大家借鉴与参考,希望对大家有所帮助。
《稀疏矩阵名词解释》篇1一、稀疏矩阵的概念稀疏矩阵是指元素大多数为零的矩阵。
在稀疏矩阵中,只有少数元素是非零的,其余元素均为零。
稀疏矩阵通常用斯密斯 - 马克斯韦尔方程表示,其中零元素占据了大部分,非零元素则代表了某些特定的关系。
二、稀疏矩阵的性质稀疏矩阵具有以下性质:1. 稀疏矩阵的行数和列数很大,但非零元素的数量却很少。
2. 稀疏矩阵的存储空间比密排矩阵小得多,因此可以节省存储空间。
3. 稀疏矩阵的运算速度比密排矩阵快,尤其是在大规模矩阵运算时更为明显。
三、稀疏矩阵的应用稀疏矩阵在许多实际应用中具有重要的作用,如下所述:1. 电路分析:在电路分析中,稀疏矩阵被广泛用于求解电路中的电压和电流。
由于电路中存在大量的零元素,因此使用稀疏矩阵可以大大减少计算量。
2. 数据压缩:在数据压缩中,稀疏矩阵被用于压缩图像和音频数据。
由于图像和音频数据通常具有大量的零元素,因此使用稀疏矩阵可以大大减少数据量。
3. 线性代数:在线性代数中,稀疏矩阵被用于求解线性方程组。
由于稀疏矩阵的特殊结构,可以使用一些高效的算法来求解线性方程组。
四、节点导纳矩阵和支路阻抗矩阵与稀疏矩阵相关的两个重要概念是节点导纳矩阵和支路阻抗矩阵。
节点导纳矩阵是一个规模为 (n-1) 的平方矩阵,其中对角线元素为自导纳,即与节点直接连接的支路上的导纳之和。
互导纳是直接连接两个节点的各支路导纳之和的相反数。
支路阻抗矩阵是一个规模为 b 的平方矩阵,其中包含了每个支路的阻抗。
在纯阻抗网络中,支路阻抗矩阵的对角线元素为自阻抗,非对角线元素为互阻抗。
综上所述,稀疏矩阵是一种具有重要应用价值的矩阵,它可以用于电路分析、数据压缩、线性代数等领域。
稀疏矩阵的相关操作稀疏矩阵是指在一个矩阵中,大部分元素为0的矩阵。
由于大部分元素为0,而非零元素相对较少,稀疏矩阵的存储和处理具有一定的特殊性。
在实际应用中,经常需要对稀疏矩阵进行各种操作,如创建、存储、加法操作等。
本文将从这些方面详细介绍稀疏矩阵的相关操作。
首先,创建稀疏矩阵需要考虑两个关键因素:矩阵的大小和矩阵的稀疏性。
对于稀疏矩阵的大小,一般可以使用行数和列数来描述。
而对于稀疏矩阵的稀疏性,可以使用一个矩阵的非零元素个数与总元素个数的比值来衡量,一般使用稀疏度来表示,即非零元素个数与总元素个数的比值。
创建稀疏矩阵的方法有多种,下面介绍两种常见的方法。
1.压缩矩阵存储法:该方法将稀疏矩阵的非零元素和对应的行列坐标存储在一个矩阵中。
其中,矩阵的每一行存储一个非零元素的值、行和列坐标。
这种方法虽然节约了存储空间,但是在进行矩阵操作时,需要通过遍历矩阵找到对应的非零元素,因此操作效率较低。
2.链表存储法:该方法将稀疏矩阵的非零元素和对应的行列坐标存储在一个链表中。
链表的每个节点包含一个非零元素的值、行和列坐标,以及下一个非零元素的指针。
这种方法在插入和删除操作时比较方便,并且节约了存储空间。
但是,链表存储法在进行矩阵操作时,也需要通过遍历链表找到对应的非零元素,因此操作效率较低。
除了创建稀疏矩阵,还需要进行其他各种操作,如稀疏矩阵的加法、乘法、转置等。
稀疏矩阵的乘法操作较为复杂。
对于两个稀疏矩阵相乘,需要根据矩阵乘法的定义,将一个矩阵的行与另一个矩阵的列进行乘法运算,然后将结果相加得到最终的乘积矩阵。
由于稀疏矩阵的特殊性,可以采用稀疏矩阵乘法算法进行计算,提高乘法操作的效率。
1.三元组转置法:该方法将稀疏矩阵的非零元素和对应的行列坐标存储在三个数组中,分别是非零元素数组、行坐标数组和列坐标数组。
将这三个数组的元素进行转置,并重新组合成转置后的稀疏矩阵。
2.链表转置法:该方法将稀疏矩阵的非零元素和对应的行列坐标存储在链表中。
目录摘要 (2)1任务及题目要求 (2)2原理介绍 (3)2.1节点导纳矩阵 (3)2.2牛顿-拉夫逊法 (4)2.2.1牛顿-拉夫逊法基本原理 (4)2.2.2牛顿--拉夫逊法潮流求解过程介绍 (6)3分析计算 (11)4结果分析 (15)5总结 (16)参考资料 (17)节点导纳矩阵及潮流计算摘要电力网的运行状态可用节点方程或回路方程来描述。
节点导纳矩阵是以系统元件的等值导纳为基础所建立的、描述电力网络各节点电压和注入电流之间关系的线性方程。
潮流计算是电力系统分析中的一种最基本的计算,它的任务是对给定的运行条件确定系统的运行状态,如各母线上的电压(幅值及相角)、网络中的功率分布及功率损耗等。
本文就节点导纳矩阵和潮流进行分析和计算。
1任务及题目要求题目初始条件:如图所示电网。
1∠002阵Y;2+j13)给出潮流方程或功率方程的表达式;4)当用牛顿-拉夫逊法计算潮流时,给出修正方程和迭代收敛条件。
2原理介绍2.1节点导纳矩阵节点导纳矩阵既可根据自导纳和互导纳的定义直接求取,也可根据电路知识中找出改网络的关联矩阵,在节点电压方程的矩阵形式进行求解。
本章节我们主要讨论的是直接求解导纳矩阵。
根据节点电压方程章节我们知道,在利用电子数字计算机计算电力系统运行情况时,多采用IYV 形式的节点方程式。
其中阶数等于电力网络的节点数。
从而可以得到n 个节点时的节点导纳矩阵方程组:nn Y n +V (2-1) 由此可以得到n 个节点导纳矩阵:nn Y ⎫⎪⎪⎪⎪⎭它反映了网络的参数及接线情况,因此导纳矩阵可以看成是对电力网络电气特性的一种数学抽象。
由导纳短阵所了解的节点方程式是电力网络广泛应用的一种数学模型。
通过上面的讨论,可以看出节点导纳矩阵的有以下特点:(1)导纳矩阵的元素很容易根据网络接线图和支路参数直观地求得,形成节点导纳矩阵的程序比较简单。
(3)导纳矩阵是稀疏矩阵。
它的对角线元素一般不为零,但在非对角线元素中则存在不少零元素。
电力网络分析是电力系统分析的关键环节。
随着国民经济的不断提高,社会对电能质量的需求也越来越高。
电力系统分析的作用至关重要。
高等电力网络分析是通过归纳、总结、提升,抽象出电网分析中的共性问题,从更基础的层面来描述和解决电网分析问题。
此书把电力网络分为两部分来研究。
第一部分为基础篇,介绍电力网络分析的基本原理。
第二部分为应用篇,介绍潮流计算和故障分析。
第一部分电力网络分析基本原理一、电力网络分析的一般方法1.1网络分析概述电力网络包含两个要素:电气元件及其联接方式。
电力网络的运行特性的约束和元件之间联接关系的约束(拓扑约束)共同决定。
元件的特性约束由欧姆定律来描述:Ri=u, dLdt =u, 1Cidt=u.网络的拓扑约束由基尔霍夫定律来描述:基尔霍夫电流定律:I=0.基尔霍夫电压定律:V=0.有关电力系统分析计算问题包括状态估计、潮流计算、经济调度、故障分析、稳定计算等,这些问题既相互关联,又各有侧重点。
如状态估计可以为潮流计算提供良好的初值,而潮流计算则是经济调度、故障分析、稳定计算与系统控制的出发点。
网络分析是解决这些所有问题的共同基础。
研究一个特定的电力系统运行问题应当包括四个基本步骤:1、建立电力网络元件的数学模型;2、建立电力网络的数学模型;3、选择合理的数值计算方法;4、电力网络问题的计算机求解。
网络分析中常用的关联矩阵有:节-支关联矩阵、回-支关联矩阵、割-支关联矩阵。
1.2电力网络支路特性的约束一般支路如图:图1:一般支路元件的约束特性可用以下支路方程来表示:V k+E k =z k (I k +I sk )或I k +I sk =y k (V k +E k ) 把网络内所有支路方程集合在一起,引入电动势矢量和电流源矢量E S,I S . 可以得到网络的支路方程V b+E s =z b (I b +I s )或I b +I s =y b (V b +E s ) z b ,y b 为原始导纳矩阵和原始阻抗矩阵,若网络内所有的支路间不存在互感,z b ,y b 是对角阵,对角线元素既是相应的支路阻抗和支路导纳;若存在互感则z b 在相应于互感支路相关的位置上存在非零非对角线元素。
目录摘要 (2)1任务及题目要求 (2)2原理介绍 (3)节点导纳矩阵 (3)牛顿-拉夫逊法 (4)牛顿-拉夫逊法基本原理 (4)牛顿--拉夫逊法潮流求解过程介绍 (6)3分析计算 (11)4结果分析 (15)5总结 (16)参考资料 (17)节点导纳矩阵及潮流计算摘要电力网的运行状态可用节点方程或回路方程来描述。
节点导纳矩阵是以系统元件的等值导纳为基础所建立的、描述电力网络各节点电压和注入电流之间关系的线性方程。
潮流计算是电力系统分析中的一种最基本的计算,它的任务是对给定的运行条件确定系统的运行状态,如各母线上的电压(幅值及相角)、网络中的功率分布及功率损耗等。
本文就节点导纳矩阵和潮流进行分析和计算。
1任务及题目要求题目初始条件: 如图所示电网。
其元件导纳参数为:y 12=, y 23=, y 13=任务及要求:1)根据给定的运行条件,确定图2所示电力系统潮流计算时各节点的类型和待求量;2)求节点导纳矩阵Y ;1???2+j13)给出潮流方程或功率方程的表达式;4)当用牛顿-拉夫逊法计算潮流时,给出修正方程和迭代收敛条件。
2原理介绍节点导纳矩阵节点导纳矩阵既可根据自导纳和互导纳的定义直接求取,也可根据电路知识中找出改网络的关联矩阵,在节点电压方程的矩阵形式进行求解。
本章节我们主要讨论的是直接求解导纳矩阵。
根据节点电压方程章节我们知道,在利用电子数字计算机计算电力系统运行情况时,多采用IYV 形式的节点方程式。
其中阶数等于电力网络的节点数。
从而可以得到n 个节点时的节点导纳矩阵方程组:11112211211222221122n n n n nn n Y Y Y n Y Y Y n Y Y Y n +++=⎫⎪+++=⎪⎬⎪⎪+++=⎭V V V I V V V I V V VI (2-1) 由此可以得到n 个节点导纳矩阵:111212212212n n n n nn Y Y Y Y Y Y Y Y Y Y ⎛⎫⎪ ⎪= ⎪⎪⎝⎭? (2-2) 它反映了网络的参数及接线情况,因此导纳矩阵可以看成是对电力网络电气特性的一种数学抽象。
目录摘要 (2)1任务及题目要求 (2)2原理介绍 (3)2.1节点导纳矩阵 (3)2.2牛顿-拉夫逊法 (4)2.2.1牛顿-拉夫逊法基本原理 (4)2.2.2牛顿--拉夫逊法潮流求解过程介绍 (6)3分析计算 (10)4结果分析 (14)5总结 (15)参考资料 (16)节点导纳矩阵及潮流计算摘要电力网的运行状态可用节点方程或回路方程来描述。
节点导纳矩阵是以系统元件的等值导纳为基础所建立的、描述电力网络各节点电压和注入电流之间关系的线性方程。
潮流计算是电力系统分析中的一种最基本的计算,它的任务是对给定的运行条件确定系统的运行状态,如各母线上的电压(幅值及相角)、网络中的功率分布及功率损耗等。
本文就节点导纳矩阵和潮流进行分析和计算。
1任务及题目要求题目初始条件: 如图所示电网。
其元件导纳参数为:y 12=0.5-j3, y 23=0.8-j4, y 13=0.75-j2.5任务及要求:1)根据给定的运行条件,确定图2所示电力系统潮流计算时各节点的类型和待求量;1∠002+j12)求节点导纳矩阵Y ;3)给出潮流方程或功率方程的表达式;4)当用牛顿-拉夫逊法计算潮流时,给出修正方程和迭代收敛条件。
2原理介绍2.1节点导纳矩阵节点导纳矩阵既可根据自导纳和互导纳的定义直接求取,也可根据电路知识中找出改网络的关联矩阵,在节点电压方程的矩阵形式进行求解。
本章节我们主要讨论的是直接求解导纳矩阵。
根据节点电压方程章节我们知道,在利用电子数字计算机计算电力系统运行情况时,多采用IYV 形式的节点方程式。
其中阶数等于电力网络的节点数。
从而可以得到n 个节点时的节点导纳矩阵方程组:11112211211222221122n n n n nn n Y Y Y n Y Y Y n Y Y Y n +++=⎫⎪+++=⎪⎬⎪⎪+++=⎭V V V I V V V I V V V I L L L L (2-1)由此可以得到n 个节点导纳矩阵:111212212212n n n n nn Y Y Y Y Y Y Y Y Y Y ⎛⎫⎪ ⎪= ⎪⎪⎝⎭LL L L(2-2)它反映了网络的参数及接线情况,因此导纳矩阵可以看成是对电力网络电气特性的一种数学抽象。
第一章 导纳矩阵的计算简介1.1变压器的∏型等值电路在电力系统潮流计算中,往往要计算节点导纳矩阵,而我们计算节点导纳矩阵采用节点电压法来实现,如在变压器构成的电力系统中,需要将变压器模型转变成变压器∏型等值电路(见图1-1),在利用电路知识列节点电压方程,从而导出所需的导纳矩阵。
图1-1双绕组变压器的∏型等值电路(i ,j 为节点)而在电力系统潮流计算中一般采用标幺值进行计算,标幺值公式如下:=有名值(任意单位)标幺值基准值(与有名值同单位)如果采用标么值计算,元件参数都应归算到同一基准值时得标么值,才能在同一个等值电路上分析和计算。
所以,变压器转变成∏型等值电路时,我们采用标幺值计算,使所求参数为变压器变比k 的函数。
而在一个已经归算好的电力系统网中,若改变变压器的分接头来进行调压,这时变压器的等值电路参数也会相应得改变,此时采用∏型等值电路进行折算就显得较为方便。
下面是变压器的∏型等值电路分析过程:如不计励磁支路的影响,双绕组变压器可用其阻抗与一个理想变压器串联的电路表示,如图所示。
理想变压器只有一个参数,那就是变比k=12U U 。
现以变压器阻抗按实际变比归算到低压侧的情况为例,推导出双绕组变压器的∏型等值电路。
流入和流出理想变压器的功率相等:K:1 T Y ij ij2(1)T k Y k - (1)T k Y k- T Y k....1212/k U I U I = (1U 、2U 分别为变压器高、低绕组的实际电压) (1-1)..12/k I I = (1-2)联立(1-1)、(1-2)两个公式解得:.....1212122T k kZ k kT T T Y U Y U U U I Z =-=- (1-3) ....11222T k Z kT T T Y U U U I Y U Z •=-=- (1-4)根据《电路原理》节点1、2的节点电流方程具有如下形式:...1121112...2122122I Y U Y U I Y U Y U ⎫=+⎪⎬⎪-=+⎭ (1-5) 将式(1-3)、(1-4)与式(1-5)比较得(1-6):211T 12T 21T 12T Y Y /k Y Y /k Y Y /k Y Y ⎫=⎪=-⎪⎬=-⎪⎪=⎭ (1-6)因此可以的得到各支路导纳为1212T 2121T 2101112T T T 2202221T T T Y y Y /kY y Y /k 1k y Y y Y /k Y /k Y k k 1y Y y Y Y /k Y k =-=-⎫⎪=-=-⎪⎪-⎬=-=-=⎪⎪-=-=-=⎪⎭(1-7)1.2 节点电压方程在电路中我们已经学过利用节点电压方程来求解某几条支路的电流,现以下图1-2-1与图1-2-2为例推导节点电压方程组。
导纳矩阵稀疏度导纳矩阵是电力系统分析中常用的一种工具,用于描述电力系统中各个节点之间的电导和电纳关系。
导纳矩阵的稀疏度指的是矩阵中非零元素所占的比例,即非零元素的数量与矩阵总元素数量的比值。
稀疏度越高,矩阵中的非零元素越少,反之亦然。
导纳矩阵的稀疏度对电力系统分析具有重要的影响。
首先,稀疏矩阵具有较小的存储空间需求,可以节省计算机内存的使用。
对于大型电力系统而言,其节点数量庞大,如果导纳矩阵稀疏度较低,将占用大量的存储空间,影响计算效率。
而稀疏矩阵则可以大大减少存储空间的占用,提高计算效率。
稀疏矩阵在计算过程中可以利用矩阵的特殊结构进行优化。
对于稀疏矩阵而言,大部分元素为零,只有少数元素非零。
因此,在计算过程中可以直接忽略零元素,只考虑非零元素的计算。
这样可以减少计算量,提高计算速度。
而对于稠密矩阵而言,每个元素都需要进行计算,计算量相对较大。
稀疏矩阵的稀疏度与电力系统的拓扑结构有关。
在电力系统中,节点之间的连接关系往往呈现出一定的规律。
例如,电力系统中的变压器连接通常是点对点的,因此导纳矩阵在这一部分的元素往往较为密集。
而节点之间的直接连接往往较少,因此导纳矩阵在这一部分的元素较为稀疏。
根据电力系统的实际情况,可以对导纳矩阵的稀疏度进行预估,从而选择合适的计算方法和算法,提高计算效率。
稀疏矩阵的稀疏度还与电力系统的运行状态有关。
在电力系统运行过程中,节点之间的连接关系可能会发生变化,导致导纳矩阵的稀疏度发生变化。
因此,在进行电力系统分析时,需要根据实际情况对导纳矩阵的稀疏度进行动态调整,以提高计算效率和准确性。
对于稀疏矩阵的计算,有多种方法和算法可供选择。
常用的方法包括直接法和迭代法。
直接法适用于稠密矩阵的计算,通过高斯消元或LU分解等方法求解矩阵方程。
而迭代法适用于稀疏矩阵的计算,通过迭代求解逼近解。
迭代法的优势在于可以利用稀疏矩阵的结构进行优化,从而提高计算效率。
导纳矩阵稀疏度在电力系统分析中起着重要的作用。
牛顿拉夫逊法潮流基本流程下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。
文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by theeditor. I hope that after you download them,they can help yousolve practical problems. The document can be customized andmodified after downloading,please adjust and use it according toactual needs, thank you!In addition, our shop provides you with various types ofpractical materials,such as educational essays, diaryappreciation,sentence excerpts,ancient poems,classic articles,topic composition,work summary,word parsing,copy excerpts,other materials and so on,want to know different data formats andwriting methods,please pay attention!1. 输入原始数据:包括节点信息(节点编号、节点类型、注入功率等)、支路信息(支路编号、首节点和末节点、支路阻抗等)以及平衡节点信息(平衡节点编号、电压幅值和相角)。
目录摘要 (1)1 题目 (1)2 节点导纳矩阵的计算原理 (2)2.1节点方程 (2)2.2节点导纳矩阵元素的物理意义 (5)3 计算过程 (6)4 用MATLAB计算 (7)4.1程序清单: (7)4.2 输出结果与分析 (9)5 小结 (10)参考文献 (11)成绩评定表节点导纳矩阵的计算1 题目电力系统如下图所示,图中所有串联支路参数均为阻抗标幺值,所有对支路参数均为导纳标幺值。
求设网络的节点导纳矩阵。
图一2 节点导纳矩阵的计算原理2.1节点方程在图2中的简单电力系统中,若略去变压器的励磁功率和线路电容,负荷用阻抗表示,便可得到一个有5个基点(包括零电位点)和7条支路的等值网络,如图3所示。
图2图3将接于节点1和4的电势源和阻抗的串联组合变换成等值的电流源和导纳的并联组合,便得到图4的等值网络。
其中:••=1101E y I ••图4以零电位点作为计算节点电压的参考点,根据基尔霍夫电流定律,可以写出4个独立节点的电流平衡方程如下上述方程组经过整理可以写成:式中:⎪⎪⎪⎭⎪⎪⎪⎬⎫=+-+-=-+-=-+-++-=-+•••••••••••••••••••••4440343424244324232342243223220121212112110)()(0)()(0)()()()(I V y V V y V V y V V y V V y V V y V V y V y V V y I V V y V y ⎪⎪⎪⎭⎪⎪⎪⎬⎫=++=++=+++=+•••••••••••••4444343242434333232424323222121212111000I V Y V Y V Y V Y V Y V Y V Y V Y V Y V Y V Y V Y 34433424422423322312211234244044342440443423331224232022121011;;;;;;;;y Y Y y Y Y y Y Y y Y Y y y y Y y y y Y y y Y y y y y Y y y Y -==-==-==-==++=++=+=+++=+=一般地,对于有n 个独立节点的网络,可以列写n 个节点方程:也可以用矩阵写成:或缩写成:YV=I矩阵Y 称为节点导纳矩阵。
矩阵稀疏化的理解矩阵稀疏化是指将矩阵中大部分元素为零的情况下,通过压缩存储方式减少存储空间和计算量的技术。
在很多实际问题中,矩阵往往具有稀疏性,即矩阵中绝大多数元素都是零。
利用矩阵稀疏化技术可以有效减少存储空间和运算量,提高计算效率和性能。
矩阵稀疏化的应用广泛,特别是在大规模数据处理和机器学习领域。
例如,在自然语言处理中,文本数据通常表示为矩阵形式,其中每一行代表一个文档,每一列代表一个词汇,而矩阵元素表示该词汇在文档中的出现频率或权重。
然而,由于大量词汇和文档的存在,导致矩阵非常稀疏。
如果按照普通的方式存储和计算,将会占用大量的存储空间和计算资源。
因此,矩阵稀疏化技术在这种情况下显得尤为重要。
矩阵稀疏化的方法有很多种,常见的有压缩稀疏矩阵(Compressed Sparse Matrix,简称CSM)和字典编码(Dictionary Encoding)等。
压缩稀疏矩阵是一种常见的矩阵稀疏化存储方式,它通过压缩存储非零元素的位置和值,从而减少存储空间。
其中,最常用的压缩方式有三种,分别是COO(Coordinate Format)、CSR(Compressed Sparse Row)和CSC(Compressed Sparse Column)。
COO格式将非零元素的位置和值分别存储在两个数组中,CSR和CSC则将非零元素的位置和值分别存储在一个数组和一个指针数组中。
这些压缩稀疏矩阵的存储方式在不同的应用场景中具有不同的优势,可以根据实际需求选择合适的方式。
字典编码是另一种常见的矩阵稀疏化方法,它通过构建一个字典来存储矩阵中的非零元素。
字典中的每一项包含了非零元素的位置和值。
通过这种方式,可以将矩阵中的非零元素进行编码和压缩,从而减少存储空间。
字典编码在某些特定的应用场景中具有较好的效果,例如在图像处理中,当图像中存在大量的相似或重复的像素时,字典编码可以将这些像素进行编码和压缩,从而减少存储空间。
struct jdlb *insert1(struct jdlb *tp,struct jdlb *z) //节点导纳矩阵插入指针数据{
struct jdlb *p0,*p111,*p112;
double r,r1,x,x1;
kk=0;
p111=tp;
p0=z;
if(p0==null)
return(tp);
if(tp==null)
{ tp=p0;
p0->next=null;
return(tp);
}
if(p0->lnxt<p111->lnxt)
{ tp=p0;
p0->next=p111;
return(tp);
}
while((p0->lnxt>p111->lnxt)&&(p111->next!=null))
{ p112=p111;
p111=p111->next;
}
if(p0->lnxt==p111->lnxt) //两点间有多条线路或变压器
{ r=p111->fu*cos(p111->jd);
x=p111->fu*sin(p111->jd);
r1=p0->fu*cos(p0->jd);
x1=p0->fu*sin(p0->jd);
r=r+r1;
x=x+x1;
x1=sqrt(r*r+x*x);
p111->fu=x1;
p111->jd=atan2(x,r);
kk=1;
return(tp);
}
if((p111->next==null)&&(p0->lnxt>p111->lnxt))
{ p111->next=p0;
p0->next=null;
}
else
{ p112->next=p0;
}
return(tp);
}
//线路部分形成节点导纳矩阵
p1=(struct jdlb *)malloc(len);
p2=(struct jdlb *)malloc(len);
p3=headlij; //线路部分
while(p3!=null) //形成节点导纳矩阵,可为双边的{ r=p3->fu;
x=p3->jd;
bb=p3->bb;
i=p3->i;
j=p3->j;
gij=r/(r*r+x*x);
bij=-x/(r*r+x*x);
r=-gij;
x=-bij;
tmp=sqrt(r*r+x*x);
if(tmp!=0)
{ p1->irow=i;
p1->lnxt=j;
p1->fu=tmp;
p1->jd=atan2(x,r);
a[i]=insert1(a[i],p1);
if(kk==0)
p1=(struct jdlb *)malloc(len);
p2->irow=j;
p2->lnxt=i;
p2->fu=tmp;
p2->jd=atan2(x,r);
a[j]=insert1(a[j],p2);
if(kk==0)
p2=(struct jdlb *)malloc(len);
}
p3->fu=tmp;
p3->jd=atan2(x,r);
p3->bb=bb;
g[i]=g[i]+gij;
b[i]=b[i]+bij+bb;
g[j]=g[j]+gij;
b[j]=b[j]+bij+bb;
}
k=1;
p4=headbyq;
while(p4!=null) //变压器部分
{ i=p4->i;
j=p4->j;
r=p4->r;
x=p4->x;
k0=p4->kk;
gij=r/(r*r+x*x);
bij=-x/(r*r+x*x);
k0=1/k0; //在计变压器变比时用1/k0来做变量,既用倒数来做变量r=-gij*k0;
x=-bij*k0;
tmp=sqrt(r*r+x*x);
if(tmp!=0)
{ p1->irow=i;
p1->lnxt=j;
p1->fu=tmp;
p1->jd=atan2(x,r);
a[i]=insert1(a[i],p1);
if(kk==0)
p1=(struct jdlb *)malloc(len);
p2->irow=j;
p2->lnxt=i;
p2->fu=tmp;
p2->jd=atan2(x,r);
a[j]=insert1(a[j],p2);
if(kk==0)
p2=(struct jdlb *)malloc(len);
}
g[i]=g[i]+gij*k0*k0;
b[i]=b[i]+bij*k0*k0;
g[j]=g[j]+gij;
b[j]=b[j]+bij;
p4=p4->next;
}
free(p1);
free(p2);
p5=headjdzl;
while(p5!=null) //接地支路部分
{ i=p5->i;
r=p5->g;
x=p5->bb;
g[i]=g[i]+r;
b[i]=b[i]+x;
p5=p5->next;
}
p6=headglfh;
while(p6!=null) //功率负荷部分
{ i=p6->i;
r=p6->pg;
bb=p6->pd;
x=p6->qg;
k0=p6->qd;
p[i]=r-bb;
q[i]=x-k0;
ppp[i]=bb;
qqq[i]=k0;
p6=p6->next;
}
p9=headphd;
while(p9!=null)
{ for(i=1;i<=mm;i++)
{ if(i==p9->phd)
{ p9->p=ppp[i];
p9->q=qqq[i];
}
}
p9=p9->next;
}
j=1;
p8=headwgxz;
while(p8!=null) //和控制点无关
{ i=p8->i;
gq[j]=i; //记录约束节点无功号
gmin[j]=p8->qmin;
gmax[j]=p8->qmax;
gqbz[j]=0; //=0表示PV节点,=1表示由PV节点转成了PQ节点qd[j]=qqq[i]; //负荷无功
j=j+1;
p8=p8->next;
}
rq=j-1; //无功约束的个数
for(i=1;i<=mm;i++) //节点导纳矩阵对角线上的元素{ r=sqrt(g[i]*g[i]+b[i]*b[i]);
b[i]=atan2(b[i],g[i]);
g[i]=r;
}
j=0; //用于判断是否有孤点
for(i=1;i<=mm;i++)
{ if(g[i]==0)
j=j+1;
}
if(j>0)
return 1;
a[mm+1]=null;
p1=a[1];
i=1; //将节点导纳矩阵联起来
while(i<=mm)
{ j=0;
while(p1->next!=null)
{ j=j+1;
p1=p1->next;
}
i=i+1;
p1->next=a[i];
}。