数值分析王兵团答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数值分析王兵团答案
【篇一:数值分析大作业】
解法在电力系统潮流计算中的应用
学院:电气工程学院专业:电气工程自动化学生姓名:常方
宇学号:15121392指导教师:王兵团老师
北京交通大学
2016年2月
lu分解法在电力系统潮流计算中的应用
摘要:结合专业相关知识,在对电力系统进行潮流计算的过程中,
应用lu分解法对修正方程的矩阵进行求解,对算法进行改进,加快
了潮流计算的速度。关键词:lu分解法;潮流计算;pq分解法
1. 概述
潮流计算是电力系统分析中的一种最基本的计算,它的任务是对给
定的运行条件确定系统的运行状态,如母线上的电压(幅值及相角)、网络中的功率分布及功率损耗等。
目前计算机潮流计算的方法主要有牛顿-拉夫逊算法和pq分解法。
牛顿-拉夫逊算法是数学上求解非线形方程组的有效方法,具有较好
的收敛性,曾经是潮流计算中应用比较普遍的方法。pq快速分解法
是从牛顿-拉夫逊算法演变而来的,是将纯数学的牛顿-拉夫逊算法与
电力系统具体特点相结合并进行简化与改进而得出的。pq快速分解
法比牛顿-拉夫逊算法大大提高了计算速度和节省了内存。
2. lu分解法简介
在线性代数中, lu分解(lu decomposition)是矩阵分解的一种,可
以将一个矩阵分解为一个下三角矩阵和一个上三角矩阵的乘积(有
时是它们和一个置换矩阵的乘积)。lu分解主要应用在数值分析中,用来解线性方程、求反矩阵或计算行列式。
lu分解在本质上是高斯消元法的一种表达形式。实质上是将a通过
初等行变换变成一个上三角矩阵,其变换矩阵就是一个单位下三角
矩阵。这正是所谓的杜尔里特算法(doolittle algorithm):从下至
上地对矩阵a做初等行变换,将对角线左下方的元素变成零,然后
再证明这些行变换的效果等同于左乘一系列单位下三角矩阵,这一
系列单位下三角矩阵的乘积的逆就是l矩阵,它也是一个单位下三角
矩阵。这类算法的复杂度一般在(三分之二的n三次方) 左右。
3. 潮流计算pq分解法的步骤(1)节点导纳矩阵的形成
?
自导纳的形成
对节点i,其自导纳yii是节点i以外的所有节点都接地时节点i对地
的总导纳。显然,yii应等于与节点i相接的各支路导纳之和,即
yii?yi0??yij.
式中,yi0为节点i与零电位节点之间的支路导纳;yij为节点i与节
点j之间的支路导纳。
?
j
互导纳的形成
对节点i与节点k之间的互导纳是节点i、k之间的支路导纳的负值,即yik??yik 不难理解yki?yik。若节点i和k没有支路直接相连时,便有yik=0。
(2)计算不平衡功率△p、△q并形成修正方程式
对每一个pq节点或每一个pv节点都可以根据下列公式计算出有功
功率增量△p。
?pi?pis?pi?pis?vi?vj?gijcos?ij?bijsin?ij??i?1,2,?,n?1?
j?1
n
对于每一个pq节点还可以根据下面的公式计算出无功功率增量△q。 ?qi?qis?qi?qis?vi?vj?gijsin?ij?bijcos?ij??i?1,2,?,m?
j?1
n
在有功功率增量和无功功率增量不满足如下约束条件时。 ??????
??
max??q???
max?pi
kki
pq
利用pq分解法则可以形成如下修正方程
?p1v1?b11
?b?p2
?21??v2
?????pn?1?bn?1,1vn?1
b12b22?bn?1,2
b1,n?1??v1??1?
?v???b2,n?1???22?
?????
???
?bn?1,n?1??vn?1??n?1???
?q1v1?b11
?b?q2
?21??v2
?????qm?bm,1vm
b12b22?bm,2
?b1,m???v1?
??v??b2,m???2?????????
?bm,m???vm?
(3)求解修正方程
对上文生成的b和b矩阵进行ldu分解,求解修正方程。分解后,l、d和u的结构为
?1??d1?l??1d221???
?,d??l??l31l32??
?????1????????ln1ln2?lnn?11????1u12
??1??dn?,u??????????
u13?u231
u1n?
?u2n?????
?
?un?1n?
1??
根据得到的ldu矩阵,用matlab编程对修正方程进行求解,为潮流计算的下一步
做准备。
4.lu分解部分程序代码
%对b’和b’’进行ldu分解 for i=2:m if i==m
b(i,i)=1./b(i,i); else
ic1=i+1;for j1=ic1:m
b(i,j1)=b(i,j1)./b(i,i);end
b(i,i)=1./b(i,i);for k=i+1:n
for j1=i+1:n
b(k,j1)=b(k,j1)-b(k,i)*b(i,j1); endend
end end p=0; q=0;
for i=1:m
if jd(i,6)==2p=p+1;k=0;