第三章稀疏术的应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章 稀疏技术的应用
第一节 节点导纳矩阵及其稀疏存储
一、
节点导纳矩阵
节点导纳矩阵Y 是电力网络的一种数学模型。
它描述网络的连接情况和支路的导纳值,广泛用于电力系统的潮流计算。
包含网络中所有节点的导纳矩阵称为全节点导纳矩阵。
电力系统计算用的导纳矩阵通常是不完全的,是从完整的全节点导纳矩阵中除去对应参考点的行和列形成的。
如图3.1简单网络,若将中性点(地)记为0号节点,则网络的全节点导纳矩阵Y '为4ⅹ4矩阵。
⎥⎥⎥
⎥⎥
⎥⎦
⎤
⎢⎢⎢⎢⎢⎢⎣⎡++----++----++----++='30201023133023302010122013
123020101030201030201032103210y y y y y y y y y y y y y y y y y y y y y y y y Y (3-1) 显然Y '是奇异矩阵。
它各行(列)的所有元素之和为零,即其行列式值为零。
应用于网络
方程为
V Y I ''='
这里I '是所有节点(包括0号节点)注入电流的列向量。
按照克希荷夫第一(电流)定律,应有0=∑i ,即他们是相关的。
其中任意一个必为其余各个电流元素之和的负值。
V '是节点电压列向量,是各节点相对于某一共同参考点的电压(电位差)。
若已知V ',则可求I '。
反之,给定I '时,因Y '是奇异阵,其逆不存在,故V '没有唯一解。
从电路关系上看,只要各节点电压差保持一定关系,各节点电压数值可因选取的参考点不同而共同浮动,亦即可有无穷多解。
•
I
为了便于计算,选取其中任一节点作为参考点,通常取此节点电压为零,其余各节点电压均为该节点对此参考点的电压(电位差)。
参考点电压为零,其电流又可由其他节点注入电流之和求得,所以可将Y '中对应参考点的列和行删去,免去与之有关的计算。
习惯上,一般取中性点(地)为参考点,即零电位点。
删去相应的列和行,形成通常的节点导纳矩阵。
图3.1 简单网络 2
•
I
⎥⎥
⎥⎦
⎤
⎢⎢⎢⎣
⎡++---++---++=23133023
1323
23
12201213
12
131210y y y y y y y y y y y y y y y Y (3-2)
有时某个网络或某种计算中,需要改变参考点,例如将节点r 取代地作为参考点,则先恢
复原来完整的全节点导纳矩阵Y ',再删去新的参考点r 对应的行和列。
即可获得新的对应节点r 为参考点的节点导纳矩阵r Y 。
以此导纳矩阵作网络方程计算时,要注意所用的节点电压是各节点对新参考点的电压,而不是原来的对地电压。
例如,原来是以地为参考点时,由网络方程可解得某节点i 的注入电流
∑==n
i j
ij
i
V Y I 1
&&
而当改以r 节点为参考点时,由网络方程可得:
∑≠==n
r
i i r j
ij r i
V Y I
1)()(&
&
式中)
(r j
V &为以r 节点为参考点时的节点电压。
它与原来以地为参考点时的电压关系为 r
j r j V V V &&&-=)
( 由这二个方程求得的注入电流应该是相同的。
将)(r j V &的值代入。
得 ∑∑∑≠=≠=≠=-=-=n
r
i i n
r
i i ij r j ij n
r
i i r j ij r i Y V V Y V V Y I 100
)()(&&&&&
但
ir n
r
i i ij
Y Y
-=∑≠=0
从而 ∑∑=≠===+=n
i i
j
ij
n
r
i i r
ir
j
ij
r i
I V Y V Y V Y I
1
1)(&&&&&
说明两种算法的结果是一致的。
若计算所用网络没有接地支路,是所谓“悬浮”网络,Y 就是全节点导纳矩阵,是奇异矩阵。
求解此网络时,应改选另一适当的节点为参考点,形成新的节点导纳矩阵。
这个矩阵不包括与r 节点对应的行和列,即这时)
(r Y
比Y 少一阶。
应该注意的是,运算用的电压是各节点对
参考点的电压。
但一般电力系统要求的是各节点的对地电压,所以在计算完i
V &后,还应将求得的电压加上参考点的对地电压。
观察式(3-2)的导纳矩阵Y ,当图3.1任意两节点j i 、间有支路直接相连,相应的对称的元素为
ij ji ij y Y Y -== 即导纳矩阵是对称的。
自然,若任意两节点j i 、间没有支路直接相连,相应的对称的元素都为零,即导纳矩阵非对角非零元素数应等于网络支路数的两倍,以矩阵上(或下)三角而言,则其非对角非零元素数正好等于网络的支路数。
实际上,电力系统网络各节点往往只与其中几个节点有支路相连,而与其余大部分节点无联系,因而导纳矩阵有许多零元素,是很稀疏的。
如果网络中具有非标准变化的变压器支路,例如j i 、间为非标准变比变压器支路时,其等
值电路可有如图3.2(a )和(b )两种。
其中T Y 为变压器导纳值。
(a ) (b )
对应图3.2(a )中电路,有
⎪⎪⎭
⎪⎪⎬⎫
=∆=∆-==T
jj T T ii T
T ji ij Y Y K Y Y K Y Y Y 2
// (3-3)
式中ii Y ∆和jj Y ∆分别为支路i -j 对i 和j 节点自导纳的增量。
对应图3.2(b )等值电路,有
⎪⎪⎭
⎪⎪⎬⎫
=∆=∆-==T
jj T T ii T T ji ij Y Y Y K Y Y K Y Y 2
(3-4)
有些网络还装有改变线路两端电压(电流)相角的移相器,移相器的等值电路示于图3.3。
图中T y 为移相器导纳,ij ϕ为移相器所移动的相角,即
⎪⎭
⎪⎬⎫='='ij ij j i i j i i e I I e V V ϕϕ&&&&
i
据此可求得导纳矩阵各有关元素为
⎪⎪
⎭
⎪
⎪⎬⎫
-=-==∆=∆-ij ij j T ji j T ij T
jj T
ii e Y Y e Y Y Y Y Y Y ϕ
ϕ (3-5)
由上式可知,移相器的存在并不影响对角元素,但影响非对角元素,使ji ij Y Y ≠,破坏了导纳矩
阵的对称性。
通常移相器较少,计算时可将它单独处理。
不考虑移相器时,网络仍然是对称的。
有些变压器既能改变电压又能改变相角,此时可将式(3-3)或式(3-4)与式(3-5)结合计算,不再赘述。
导纳矩阵对应于网络支路的联接状况,当支路联接状况改变时,例如断开某一支路,并入某一支路或者改变线路参数等,导纳矩阵也就相应改变。
但这种改变只涉及与变化支路有关的元素,即两个对角元素与两个非对角元素。
如j i 、支路的改变只改变ji ij Y Y =和ii Y 、jj Y 四个元素,其他元素不变。
这正是用节点导纳矩阵描述网络的方便之处。
T K :1 T Y 1:T K Y 图3.2 变压器等值电路 图3.3 移相器的等值电路
ij
二、导纳矩阵的形成
当网络给定时,节点导纳矩阵很容易形成,比较式(3-2)和图3-1可知,节点导纳的阶数等于网络的节点数(不包括参考节点)。
矩阵的对角元素即自导纳等于与该节点连接的所有支路的导纳之和,非对角元素即互导纳则为连接两点支路导纳的负值。
电力网络一般由输电线路和变压器等元件组成。
当元件的等值电路已知时,则由这些元件组成的网络可知,从而可形成该网络的节点导纳矩阵。
r 、x 电力系统输电线路的等值电路如图3.4所示。
其中r 、x 为线路串联电阻、电抗,b /2为线路容纳,据此可得
⎪⎪
⎭⎪
⎪⎬⎫
∆=++=∆=+-=
jj ii ji
ij Y b
j jx r Y Y jx r Y 211 (3-6)
变压器支路的等值电路已示于图3.2。
当变压器绕组电阻T r (常可忽略),漏抗T x 及变比T K 给定时,用(a )所示的等值电路,有
⎪
⎪⎪
⎭
⎪⎪
⎪
⎬⎫+=∆+=∆+-=
=T
T jj T T T ii T T T ji ij jx r Y jx r K Y jx r K Y Y 1
)(1
)(1
2 (3-7)
无论按式(3-6)还是按式(3-7)计算,都需知道支路的五个参数i 、j 、r 、x 、b /2(或T K ),
图3.4 输电线路的等值电路
图3.5 6个节点的网络
:1K
输入全部支路的这些参数可以形成网络的节点导纳矩阵。
由于计算公式不同,需要区分是输电线支路还是变压器支路。
区别方式可由程序设计者自定。
例如,在变压器支路两端对一个节点号前,人为增加一个负号,就可以简单地将变压器支路与输电支路区别开来。
由于变压器支路对两端节点自导纳的作用不同。
应该限定负号加在某一侧。
这里规定负号加在图3.2(a)的漏抗侧。
如图3.5网络。
这是6个节点的网络,网络节点数n=6,支路数l=7,支路参数如表3-1所示。
图3.6 形成网络节点导纳矩阵框图
读者可按自己熟悉的计算机语言编写程序。
这样形成的节点导纳矩阵,各元素与一个二维数组一一对应。
这种存储方式称为满阵存储,特点是程序设计简单、使用方便、支路参数不必按支路顺序读入,适用于节点少的网络。
由于矩阵是对称的,而且对于较多节点的电力网络,矩阵中必然存在许多零元素。
显然,这种存储方式占用许多不必要的计算机容量。
因此应该采用稀疏存储方式。
三、导纳矩阵的稀疏存储
根据节点导纳稀疏、对称的特点,为了节省计算机内存容量和较少计算机工作量,免除零元素的存储和运算,应只存储非零元素。
这种存储方式叫做稀疏存储方式。
稀疏存储方式很多,根据矩阵的对称性,下面以只存上三角元素为例介绍几种用一维数组存储的方式。
方式1. 设有一维数组DY ,Y ,IY ,JY ,将对角元素存于DY 数组中,即),,(:2211nn Y Y Y DY Λ,也就是说11)1(Y DY =,22)2(Y DY =,…nn Y n DY =)(。
将非对角元素存在于Y 数组中,各元素的行号和列号分别存在于用以识别的IY 和JY 数组中,即 ),,(:ΛΛij Y Y ),,(:ΛΛi IY
),,(:ΛΛj JY
其意义为,若网络第k 支路两端点为i 、j ,即矩阵上三角部分的第k 个非零元素位于第i 行第j
列,则有j k JY i k IY Y k Y ij ===)()()(Λ,
,,这样就将矩阵各元素的值ij Y 和行号i ,列号j 分别存于各数组的对应位置。
虽然,对每一组ij Y 、i 和j 来说i <j 。
若此网络共有N 个节点,L 个支路,则DY 数组占有N 个内存单元。
Y 、IY 、JY 各数组分别占有L 个内存单元,即总共需要(N +3L )个单元。
若认为DY 及Y 为复数数组,每个复数占2个单元,则共需(2N +4L )个单元。
通常L >N ,若认为L =1.5N ,则共需2N +4L =8N 个内存单元。
这种方式也称为散居格式。
方式2. DY ,Y 和JY 各数组含义与前相同,但Y 中各元素按一定规律排列。
设按行顺序排列,因而也称为按行格式。
另设IS 数组,它存的是各行第一个非对角非零元素在Y 中的位置号,即:
),,,(:)
,,,,,(:111
,2,21,143
421ΛΛ43421Λ
Λ443
4421ΛΛΛΛΛΛΛj j j JY Y Y Y Y ji i j j
第一行 第二行 第i 行 1m 个元素 2m 个元素 i m 个元素 ∑-=++++1
1
211),11,
1,
1(:i k k
m
m m m IS ΛΛ
这里i m 是第i 行非对角非零元素个数。
IS 共有n 个元素,分别是 ∑-=+=
1
11)(i k k
m
i IS (3-8)
显然IS (l )=1。
第n 行没有非对角元素,IS (n )没有实际意义。
为便于程序处理,仍令
IS (n )等于式(3-9)的计算结果,即 11)(1
1
+=+=
∑-=l m
n IS i k k
采用这种方式时,导纳矩阵第i 行共有IS (i +1)-IS (i )个非对角非零元素。
它们在Y 中的排列是从第IS (i )个至第IS (i +1)-1个。
有时,某一行i 可能没有非对角非零元素,则由式(3-8)知IS (i +1)必等于IS (i )。
反过来,如IS (i +1)-IS (i )=0,则可判断出第i 行没有非对角非零元素。
这种方式占用内存单元为3N +3L =7.5N 个。
也可采用IS 数组存末元素地址,或直接存每行非对角非零元素个数的方式。
这时查找元素要采用与之相应的办法。
方式3. DY 、Y 数组的含义同前,用KY 数组来表示出数组Y 中上三角(不计对角元素)元素实际位置的顺序号。
如已知ij Y ,它在上三角位置的序号ij K 为
()()i j i i n K ij -+--=
2
12 (3-9)
也就是在数组KY 的对应位置存入ij K 的值,即 )
:()
:(ΛΛΛΛij ij K KY Y Y
或表示为
()ij Y k Y =,()ij K k KY =
这种方式所占有内存单元数为N +2L =4N 个
仍以图3.5为例,分别用上面三种方式存储时,各数组的存储数值示于表3-2。
由于三种方式Y 、DY 存储的内容相同,将之列在表的左边。
三种存储方式中,方式1所占内存略多,方式3占用内存较少。
考虑到导纳值为复数,在本例中,如果采用满阵方式存储需用6×6×2=72个内存单元,而方式1需用内存单元为
占用单元之比约2:1。
这是小网络,稀疏存储的优点还不突出。
如果对一个节点数为100、支路数为150的中型电力系统,则采用满矩阵存储时需用20000个存储单元,而用方式1时仅占用800个存储单元。
二者的比值为2000:800=25:1。
稀疏存储方式大大节省了计算机的存储单元。
当占用内存相差不大时,实际应用就应考虑各方式灵活性和方便性。
方式3占用内存最少,但求解时处理复杂。
处理复杂本身也就增加了内存量和计算工作量,还增加了程序设计的困难。
通常,方式2对程序处理较为灵便,应用较多。
但若支路连接情况使非零元素变为零元素,或者相反,方式2的非零元素序号排列顺序几乎要全部发生变化,调整比较复杂。
其他如方式1并不要求非零元素按某种顺序排列,因而在网络发生变化时调整要简单得多。
现代的适合大规模运算的程序为了数据的存取调整方便,常使用链表等方式存储,读者可根据自己工作的需要自行学习。
不同的存储方式其程序实现方法和运算方法不同。
读者可以根据自己熟悉的语言编写按不同稀疏存储方式的形成节点导纳矩阵的源程序。
应该说明的是,编制程序的方法、技巧很多,运用自己的知识,编写的程序方便存取,简便实用就是最佳的。
第二节 稀疏向量求解法
在求解线性代数方程式(2-1)时,可能出现两种稀疏向量。
其一,方程组右端项是稀疏的列向量,即I 中只有若干个非零元素,其他为零元素。
例如右端项只有i 、j 行分别有非零元素
i I &和j I &,
其余为零元素。
其二,又如只需求解未知向量V 中的若干个元素,无需求解所有的量,
即要求的解是稀疏的列向量。
导纳矩阵Y 的逆矩阵是阻抗矩阵Z 。
如果只要求解节点i 的自阻抗ii Z ,可以在节点i 注入单位电流,其他节点的注入电流为零,则节点i 的电压即为ii Z 。
为求ii Z ,可令式(2-1)的注入电流向量I 为
T
I ]0,0,1,0,,0[ΛΛ= (3-10)
利用因子表进行前回代,求出节点i 的电压i
V &,则 i
ii V Z &= 上例中式(2-1)的右端项是稀疏的式(3-10),求解的向量也是稀疏的,即只求i V &,其余的i
V &)(i j ≠可以不算,这是最典型的应用稀疏向量算法的例子。
电力系统分析中可以应用稀疏向量算法的例子很多。
例如用补偿法计算节点i 、j 间的支路断开时的潮流,需要求出从断口i 、j 间看进去的网络内阻抗k Z 。
这时可以在节点i 、j 分别
注入电流+1和-1,求i 、j 间的电压差i V &,则内阻抗k
Z 为
ij
jj ii ij
k Z Z Z V Z 2-+==&
又如计算节点i 的三相短路电流,需要求解ii Z 。
以上这些例子若能充分利用矩阵的稀疏性进行求解,就可以大大节省计算时间。
稀疏向量求解法首先是要识别快速前代运算和回代运算所必须的运算,找出前代运算和回代运算的因子表路径,避免与求解无关的运算。
一、 前代因子表路径的确定
利用稀疏性提高计算速度的途径之一是避免零元素的运算。
以右端项为稀疏向量的前代运算为例,由式(2-17)得
I L D U V 1
11---= 令
I L D I n 11)
(--=
则
∑-=-=1
1
)()(/)(j i jj i i ii ji
j
i j
d I d l
I I &&& N j ,,1Λ= (3-11)
前代运算是求解上列N 个方程,求出
)(i j I & N j ,,1Λ=
由于下三角阵L 和方程右端项I 是稀疏的,在式(3-11)中,如果满足条件
0=j
I & (3-12) 0=ji l 或0)(=i i
I & 1,,1-=j i Λ (3-13) 则无需求解式(3-11)就可以肯定
0)(=j j
I & (3-14) 因为如果式(2-1)是非奇异方程组,则有
0≠ii d
在前代过程中,如果满足式(3-12)和式(3-13),从而也满足式(3-14)的方程,定义为无效方程,是
快速前代过程中无需运算的方程。
与此相反,不能完全满足式(3-12)和式(3-13)两个条件的方程
定义为有效方程,即这些方程需要进行非零运算才能求出)(i j I 。
快速前代运算只对有效方程运
算即可。
1
5
10
15
20
5 10 15 20
(b )Y 矩阵及因子表结构 图 3.7 20节点网络示例图
(a ) 系统接线图
5 18 4 10 9 1 8 16
6 13
19
14
17 15
7 12 11 2
20
如果定义Ω为有效方程的子集,由上面分析可知,无效方程是没有非零运算的方程,即有
0)(=j j
I & Ω∉j 有效方程的解()(j j I &,Ω∈j )可能不等于零。
现以20个节点的网络为例,该网络接线如
图3.7(a )所示,节点优化后的编号标于图中,因子表的矩阵结构示于图3.7(b )中。
图中“*”表
示原导纳阵的非零元素,“×”表示形成因子表后增加的非零元素。
从图可以看出L 、D 、U 矩阵的结构和非零元素的位置。
由于网络的导纳阵是对称的,故L 和U 有相似的结构。
当然如果待求解的方程是有解的,L 、D 、U 的逆是存在的。
确定因子表前代路径,直观的做法是利用下三角阵L ,对稀疏的右端项进行前代运算,即
∑-=-=1
1)()(/)(j i jj i i ii ji j j j d I d l I I &&& N j ,,1Λ= (3-15)
寻找具有非零运算的有效方程不能用这种方法,因为这样搜索太费时间了。
先讨论右端项的稀疏向量只有一个非零元素的前代因子表路径。
假定图3.7(a)中节点2有电流2
I &注入,其他节点的注入电流为零,即 T
I I ]0,,0,,0[2
Λ&= (3-16) 现在讨论快速前代有效方程的确定方法。
(1)因为01
=I &,故前代结果0)
1(1=I &。
可以这样推理,若右端项第一个非零元素在第j 行,则
0)(=i i
I & 1,,1-=j i Λ (2) 因为02
≠I &,故L 中第二行是有效方程,简称第2方程是有效方程,可求得 0)2(2
≠l & 检查L 矩阵的第2列,有非零非对角元素2,11l 、2,20l 即有
0)
2(2
2,11≠I l & 0)
2(2
2,20≠I l & 的非零运算,故L 矩阵中第11、20两方程为有效方程。
可以认为
0)11(11≠I & 0)20(20
≠I & (3)因为03=I &,02,3=l ,01,3=l ,0)1(1
=I &,故得0)3(3=I &,L 矩阵中第3方程为无效方程。
由于L 中第2列向量第一个非零,非对角元素是第11行,可以推理
10,,4,3)111(,,4,3000)(2
,ΛΛ&&&=-=⎪⎪⎪⎪⎭⎫===j I I I j j j j
(4) 由于0)11(11≠I &,L 矩阵中第11列有非零非对角元素11,12l 、11,20l 即有
0)11(11
11,12≠I l &
0)
11(11
11,20≠I l & 的非零运算,故第11、20方程有效方程。
可以认为
0)12(12
≠I &
20
(5)由于0)
12(12≠I &,L 矩阵中第12列有非零非对角元素012,15≠l 、012,20≠l 即有 0)12(12
12,15≠I l & 0)12(12
12,20≠I l & 的非零运算。
故第15、20方程是有效方程。
可以认为
0)15(15
≠I & 0)20(20
≠I & (6)由于0)15(15
≠I &,L 矩阵中第15列有非零非对角元素015,17≠l 、015,18≠l 、015,20≠l 即
有 0)15(15
15,17≠I l & 0)15(15
15,18≠I l & 0)15(15
15,20≠I l & 的非零运算。
故第17、18、20方程是有效方程。
可以认为
0)17(17
≠I & 0)18(18
≠I & 0)20(20
≠I & (7)由于0)17(17
≠I &,L 矩阵中第17列有非零非对角元素017,18≠l 、017,19≠l 、017,20≠l 即
有 0)
17(1717,18≠I l & 0)
17(1717,19≠I l & 0)17(17
17,20≠I l & 的非零运算。
故第17、18、20方程是有效方程。
可以认为
0)18(18
≠I & 0)19(19
≠I & 0)20(20
≠I & (8)由于有
0)10(10
)9(9)8(8)7(7)6(6)5(5)2(21========I I I I I I I I &&&&&&&& 013
=I & 012,1311,132,13===l l l
和有
014
=I & 012,1411,142,14===l l l
故有
0)13(13
=I & 0)
14(14
=I & 第13、14方程为无效方程。
同理,由于
16
015,1612,1611,162,16====l l l l
故
0)16(16
=I & 第16方程是无效方程。
总结上述前代有效方程与有效方程所在列的非零非对角元素之间的关系如表3-3所示。
2、11、12、15、17、18、19、20。
其中11、12、15、17、18、19、20分别是下三角矩阵L 中第2、11、15、17、18、19列的第一个非对角非零元素。
有效方程确定后,快速前代运算可只在有效方程中进行。
如果把有效方程的序号排成顺序,就可以得到一条指导前代进行顺序的前代因子表路径。
例如本节讨论的02
≠I &,其他节点注入电流为零的20个节点系统的前代因子表路径如图3.7所示。
图中节点的数字标号标明有效方
程的序号,顺序是从小到大,用箭头表明前代运算是从方程序号小的方向进行。
可以说,有效方程序号的有序排列
就形成因子表的运算路径。
由以上的讨论可以得出,设右端项非零元素在1j 行,且右端项稀疏向量只有一个非零元素
时,则求有效方程序列和前代因子表路径的步骤如下:
(1)第1j 个方程为第一个有效方程,是前代因子表路径的始端;
(2)若L 矩阵1j 列的第一个非对角非零元素的行号为2j ,则第2j 个方程是第2个有效方
程,是路径的第二个节点;
(3)若L 矩阵2j 列的第一个非对角非零元素的行号为3j ,则第3j 个方程是第三个有效方
程;
(4)照此类推,若i j 是第i 个有效方程,L 阵中第i j 列第一个非对角非零元素的行号为
1+i j ,则第1+i j 个方程是第1+
i 个有效方程。
直至找到N j k =,第N 个方程被确定
为有效方程(N 是网络阶数),即找到最后一个有效方程。
有20个节点的系统和02
≠I &,以2为始端的前代因子表路径如图3.7所示。
这个前代因子表路径的各节点号为有效方程的第一个非对角非零元素的行号。
在稀疏矩阵的稀疏存储中,很
容易从存储信息中找到每列的第一个非零非对角元素的行号,因而运算中很容易确定前代因子
表路径。
前代因子表路径的节点数K 与右端项稀疏向量非零元素所在行号1j 有关,与L 矩阵的稀疏
程度有关。
1j 值越大、L 矩阵稀疏则K 值小。
一般来说K <N ,实践证明网络节点数N 增大时,
K 不随N 比例增大,或说N 增大时,K/N 减少,因此大系统的网络沿前代因子表路径进行快速
2
图3.7 前代因子表路径
前代运算(FFS )可以大大地节省运算时间,避免无效方程的运算。
下面讨论右端项有多个非零元素的前代因子表路径。
右端项稀疏向量有多个非零元素是,
可以依次假定只有一个非零元素,求出单一非零元素前代因子表路径。
右端项有多个非零元素
的前代因子表路径,可以是多个单一前代因子表路径的组合。
例如在20节点的网络中,右端项
稀疏向量为:
T
I I I I ],,,,,,0[12
62Λ&Λ&Λ&&=
共有三个非零元素,可分别对始端方程2、6、12求出前代因子表路径如下:
以2为始端的路径(简称路径2)为 2、11、12、15、17、18、19、20 以6为始端的路径为 6、16、17、18、19、20 以12为始端的路径为
12、15、17、18、19、20 把三条路径画在同一路径图中,如图3.8所示。
前代因子表路径12与路径2重叠,如果后者已经找出,则前者无需重复进行。
故寻找右端项稀疏向量有多个非零元
素的前代因子表路径时,先从序号小的路径开始。
本例应从路径2开始,其后若序号大的前代因子表路径与已有的重合,
就可以不算了。
例如本例中路径2已包括路径12,故后者可
以不算了。
始端为6的路径与始端为2的路径有部分重合,在确定路径6时,运算到第三步,确定有
效方程的序号17。
因序号17同时是路径2的有效方程的序号,表明往后两条路径是重合的,
无需重复计算。
可以找出全网络的前代因子表路径,20节点系统的全部前代因子表路径如图3.9所示。
从
中可以找到从任一节点开始的前代因子表路径。
二、 回代因子表路径的确定
回代运算是已知)(n I &列向量,对上三角阵U 进行回代,求出线性方程组的未知量向量V
&。
)(1n I U V &&-=
∑-=-=11)(/)(j i jj
i ji j j j u V u
I V &&& (3-17) 前面已经讲过,稀疏列向量的另一种形式是未知量是一稀疏向量。
显然如果研究的问题只
需要未知列向量的部分结果,则无需浪费时间去找不必要的量。
这与前面讨论的右端项是稀疏
2 图3.8 前代因子表路径2、6、12
2 图3.9 全网络前代因子表路径
列向量时,前代运算只需对前代因子表路径的有效方程进行运算,无需对无效方程进行运算的
做法一样。
回代运算也可以找出相应的回代因子表路径,只对有效方程进行运算,就可以求出
要求的未知量。
这种计算方法称快速回代法(FBS )。
先讨论只求一个未知量的情况。
回代因子表路径的思路是:根据要求出的未知量研究需要
进行那些运算。
在20个节点的网络图中,要求出2
V &因上三角矩阵U 中的第二行有两个非零对角元素11,2u 、20,2u 。
由式(2-26)得
2020,21111,2222)2(2V u V u V u I &&&&++=
因前代运算的结果)
2(2I &是已知的,为求出2V &需要先求出11V &和20V &。
所以要求解第11,20两个方程。
与上相似的分析,U 矩阵中的11行有二个非零非对角元素12,11u 、20,11u 。
为要求出11
V &需要求解第12、20两个方程,求出12
V &和20V &。
类似的方法可以推算出需要进行运算的方程序列,也定义为有效方程序列:
2、11、12、15、17、18、19、20
以上是按求解2
V &的要求,需要进行运算的方程序列。
可以看出有效方程与前代因子表路径2的有效方程相同。
但回代因子表路径是从20指向2。
要求计算多个未知量时,分别求出每一未知量的回代因子表路径组合在一块,就得多个未
知量的快速回代因子表路径。
20节点网络的回代因子表路径见图3.10。
以上讨论了稀疏向量的快速前代、回代算法。
沿着因子表路径可以很快地求出稀疏向量解。
在因子表的稀疏存储信息中,很容易求得U 矩阵中每行或L 矩阵中每列第一个非零非对角元素
的位置,很容易确定因子表路径。
三.利用高斯消去L 阵的前代因子表路径确定
上面以寻找有效方程确定前代因子表,推理严谨,过程分析比较复杂,但结论很清晰。
表
3-3表明,所谓有效方程在稀疏向量的非零元素确定后,即确定了有效方程的起点,其路径的方
向是由小到大从起点到最大点(根节点)。
第1组有效方程的序号实际上就是起点所在列非零元
素个数,按节点号由小到大的顺序排列。
下一组有效方程所在列号就是上一列(即上一组有效
方程所在列)的第1个非零元素(最小序号)的行号。
依此下行,即可列出表3-3来。
表中的
第一列就是前代因子表的路径。
这一路径实际上可由图3.7(b )直接求出。
将图3.7(b )示于
下图3.11所示。
按照前面所述,在图3.11中先找出起点的对角元素,由起点纵向连结到该列第
1个非零元素,然后横向连结该行的对角线元素。
这一连接有效地连接了两组有效方程的运算,
排除了位于这两个对角元素中间的所有列的无效运算,因而成为“有效短接”。
依此进行,直到
根节点,可求得图3.11的以粗箭头表示的有效短接图。
2 图3.10 20节点系统全部回代因子表路径。