求助PQ法B1各节点参数形成的矩阵的形成

导读:习题一,13.设A?Cn?n是Hermite矩阵,证明A是Hermite正定矩阵的充分必要条件是,存在Hermite正定矩阵B,解:若A是Hermit正定矩阵,则由定理1.24可知存在n阶酉矩阵U,使得,反之,当A=B2且B是Hermit正定矩阵时,则因Hermit正定矩阵的乘积仍为,14.设A?Cn?n是Hermite矩阵,则下列条件等价:(1)A是Mermit半正定矩阵,(3)存在矩阵P?习题一 13. 设A?Cn?n是Hermite矩阵。证明A是Hermite正定矩阵的充分必要条件是,存在Hermite正定矩阵B,使得A=B2。 解:若A是Hermit正定矩阵,则由定理1.24可知存在n阶酉矩阵U, 使得 ??1??UHAU=?????2???, ?i0,I=1, 2, ?,n. ????n??于是 ??1????2??HA=U?U ??????n?????1???1?????H??2= U??UU?????????n????2????H?U ??n??令 ??1??B=U?????2????H?U ??n??则A=B2. 反之,当A=B2且B是Hermit正定矩阵时,则因Hermit 正定矩阵的乘积仍为Hermit正定矩阵,故A是Hermit 正定的. 14. 设A?Cn?n是Hermite矩阵,则下列条件等价:(1)A是Mermit半正定矩阵。(2)A的特征值全为非负实数。(3)存在矩阵P?Cn?n,使得A=PP 解:(1)?(2). 因A是Hermit矩阵,则存在酉矩阵U,使得 UHAU=diag(?1,?2,?,?n) 令x=Uy, 其中y=ek. 则x?0. 于是 xHAx=yH(UHAU)y=?kR0
(k=1, 2, ?,n). (2)?(3). A=Udiag(?1,?2,?,?n)UH=Udiag(?1,?2,?,?n)diag(?1,?2,?,?n)UH 令P=diag(?1,?2,?,?n)UH, 则A=PHP . (3)?(1). 任取x?0, 有 2xHAx=xHPHPx=Px2R0.
H 1 习题二
1.求向量x=(1+i,-2,4i,1,0)的1、2、∞范数。 解:x1=1?i??2?4i?1?0=7+2, x2=(1?i)(1?i)?(?2)2?4i(?4i)?1=23, x?=max?1?i,?2,4i,1?=4. 2. 设?1,?2…..?n是一组给定的正数,对任意x=(?1,?2…..?n)T?Cn, 规定x=k?1??k?k?x=n2。证明x是Cn上的一种向量范数。 解:当x?0时, 有x0; 当x0时, 显然有x=0. 对任意??C, 有 k?1??k??kn2??k?1??k?kn2??x. 为证明三角不等式成立,先证明Minkowski不等式: 设 1Qp∞, 则对任意实数xk,yk(k=1, 2, ?,n)有 (?xk?yk)Q(?xk)?(?yk) k?1k?1k?1np1pnp1pnp1p证当p=1时,此不等式显然成立. 下设p1, 则有 ?xk?ykk?1npQ?xkxk?ykk?1np?1??ykxk?ykk?1np?1 对上式右边的每一个加式分别使用H?lder不等式, 并由 (p-1)q=p, 得 ?xk?1nk?ykpQ(?xk)(?xk?ykk?1np1pn1(p?1)qq=[(?xk)?(?yk)](?xk?yk) k?1k?1k?1nk?11pp)?(?yk)(?xk?ykk?1k?1np1pn1(p?1)qq) np1pn1pq再用(?xk?yk)除上式两边,即得 Minkowski 不等式. k?1n1pq现设任意y=(?1,?2,?,?n)T?Cn, 则有 x?y??k?k?k?12n??kn2=?(k?1n?k?k??k)Q2?(k?1n?k?k??k?k)2 Q?(?k?k)?k?1n?(?k?jk?12=x?y. 3. 设?a,?b是Cn上的两种向量范数,又k1,k2是正常数,证明下列函数是Cn上的向量范数。 (1) 函数的非负性与齐次性是显然的,我们只证三角不等式.利用最大函数的等价定义: max(A, B)=(a?b?a?b) max(x?ya,x?yb)Qmax(xa?ya,xb?yb) 121Q(xa?xb?ya?yb?xa?x212=(xa?xb?ya?yb?xa?ya?xb?yb) b?ya?yb)
2 =(xa?xb?xa?xb)?(ya?yb?ya?yb) =max( xa,xb)+max( ya,yb) (2) 只证三角不等式. k1x?ya+k2x?ybQk1xa+k1ya+k2xb+k2yb =( k1xa+k2xb)+( k1ya+k2yb) . 4. Am?1?i?3?5?4i?2?3?1?18?2; 11212AF?1?i?32?52?4i?22?32?1?66; A22m??15; A1?列和范数(最大列模和)=7?2;A?=行和范数(最大行模和)=9 ;
5. 已知?m是Cn?n上的矩阵范数,S是n阶可逆矩阵。对任意A?Cn?n,规定 A=S?1AS,证明?是Cn?n上的一种矩阵范数。 m解:非负性: A≠O时S?1AS≠O,于是A?S?1ASm>0. A=O时, 显然A=0; 齐次性: 设??C, 则?A?S?1(?A)S三角不等式: A?B?S?1(A?B)S相容性: AB?S?1(AB)Smm??S?1ASm=?A; S?1AS?S?1BSQmmmm?S?1AS?S?1BSS?1ASQmm?A?B; ?S?1ASS?1BSS?1BS=AB. m6. 证明:对Cn?n上的任意矩阵范数?均有InR1。 因为In≠O, 所以In>0.从而利用矩阵范数的相容性得: In?InInQInIn,即InR1. 7. 证明Cn?n上的m范数与Cn上的1、2范数相容。 解:设 A=(Aij)?Cn?n, x=(?1,?2,?,?n)T?Cn, 且 A=maxaij, 则 ?i,jAx1???aik?kQ??aik?k=?[?kikikk?aiiik]QnA??k=Amk2?x1; 2Ax2???aikikk?Q?[?aikik?k]2=?a[??kk]2
=nAx2QnA=A解:利用定理2.12得 m?x2. 210. 设U是n阶酉矩阵,证明U?1 U2?UHU2?In2?1. 12.设?为Cn?n上的矩阵范数,?为A?Cn?n的特征值,证明λQmAm. 解:设x是对应于?的特征向量, 则Amx?λmx.又设?v是Cn上与矩阵范数?相容的向量范数,那么 mλxv?λmx?AmxQAmxv vv因xv>0, 故由上式可得λQAm?λQmAm.
3 m习题三 4.我们用用两种方法求矩阵函数eA: 相似对角化法.λI?A?λ2?a2, ??ia,-ia 当λ?ia时, 解方程组 (ia-A)x=0, 得解向量pT1=(i, 1). 当λ=-ia时, 解方程组 (ia+A)x=0, 得解向量p2=(-i, 1)T.令 P=???i?i??11???, 则P?1=1?2i?1i????1i???, 于是 eA=P??ia0???1?cosa-sina??0?ia???P=???sinacosa???. 利用待定系数法.设eλ=(λ2+a2)q(λ)+r(λ), 且r(λ)=b0+b1λ, 则由 ?b0?b1ia?eia??b0?b1ia?e?ia ?b10=cosa , b1=asina .于是 eA=b?0I+b1A=cosa?11??a????+1asina?????a???=???cosa?sina???sinacosa???. 后一求法显然比前一种方法更简便, 以后我们多用待定系数法. 设 f(?)=cos?, 或 sin? 则有 ??b0?b1ia?sinia?b0?b1ia?-sinia与??b0?b1ia?cosia?b0?b1ia?cosia 由此可得
??b0?0?与?b0?cosia??b??isinia? 1a?b1?0故
(i2asinia)A=??0isinia????isinia0???=sinA 与 (cosia)I=???cosia0??0cosia???=cosA.
?5.对A=?1?11???310???求得P= ?1?11???310??0?11???1?, P?1=1??033??, P?1AP=?1??10????3?310??6??642?????6e2t4e2t?3et?e?t2e2t?3et?e?t?eAt=Pdiag(e?t,et,e2t)P?1=1?6??03et?3e?t3et?3e?t?? ?03et?3e?t3et?3e?t?? 4 ???2?? ?sin24sin2?2sin12sin2?4sin1??1??106sin1sinA=Pdiag(sin(-1),sin1,sin2)P=?0? 6??6sin10?0?8. 证明:对任意A?Cn?n,有: (1) sin2A+cos2`A=I;(2)sin(A+2πI)= sinA; (3)cos(A+2πI)=cosA;(4)eA?2πiI=eA 1iA?iA21(e?e)]=[(eiA?e?iA)]2 2i211
=?(e2iA?e?2iA?eO?eO)?(e2iA?e?2iA?eO?eO) 44(1) sin2A+cos2`A=[
=eO=I (2) sin(A+2πI)=sinAcos(2πI)+cosAsin(2πI) 1111(2πI)2+(2πI)4-…]+cosA[2πI-(2πI)3+(2πI)5-…] 2!4!3!5!1111
= sinA[1-(2π)2+(2π)4-…]I+cosA[2π-(2π)3+(2π)5-…]I 2!4!3!5!
=sinAcos2π+cosAsin2π(3)的证明同上. (4) 因为A(2πiI)=(2πiI)A ,所以根据定理3.10可得 eA?2πiI=eAe2πiI=eA[I+(2πI)+11(2πiI)2+(2πiI)3+…] 2!3!1111=eA{[1-(2π)2+(2π)4-…]+i[2π-(2π)3+(2π)5-…]}I 2!4!3!5!=eA{cos2π+isin2π}I =eA 此题还可用下列方法证明:
?e2πi??eA?2πiI=eA?e2πiI=eA?P????e2πi????1A?1A?P=ePIP=e ???2πi?e? 用同样的方法可证: eA?2πiI=eAe?2πiI. 10.证明:若A为反对称矩阵,则eA是正交矩阵。
AT=-A, 根据第7题的结果得 (eA)T=eA=e?A, 于是有 eA(eA)T=eAeA=eA?A=eO=I
习 题 四 9.求下列矩阵的Hermite标准形和所用的变换矩阵S,并求满秩分解: (1) 对A施行初等行变换 TT 5 ?00??12?????~?01?00? ?02222????24?2?4001???00002?41?????1?10??12??1021??????1S=?00?,A=?02?011?1? ?2???24??22???2?41???????100?10.求下列矩阵的奇异值分解:(1)A???200??;
???500??? (1) ATA??000?的特征值是5,0,0. 分别对应特征向量e1,e2,e3,从而V=I, ?000???V1?(p1),∑=(5), U1?AV1∑?11?1?1??2???=?. 令U2??,U??U1U2?, 则 ????125??5???500??A?U??000?I ??2 11,设A?Cr2Fm?n(r>0),?i (i = 1,2,3,..,r)是A的非零奇异值,证明AF=??i2 i?1Hr证明:根据第一章定理1.5, AHA的特征值之和为其迹,而由第二章2.7 F-范数的定义 A?tr(AA)?AA的特征值之和=??i2Hr i?1 6 包含总结汇报、人文社科、党团工作、办公文档、IT计算机、工作范文、经管营销、资格考试、旅游景点以及矩阵论简明教程课后习题与答案解析等内容。本文共2页
相关内容搜索当前位置:
&【求助】想请教一个如何求解旋转矩阵的问题
【求助】想请教一个如何求解旋转矩阵的问题
作者 du219
想请教一个如何求解旋转矩阵的问题哦
已知一条直线分别在两个三维坐标系中的方向,如[Mb,Nb,Pb]和[Md,Nd,Pd]
能否求出这两个坐标系之间的旋转矩阵R,如果能求,能否请帮忙给出,谢谢!!
如果你给出的两个向量的模长相等,可以求出,不过不是唯一的
设求矩阵R,使得R a=b.
只需把a单位化为a1,并找到a2,a3,使得(a1,a2,a3)为空间的标准正交基。同样,将b单位化,并使得(b1,b2,b3)为空间的标准正交基。
则:R=(b1,b2,b3)(a1,a2,a3)^{-1}
其中(a1,a2,a3)为列向量分别为a1,a2,a3构成的矩阵。
ps:如果你给出的是两组方向,并且满足一定的条件,则那个“旋转”矩阵是唯一的,
多谢您的解答,不过没太明白。
首先,我给出的就是l两个用于表述方向的3*1的列向量a和b,其元素满足ax^2+ay^2+az^2=1和bx^2+by^2+bz^2=1 ,那么还需要满足什么样的条件,才能得出唯一的旋转矩阵,使得& &R a = b
另外,这个R矩阵应该是个3*3的矩阵,没法用您说的方法解决吧?
这个R矩阵虽然有9个元素,但是如果用欧拉角来表述的话,实际上未知的就是三个欧拉角了
哈,有些想明白了,是不是R=[ax ay az][bx by bz]T
这样就得出了这个3*3的旋转矩阵?请高人确定下,谢谢
不知道你这个解决了没有
24小时热帖
下载小木虫APP
与700万科研达人随时交流当前位置: >>
PQ潮流程序,PQ分解法潮流计算程序
%----------节点导纳矩阵程序 lfybus.m---------tic % 计时开始 i=sqrt(-1); j=sqrt(-1); nl=linedata(:,1); nr=linedata(:,2); R=linedata(:,3); X=linedata(:,4); Bc=j*linedata(:,5); a=linedata(:, 6); nbr=length(linedata(:,1)); nbus=max(max(nl), max(nr)); Z=R + j*X; y=ones(nbr,1)./Z; %支路导纳 for n=1:nbr if a(n)&=0 a(n)=1; else end Ybus=zeros(nbus,nbus); % 将 Ybus 初始化为 0 % ---非对角元素的形成--for k=1: Ybus(nl(k),nr(k))=Ybus(nl(k),nr(k))-y(k)/a(k); Ybus(nr(k),nl(k))=Ybus(nl(k),nr(k)); end end %---对角元素的形成--for n=1:nbus for k=1:nbr if nl(k)==n Ybus(n,n)=Ybus(n,n)+y(k)/(a(k)^2) + Bc(k); elseif nr(k)==n Ybus(n,n)=Ybus(n,n)+y(k) +Bc(k); else, end end end%----------PQ 分解法潮流程序 decouple.m---------%1.快速解耦法电力系统潮流计算(PQ 分解法) %2.数据准备;用户需要在命令窗口编写 busdata 和 linedata 两个数据文件 basemva=100; accuracy=0.0001; maxiter=50; ns=0; Vm=0; delta=0; yload=0; deltad=0; nbus = length(busdata(:,1)); kb=[]; Vm=[]; delta=[]; Pd=[]; Qd=[]; Pg=[]; Qg=[]; Qmin=[]; Qmax=[]; Pk=[]; P=[]; Qk=[]; Q=[]; S=[]; V=[]; for k=1:nbus n=busdata(k,1); kb(n)=busdata(k,2); Vm(n)=busdata(k,3); delta(n)=busdata(k,4); Pd(n)=busdata(k,5); Qd(n)=busdata(k,6); Pg(n)=busdata(k,7); Qg(n) = busdata(k,8); Qmin(n)=busdata(k, 9); Qmax(n)=busdata(k,10); Qsh(n)=busdata(k,11); if Vm(n) &= 0 Vm(n) = 1.0; V(n) = 1 + j*0; else delta(n) = pi/180*delta(n); V(n) = Vm(n)*(cos(delta(n)) + j*sin(delta(n))); P(n)=(Pg(n)-Pd(n))/ Q(n)=(Qg(n)-Qd(n)+ Qsh(n))/ S(n) = P(n) + j*Q(n); end if kb(n) == 1 ns = ns+1; else, end nss(n) = end Ym = abs(Ybus); t = angle(Ybus); ii=0; for ib=1:nbus if kb(ib) == 0 | kb(ib) == 2 ii = ii+1; jj=0; for jb=1:nbus if kb(jb) == 0 | kb(jb) == 2 jj = jj+1; B1(ii,jj)=imag(Ybus(ib,jb)); else,end end else, end end ii=0; for ib=1:nbus if kb(ib) == 0 ii = ii+1; jj=0; for jb=1:nbus if kb(jb) == 0 jj = jj+1; B2(ii,jj)=imag(Ybus(ib,jb)); else,end end else, end end B1inv=inv(B1); B2inv = inv(B2); maxerror = 1; converge = 1; iter = 0; mline=ones(nbr,1); for k=1:nbr for m=k+1:nbr if((nl(k)==nl(m)) & (nr(k)==nr(m))); mline(m)=2; elseif ((nl(k)==nr(m)) & (nr(k)==nl(m))); mline(m)=2; else, end end end % decouple 程序开始迭代 while maxerror &= accuracy & iter &= maxiter %检验不平衡功率 iter = iter+1; id=0; iv=0; for n=1:nbus nn=n-nss(n); J11=0; J33=0; for ii=1:nbr if mline(ii)==1 if nl(ii) == n | nr(ii) == n if nl(ii) == n, l = nr(ii); end if nr(ii) == n, l = nl(ii); end J11=J11+ Vm(n)*Vm(l)*Ym(n,l)*sin(t(n,l)- delta(n) + delta(l)); J33=J33+ Vm(n)*Vm(l)*Ym(n,l)*cos(t(n,l)- delta(n) + delta(l)); else , end else, end end Pk = Vm(n)^2*Ym(n,n)*cos(t(n,n))+J33; Qk = -Vm(n)^2*Ym(n,n)*sin(t(n,n))-J11; if kb(n) == 1 P(n)=Pk; Q(n) = Qk; end if kb(n) == 2 Q(n)=Qk; Qgc = Q(n)*basemva + Qd(n) - Qsh(n); if Qmax(n) ~= 0 if iter &= 20 if iter &= 10 if Qgc & Qmin(n), Vm(n) = Vm(n) + 0.005; elseif Qgc & Qmax(n), Vm(n) = Vm(n) - 0.005; end else, end else,end else,end end if kb(n) ~= 1 id = id+1; DP(id) = P(n)-Pk; DPV(id) = (P(n)-Pk)/Vm(n); end if kb(n) == 0 iv=iv+1; DQ(iv) = Q(n)-Qk; DQV(iv) = (Q(n)-Qk)/Vm(n); end end Dd=-B1\DPV'; DV=-B2\DQV'; id=0; iv=0; for n=1:nbus if kb(n) ~= 1 id = id+1; delta(n) = delta(n)+Dd(id); end if kb(n) == 0 iv = iv+1; Vm(n)=Vm(n)+DV(iv); end end maxerror=max(max(abs(DP)),max(abs(DQ))); if iter == maxiter & maxerror & accuracy fprintf('\nWARNING: Iterative solution did not converged after ') fprintf('%g', iter), fprintf(' iterations.\n\n') fprintf('Press Enter to terminate the iterations and print the results \n') converge = 0; pause, else, end end if converge ~= 1 tech= (' tech=(' end k=0; V = Vm.*cos(delta)+j*Vm.*sin(delta); deltad=180/pi* clear A; clear DC; clear DX i=sqrt(-1); for n = 1:nbus迭代不收敛'); else, PQ 分解法潮流计算'); if kb(n) == 1 S(n)=P(n)+j*Q(n); Pg(n) = P(n)*basemva + Pd(n); Qg(n) = Q(n)*basemva + Qd(n) - Qsh(n); k=k+1; Pgg(k)=Pg(n); elseif kb(n) ==2 S(n)=P(n)+j*Q(n); Qg(n) = Q(n)*basemva + Qd(n) - Qsh(n); k=k+1; Pgg(k)=Pg(n); end yload(n) = (Pd(n)- j*Qd(n)+j*Qsh(n))/(basemva*Vm(n)^2); end busdata(:,3)=Vm'; busdata(:,4)=deltad'; Pgt = sum(Pg); Qgt = sum(Qg); Pdt = sum(Pd); Qdt = sum(Qd); Qsht = sum(Qsh); clear Pk Qk DP DQ J11 J33 B1 B1inv B2 B2inv DPV DQV Dd delta ib id ii iv jb jj%----------显示输出程序 busout.m---------disp(tech) fprintf(' fprintf(' head =[' ' Mvar ' 'Bus No.最大功率误差 = %g \n', maxerror) 迭代次数 = %g \n\n', iter) Voltage Angle ------Load--------Generation--Mag. Degree MW Mvar MWInjected' Mvar']; disp(head) for n=1:nbus fprintf(' %5g', n), fprintf(' %8.4f', Vm(n)), fprintf(' %9.4f', deltad(n)), fprintf(' %10.4f', Pd(n)), fprintf(' %10.4f', Qd(n)), fprintf(' %10.4f', Pg(n)), fprintf(' %10.4f ', Qg(n)), fprintf(' %9.4f\n', Qsh(n)) end fprintf(' \n'), fprintf(' Total fprintf(' %10.4f', Pdt), fprintf(' %10.4f', Qdt),') fprintf(' %10.4f', Pgt), fprintf(' %10.4f', Qgt), fprintf(' %10.4f\n\n', Qsht)%----------线路功率分布程序 lineflow---------SLT = 0; fprintf('\n') fprintf(' 线路潮流及损耗 \n\n') fprintf(' ---线路--母线和线路潮流分布 ---线路损耗--比\n') fprintf(' from to MW Mvar MVA MW k\n') for n = 1:nbus busprt = 0; for L = 1: if busprt == 0 fprintf(' \n'), fprintf('%6g', n), fprintf(' %10.4f', P(n)*basemva) fprintf('%10.4f', Q(n)*basemva), fprintf('%10.4f\n', abs(S(n)*basemva)) busprt = 1; else, end if nl(L)==n k = nr(L); In = (V(n) - a(L)*V(k))*y(L)/a(L)^2 + Bc(L)/a(L)^2*V(n); Ik = (V(k) - V(n)/a(L))*y(L) + Bc(L)*V(k); Snk = V(n)*conj(In)* Skn = V(k)*conj(Ik)* SL = Snk + S SLT = SLT + SL; elseif nr(L)==n k = nl(L); In = (V(n) - V(k)/a(L))*y(L) + Bc(L)*V(n); Ik = (V(k) - a(L)*V(n))*y(L)/a(L)^2 + Bc(L)/a(L)^2*V(k); Snk = V(n)*conj(In)* Skn = V(k)*conj(Ik)* SL = Snk + S SLT = SLT + SL; else, end if nl(L)==n | nr(L)==n fprintf('%12g', k), fprintf('%10.4f', real(Snk)), fprintf('%10.4f', imag(Snk)) fprintf('%10.4f', abs(Snk)), fprintf('%10.4f', real(SL)), if nl(L) ==n & a(L) ~= 1 fprintf('%10.4f', imag(SL)), fprintf('%10.4f\n', a(L))变压器变 Mvar else, fprintf('%10.4f\n', imag(SL)) end else, end end end SLT = SLT/2; fprintf(' \n'), fprintf(' 总损耗 fprintf(' %10.4f', real(SLT)) fprintf('%10.4f\n', imag(SLT)) clear Ik In SL SLT Skn Snk toc % 计时结束')
牛顿法PQ分解法潮流计算过程_电力/水利_工程科技_专业资料 暂无评价|0人阅读|0次下载|举报文档 牛顿法PQ分解法潮流计算过程_电力/水利_工程科技_专业资料。牛顿法...10) 计算平衡节点功率和线路功率及网损。 通过利用 C/C++语言,编写了基于 PQ 分解法的任意节点电力系统交流潮流计算程序。在 程序中电力系统的原始数据(如节点...《电力系统计算机辅助分析》上机实验 计算中心 210 电自 092 班 2012 年学号 ...PQ 分解法潮流程序 教师评语 教师签名: 年一、上机实验目的 1、了解 MATLAB ...function % PQ %用 PQ 分解法计算大电网潮流 %bus 数组 1.节点编号 2.节点电压 3.节点电压角度 4.注入有功 5.注入无功 6.节点类型 (1PQ 2PV 3 平衡)...以下是每次迭代后各节点的电压值(如图所示) 三、程序说明 1、PQ 分解法潮流计算的计算机方法快速分解法又称 PQ 分解法, 是从简化牛顿法极坐标形式计算潮流程序的...//PQ 分解法解潮流程序 #include&stdio.h& #include&math.h& #define N 5 //节点数 #define n_PQ 3 //PQ 节点数 #define n_PV 1 //PV 节点数 #...该程序用于粗略的计算中小 型电力网络的潮流,实现...This paper introduces the PQ mode power flow calculation...i min 2.3.2.2 PQ 分解法潮流计算 P-Q 分解...基于MATLAB软件的PQ分解法潮流计算毕业论文_其它_高等教育_教育专区
暂无评价|0人阅读|0次下载 基于MATLAB软件的PQ分解法潮流计算毕业论文_其它_高等教育_教育专区...PQ分解法源程序 7页 2财富值 PQ分解法潮流程序 9页 1财富值 ...('请输入 PQ 节点数 na='); Y=zeros(n);YI=zeros(n);e=zeros(1,n)...48 II 王刚:带二阶项的快速潮流研究 1.绪 论 1.1 电力系统潮流计算的意义潮流计算是研究电力系统稳态运行情况的一种基本电气计算,通过潮流计算 可以就给定的...
All rights reserved Powered by
www.tceic.com
copyright &copyright 。文档资料库内容来自网络,如有侵犯请联系客服。单片机、电路板
连接器、接插件
其他元器件
十字链表在电力系统潮流计算中的应用
十字链表在电力系统潮流计算中的应用
在上海电力局2020年规划设计中,要对多种运行方式及网架结构进行计算。在计算过程中发现:如果采用通常的压缩数组存储方法,需要进行大量的修改工作。因此本文提出十字链表方法,将网络的拓扑结构与数值信息存于十字链表中,使其独立于计算,能保证数据的可重用性和灵活性。这种方法适用于与拓扑相关密切的电力系统计算,本文就潮流计算作简单介绍。 1十字链表1.1十字链表简介稀疏矩阵的十字链表(orthogonallinkedlist)表示法是
在上海电力局2020年规划设计中,要对多种运行方式及网架结构进行计算。在计算过程中发现:如果采用通常的压缩数组存储方法,需要进行大量的修改工作。因此本文提出十字链表方法,将网络的拓扑结构与数值信息存于十字链表中,使其独立于计算,能保证数据的可重用性和灵活性。这种方法适用于与拓扑相关密切的电力系统计算,本文就潮流计算作简单介绍。 1十字链表1.1十字链表简介稀疏矩阵的十字链表(orthogonallinkedlist)表示法是用多重链表来存储稀疏矩阵的。稀疏矩阵中的每一个非零元素用一个结点来表示。一般结点由5个域组成。如图1(a)所示,其中行(row)、列(col)、值域(val)分别表示某非零元素所在行号、列号和数值。向下指针(down)用以链接同一列中表示下一个非零元素的结点,向右指针(right)用以链接同一行中表示下一个非零元素的结点。这样,表示每一行中非零元素的结点之间构成一个循环链表,表示每一列中的非零元素的结点之间也构成一个循环链表。同时,每行、每列的循环链接表都有一个表头结点,以利于结点的插入和删除等操作。表头结点的行号、列号以及数值域都没有用。为节约存储,可将这两组空表头结点合用。每一个表头结点的向下指针链接对应列的非零元素结点,向右指针用以链接相应行的非零元素结点。此外,借用数值域来作为将各个空表头结点也链接成一个链表的指针。整个表有一个总的空表头指针,在一般结点标以行号、列号处标以矩阵行数m、列数n。有一个指针(root)指向这个总表头结点。由于总表头结点链接着各行列的表头结点,所以由这个指向总表头结点的指针就可以逐步访问到此矩阵的所有非零元素。 1.2潮流中十字链表的形成在潮流计算中,考虑到电力系统的特殊性,对十字链表进行了部分简化。(1)每个链表为单向链表,链表中的非零元素按其行号大小排序。(2)非零元素省略其向下指针及行值,省略列表头结点。(3)行表头结点省略其行、列及值域,增加对角元指针指向矩阵对角元,总表头结点就是行表头结点链表的表头。如果表头结点在表头结点链表中的位置为nCol,则此行链接的非零元素链表中的结点都是与第nCol结点相关联的。表头结点中有两个非零元素结点的指针和一个表头结点指针。第一个非零元素结点指针mpRight指向本行链表中第一个非零元素,第二个非零元素结点指针mpCorner指向本行链表中与对应行具有相同行号的非零元素,即对角元。表头结点指针指向下一行的表头结点。 结点有3个成员,指针mpRight指向下一个与本行表头结点相关联的结点,Data包含着与这种关联对应的数值或某种结构体。本文中包含导纳,mnCol则是此非零元素结点的结点号。2十字链表潮流方法2.1导纳矩阵的形成在一般的潮流计算中,形成导纳矩阵的要预先在程序中开出足够大的数组。虽然采用了压缩存储技术,但是静态数组的缺点无法克服。程序无法确切知道所需内存空间的大小,只得开出比较大的数组。这样节点数比较小时,内存空间浪费了;节点数大时,程序无法处理。十字链表的优点在于,所有结点所需内存都是动态申请的,包括表头结点(其多少由节点数决定)和非零元素结点(其多少由支路数决定)。在此矩阵中,对角元的Data为节点自导纳,非对角元的Data为该非零元素对应节点与其表头结点对应节点之间的互导。读入节点数之后,程序即对表头结点链表初始化。表头结点数目比节点数大一,最后一个表头结点链接的链表存储节点对地导纳。随后每读入一个节点,就在对应的表头结点后插入一个对角元,并将对角元指针指向它;每读入一条支路,如果是一条新的支路,就在此支路的每一个节点对应的表头结点后都插入一个对应另一个节点的非零元素结点,然后修改这两个节点的互导,否则直接修改互导。所有互导形成完后,就可计算每个节点的自导了。方法是累加本表头结点后的链表中的所有非零元素的Data值,然后乘以-1。节点的对地导纳可将这一部分计算在内。root指针指向总表头结点即表头结点链表中的第一个结点。这个导纳矩阵中包含了网架的拓扑结构和与此相关的数值。程序中这个矩阵是基本不变的。原始数据存储在这个矩阵中具有相对独立性。2.2B1,B2的形成本文中潮流计算采用PQ分解法。矩阵B1是原导纳矩阵去掉松弛节点形成的矩阵,B1矩阵的所有数据均取自原导纳矩阵,所不同的是节点的行号。导纳矩阵中节点的行号是原有节点的节点号,而B1矩阵中节点的行号是导纳矩阵中去掉松弛节点后重新排成的节点号。程序必须记录这种节点号的对应关系。矩阵B2是原导纳矩阵去掉松弛节点和PQ 节点后形成的矩阵。同理,程序也必须记录B2矩阵的节点号与原导纳矩阵节点号的对应。若考虑节点的对地导纳,只需访问表头结点链表中对地导纳对应的链表,按行号搜寻即可得到相应的对地导纳。PQ分解法中B1,B2矩阵每次只需形成一次。实际上如果使用牛顿法,每次都需要形成雅可比矩阵,这时导纳矩阵的相对独立性就显得较有优势。十字链表法把网架拓扑结构与相关数值一起存储,其存储结构提供了将数学上的解方程方法与网络分析相分离的基矗以下几个步骤就是纯数学问题了。2.3最优排序及其它一些问题最优排序与其它存储结构的方法原理是一致的,但注入元的处理方法不一样。静态数组的压缩存储对注入元的处理方法是每行末尾预留空间,其缺陷也在于预留空间大小的设定。在十字链表方法中,注入元的处理就十分方便了。如果排序时产生了注入元,只需在对应行各插入一个新的结点就可以了。这样对注入元的处理只需在排序时考虑,而无需在形成矩阵或在系统分析时考虑了。当B1,B2矩阵形成并排过序后,就需要解方程了。主要是因子表的形成与消元和回代。可以采用LU分解法求因子表。原理相同,只需注意十字链表的存储结构。形成了因子表并消元回代之后,方程解出了。然后按照流程,进行反复迭代。功率偏差量小于收敛精度时,就可结束计算了。3算例根据IEEE14节点模型计算的导纳矩阵(只列出部分,导纳矩阵实部略),原始数据中没有计入第9号节点的对地导纳。如上所示,导纳矩阵输出时先输出对角元(访问对角元指针即可得),其后的数据是按照十字链表中的顺序输出的。4结论通常的数组存储方法属于静态数据结构,必须在程序的说明部分给出其类型定义或变量说明。某些程序中使用malloc函数或new操作符动态申请数组,但其数组仍然是空间预留的一种实现,也就仍然存在静态数组的缺点。十字链表属于动态数据结构,它的规模大小在程序执行时是可以变化的。十字链表中结点的数目是在程序执行时动态增长的,导纳矩阵随着数据的输入逐步形成。使用十字链表的存储可使存储的分配较为灵活,更充分的利用内存。对应于电力系统中节点、线路的增加或删除等的结点操作,利用十字链表法比静态数组实现起来要方便而且快速。十字链表法中导纳矩阵的形成本身就是结点的插入操作的结果。例如添加线路的方法与读入数据时添加线路的方法就是完全一样的。 通常的处理方法是将拓扑结构与网架数据分开存储在两个数组里。再利用另一个数组作为索引来访问拓扑结构和数据。十字链表的存储方法将网架的拓扑结构与数据存储在一起。于是,潮流计算中系统分析方法与数学处理方法就能分离开来,各种数据的处理实现模块化。如果在C++中封装十字链表,可以把对十字链表的访问变得如同访问一个二维数组一样方便。封装的十字链表将具有很强的可重用性,作为一种自定义的数据类型,可使程序具有很强的可读性,便于程序的编制和维护。
在上海电力局2020年规划设计中,要对多种运行方式及网架结构进行计算。在计算过程中发现:如果采用通常的压缩数组存储方法,需要进行大量的修改工作。因此本文提出十字链表方法,将网络的拓扑结构与数值信息存于十字链表中,使其独立于计算,能保证数据的可重用性和灵活性。这种方法适用于与拓扑相关密切的电力系统计算,本文就潮流计算作简单介绍。 1十字链表1.1十字链表简介稀疏矩阵的十字链表(orthogonallinkedlist)表示法是用多重链表来存储稀疏矩阵的。稀疏矩阵中的每一个非零元素用一个结点来表示。一般结点由5个域组成。如图1(a)所示,其中行(row)、列(col)、值域(val)分别表示某非零元素所在行号、列号和数值。向下指针(down)用以链接同一列中表示下一个非零元素的结点,向右指针(right)用以链接同一行中表示下一个非零元素的结点。这样,表示每一行中非零元素的结点之间构成一个循环链表,表示每一列中的非零元素的结点之间也构成一个循环链表。同时,每行、每列的循环链接表都有一个表头结点,以利于结点的插入和删除等操作。表头结点的行号、列号以及数值域都没有用。为节约存储,可将这两组空表头结点合用。每一个表头结点的向下指针链接对应列的非零元素结点,向右指针用以链接相应行的非零元素结点。此外,借用数值域来作为将各个空表头结点也链接成一个链表的指针。整个表有一个总的空表头指针,在一般结点标以行号、列号处标以矩阵行数m、列数n。有一个指针(root)指向这个总表头结点。由于总表头结点链接着各行列的表头结点,所以由这个指向总表头结点的指针就可以逐步访问到此矩阵的所有非零元素。 1.2潮流中十字链表的形成在潮流计算中,考虑到电力系统的特殊性,对十字链表进行了部分简化。(1)每个链表为单向链表,链表中的非零元素按其行号大小排序。(2)非零元素省略其向下指针及行值,省略列表头结点。(3)行表头结点省略其行、列及值域,增加对角元指针指向矩阵对角元,总表头结点就是行表头结点链表的表头。如果表头结点在表头结点链表中的位置为nCol,则此行链接的非零元素链表中的结点都是与第nCol结点相关联的。表头结点中有两个非零元素结点的指针和一个表头结点指针。第一个非零元素结点指针mpRight指向本行链表中第一个非零元素,第二个非零元素结点指针mpCorner指向本行链表中与对应行具有相同行号的非零元素,即对角元。表头结点指针指向下一行的表头结点。 结点有3个成员,指针mpRight指向下一个与本行表头结点相关联的结点,Data包含着与这种关联对应的数值或某种结构体。本文中包含导纳,mnCol则是此非零元素结点的结点号。2十字链表潮流方法2.1导纳矩阵的形成在一般的潮流计算中,形成导纳矩阵的要预先在程序中开出足够大的数组。虽然采用了压缩存储技术,但是静态数组的缺点无法克服。程序无法确切知道所需内存空间的大小,只得开出比较大的数组。这样节点数比较小时,内存空间浪费了;节点数大时,程序无法处理。十字链表的优点在于,所有结点所需内存都是动态申请的,包括表头结点(其多少由节点数决定)和非零元素结点(其多少由支路数决定)。在此矩阵中,对角元的Data为节点自导纳,非对角元的Data为该非零元素对应节点与其表头结点对应节点之间的互导。读入节点数之后,程序即对表头结点链表初始化。表头结点数目比节点数大一,最后一个表头结点链接的链表存储节点对地导纳。随后每读入一个节点,就在对应的表头结点后插入一个对角元,并将对角元指针指向它;每读入一条支路,如果是一条新的支路,就在此支路的每一个节点对应的表头结点后都插入一个对应另一个节点的非零元素结点,然后修改这两个节点的互导,否则直接修改互导。所有互导形成完后,就可计算每个节点的自导了。方法是累加本表头结点后的链表中的所有非零元素的Data值,然后乘以-1。节点的对地导纳可将这一部分计算在内。root指针指向总表头结点即表头结点链表中的第一个结点。这个导纳矩阵中包含了网架的拓扑结构和与此相关的数值。程序中这个矩阵是基本不变的。原始数据存储在这个矩阵中具有相对独立性。2.2B1,B2的形成本文中潮流计算采用PQ分解法。矩阵B1是原导纳矩阵去掉松弛节点形成的矩阵,B1矩阵的所有数据均取自原导纳矩阵,所不同的是节点的行号。导纳矩阵中节点的行号是原有节点的节点号,而B1矩阵中节点的行号是导纳矩阵中去掉松弛节点后重新排成的节点号。程序必须记录这种节点号的对应关系。矩阵B2是原导纳矩阵去掉松弛节点和PQ 节点后形成的矩阵。同理,程序也必须记录B2矩阵的节点号与原导纳矩阵节点号的对应。若考虑节点的对地导纳,只需访问表头结点链表中对地导纳对应的链表,按行号搜寻即可得到相应的对地导纳。PQ分解法中B1,B2矩阵每次只需形成一次。实际上如果使用牛顿法,每次都需要形成雅可比矩阵,这时导纳矩阵的相对独立性就显得较有优势。十字链表法把网架拓扑结构与相关数值一起存储,其存储结构提供了将数学上的解方程方法与网络分析相分离的基矗以下几个步骤就是纯数学问题了。2.3最优排序及其它一些问题最优排序与其它存储结构的方法原理是一致的,但注入元的处理方法不一样。静态数组的压缩存储对注入元的处理方法是每行末尾预留空间,其缺陷也在于预留空间大小的设定。在十字链表方法中,注入元的处理就十分方便了。如果排序时产生了注入元,只需在对应行各插入一个新的结点就可以了。这样对注入元的处理只需在排序时考虑,而无需在形成矩阵或在系统分析时考虑了。当B1,B2矩阵形成并排过序后,就需要解方程了。主要是因子表的形成与消元和回代。可以采用LU分解法求因子表。原理相同,只需注意十字链表的存储结构。形成了因子表并消元回代之后,方程解出了。然后按照流程,进行反复迭代。功率偏差量小于收敛精度时,就可结束计算了。3算例根据IEEE14节点模型计算的导纳矩阵(只列出部分,导纳矩阵实部略),原始数据中没有计入第9号节点的对地导纳。如上所示,导纳矩阵输出时先输出对角元(访问对角元指针即可得),其后的数据是按照十字链表中的顺序输出的。4结论通常的数组存储方法属于静态数据结构,必须在程序的说明部分给出其类型定义或变量说明。某些程序中使用malloc函数或new操作符动态申请数组,但其数组仍然是空间预留的一种实现,也就仍然存在静态数组的缺点。十字链表属于动态数据结构,它的规模大小在程序执行时是可以变化的。十字链表中结点的数目是在程序执行时动态增长的,导纳矩阵随着数据的输入逐步形成。使用十字链表的存储可使存储的分配较为灵活,更充分的利用内存。对应于电力系统中节点、线路的增加或删除等的结点操作,利用十字链表法比静态数组实现起来要方便而且快速。十字链表法中导纳矩阵的形成本身就是结点的插入操作的结果。例如添加线路的方法与读入数据时添加线路的方法就是完全一样的。 通常的处理方法是将拓扑结构与网架数据分开存储在两个数组里。再利用另一个数组作为索引来访问拓扑结构和数据。十字链表的存储方法将网架的拓扑结构与数据存储在一起。于是,潮流计算中系统分析方法与数学处理方法就能分离开来,各种数据的处理实现模块化。如果在C++中封装十字链表,可以把对十字链表的访问变得如同访问一个二维数组一样方便。封装的十字链表将具有很强的可重用性,作为一种自定义的数据类型,可使程序具有很强的可读性,便于程序的编制和维护。
上一篇:已经是第一篇
型号/产品名
蒙太奇画室

我要回帖

更多关于 逆矩阵的求法 的文章

 

随机推荐