1樓:匿名使用者
function lianxuchaoliu
clear;
clc;
n=9;%節點數;
nl=9;%支路數;
isb=1;%平衡節點號;
pr=0.00001;%誤差精度;
b1=[1 4 0.0576i 0 1.05 1; 4 5 0.
017+0.092i 0.158i 1 0; 5 6 0.
039+0.17i 0.358i 1 0; 3 6 0.
0586i 0 1.05 1; 6 7 0.0119+0.
1008i 0.209i 1 0; 7 8 0.0085+0.
072i 0.149i 1 0; 8 2 0.0625i 0 1.
05 1; 8 9 0.032+0.161i 0.
306i 1 0; 9 4 0.01+0.085i 0.
176i 1 0];
%依次是支路首端;末端,支路阻抗;對地電納;支路變比;折算到哪一側標誌(高壓側為1;低壓側為0);
b2=[0 0 1.05 1.05 0 1; 1.
63 0 1.05 1.05 0 3; 0.
85 0 1.05 1.05 0 3; 0 0 1 0 0 2; 0 0.
9+0.3i 1 0 0 2; 0 0 1 0 0 2; 0 1+0.35i 1 0 0 2; 0 0 1 0 0 2; 0 1.
25+0.5i 1 0 0 2];
%依次是節點的發電機功率;負荷功率;節點電壓初值;pv節點電壓v給定值;節點無功補償裝置容量;節點分類標號(平衡1;pq2;pv3);
y=zeros(n);%求導納陣;
for i=1:nl
if b1(i,6)==0
p=b1(i,1);q=b1(i,2);
else
p=b1(i,2);q=b1(i,1);
endy(p,q)=y(p,q)-1./(b1(i,3)*b1(i,5));
y(q,p)=y(p,q);
y(q,q)=y(q,q)+1./(b1(i,3)*b1(i,5)^2)+b1(i,4)./2;
y(p,p)=y(p,p)+1./b1(i,3)+b1(i,4)./2;
end%disp('系統的導納陣為:');
%disp(y);
g=real(y);b=imag(y);
for i=1:n
e(i)=real(b2(i,3));
f(i)=imag(b2(i,3));
v(i)=b2(i,4);
endfor i=1:n
s(i)=b2(i,1)-b2(i,2);
b(i,i)=b(i,i)+b2(i,5);
endp=real(s);q=imag(s);
w=zeros(2*n,1);jac=zeros(2*n);
t=0;
while t==0
for i=1:n
if b2(i,6)~=isb
c=0;d=0;
for j=1:n
c=c+g(i,j)*e(j)-b(i,j)*f(j);
d=d+g(i,j)*f(j)+b(i,j)*e(j);
endif b2(i,6)==2%p,q節點;
w(2*i)=p(i)-e(i)*c-f(i)*d;
w(2*i-1)=q(i)-f(i)*c+e(i)*d;
else if b2(i,6)==3%p,v節點;
w(2*i)=p(i)-e(i)*c-f(i)*d;
w(2*i-1)=v(i)^2-(e(i)^2+f(i)^2);
endendelse
w(2*i-1)=0;
w(2*i)=0;
endend%disp(w);
w1=w(3:2*n);
for i=1:n
for j=1:n
if b2(i,6)~=isb
if b2(i,6)==2%p,q節點;
if j~=i
jac(2*i,2*j-1)=-1*(g(i,j)*e(i)+b(i,j)*f(i));
jac(2*i-1,2*j)=(g(i,j)*e(i)+b(i,j)*f(i));
jac(2*i,2*j)=b(i,j)*e(i)-g(i,j)*f(i);
jac(2*i-1,2*j-1)=b(i,j)*e(i)-g(i,j)*f(i);
else if j==i
m=0;h=0;
for r=1:n
m=m+g(i,r)*e(r)-b(i,r)*f(r);
h=h+g(i,r)*f(r)+b(i,r)*e(r);
endjac(2*i,2*j-1)=-1*m-g(i,i)*e(i)-b(i,i)*f(i);
jac(2*i-1,2*j)=-1*m+g(i,i)*e(i)+b(i,i)*f(i);
jac(2*i,2*j)=-1*h+b(i,i)*e(i)-g(i,i)*f(i);
jac(2*i-1,2*j-1)=h+b(i,i)*e(i)-g(i,i)*f(i);
endendelse if b2(i,6)==3%p,v節點;
if j~=i
jac(2*i,2*j-1)=-1*(g(i,j)*e(i)+b(i,j)*f(i));
jac(2*i-1,2*j)=0;
jac(2*i,2*j)=b(i,j)*e(i)-g(i,j)*f(i);
jac(2*i-1,2*j-1)=0;
else if j==i
m=0;h=0;
for r=1:n
m=m+g(i,r)*e(r)-b(i,r)*f(r);
h=h+g(i,r)*f(r)+b(i,r)*e(r);
endjac(2*i,2*j-1)=-1*m-g(i,i)*e(i)-b(i,i)*f(i);
jac(2*i-1,2*j)=-2*f(i);
jac(2*i,2*j)=-1*h+b(i,i)*e(i)-g(i,i)*f(i);
jac(2*i-1,2*j-1)=-2*e(i);
endendendendelse
jac(2*i-1,2*j-1)=0;
jac(2*i,2*j)=0;
jac(2*i-1,2*j)=0;
jac(2*i,2*j-1)=0;
endendend%disp(jac);
jac1=jac(3:2*n,3:2*n);
for k=1:2*n-2
m=0;
for i=k+1:2*n-2
m=jac1(i,k)./jac1(k,k);
w1(i)=w1(i)-m*w1(k);
for j=k+1:2*n-2
jac1(i,j)=jac1(i,j)-m*jac1(k,j);
endendende(2*n-2)=w1(2*n-2)./jac1(2*n-2,2*n-2);
for i=2*n-3:-1:1
c=0;
for k=i+1:2*n-2
c=c+jac1(i,k)*e(k);
e(i)=(w1(i)-c)./jac1(i,i);
endend%disp(e);
for i=1:n-1
e(i+1)=e(i+1)-e(2*i-1);
f(i+1)=f(i+1)-e(2*i);
end%disp(e);
%disp(f);
for i=1:n-1
b(2*i-1)=abs(e(2*i-1));
b(2*i)=abs(e(2*i));
endkb=max(b);
%disp(kb);
if kb1%以切向量中分量最大(絕對值最大)的狀態變數選定為連續引數;
for i=1:2*n-2
jd(i)=abs(d(i));
endfor i=1:2*n-3
if jd(i)>=jd(i+1)
zd=jd(i);ek=i;
else if jd(i)<=jd(i+1)
zd=jd(i+1);ek=i+1;
endendendfor j=1:2*n-1
jj1(2*n-1,j)=0;
endjj1(2*n-1,ek)=1;
w2=zeros(2*n-1,1);
for i=1:2*n-1
w2(i,1)=0;
endif d(ek)>0
w2(ek,1)=1;
else if d(ek)<0
w2(ek,1)=-1;
endendendfor k=1:2*n-1
m=0;
for i=k+1:2*n-1
m=jj1(i,k)./jj1(k,k);
w2(i)=w2(i)-m*w2(k);
for j=k+1:2*n-1
jj1(i,j)=jj1(i,j)-m*jj1(k,j);
endendendd(2*n-1)=w2(2*n-1)./jj1(2*n-1,2*n-1);
for i=2*n-2:-1:1
c=0;
for k=i+1:2*n-1
c=c+jj1(i,k)*d(k);
d(i)=(w2(i)-c)./jj1(i,i);
endend%disp(d);
for i=1:n-1
e(i+1)=e(i+1)+l*d(2*i-1);
f(i+1)=f(i+1)+l*d(2*i);
endt=t+l*d(2*n-1);
disp(d(2*n-1));
%disp(e);
%disp(f);
%disp(t);
%對預估的近似解進行校正;
tt=0;
while tt==0
for i=1:n
if b2(i,6)~=isb
c=0;d=0;
for j=1:n
c=c+g(i,j)*e(j)-b(i,j)*f(j);
d=d+g(i,j)*f(j)+b(i,j)*e(j);
endif b2(i,6)==2% p,q節點;
if b2(i,2)~=0
wj(2*i)=p(i)-t*real(b2(i,2))-e(i)*c-f(i)*d;
wj(2*i-1)=q(i)-t*imag(b2(i,2))-f(i)*c+e(i)*d;
else
wj(2*i)=p(i)-e(i)*c-f(i)*d;
wj(2*i-1)=q(i)-f(i)*c+e(i)*d;
endelse if b2(i,6)==3%p,v節點;
wj(2*i)=p(i)+t*1.5*1.05-e(i)*c-f(i)*d;
wj(2*i-1)=0;
endendelse
wj(2*i)=0;
wj(2*i-1)=0;
endendwj1=wj(3:2*n);
for i=1:n
for j=1:n
if b2(i,6)~=isb
if b2(i,6)==2%p,q節點;
if j~=i
jjac(2*i,2*j-1)=-1*(g(i,j)*e(i)+b(i,j)*f(i));
jjac(2*i-1,2*j)=(g(i,j)*e(i)+b(i,j)*f(i));
jjac(2*i,2*j)=b(i,j)*e(i)-g(i,j)*f(i);
jjac(2*i-1,2*j-1)=b(i,j)*e(i)-g(i,j)*f(i);
else if j==i
m=0;h=0;
for r=1:n
m=m+g(i,r)*e(r)-b(i,r)*f(r);
h=h+g(i,r)*f(r)+b(i,r)*e(r);
endjjac(2*i,2*j-1)=-1*m-g(i,i)*e(i)-b(i,i)*f(i);
jjac(2*i-1,2*j)=-1*m+g(i,i)*e(i)+b(i,i)*f(i);
jjac(2*i,2*j)=-1*h+b(i,i)*e(i)-g(i,i)*f(i);
jjac(2*i-1,2*j-1)=h+b(i,i)*e(i)-g(i,i)*f(i);
endendelse if b2(i,6)==3%p,v節點;
if j~=i
jjac(2*i,2*j-1)=-1*(g(i,j)*e(i)+b(i,j)*f(i));
jjac(2*i-1,2*j)=0;
jjac(2*i,2*j)=b(i,j)*e(i)-g(i,j)*f(i);
jjac(2*i-1,2*j-1)=0;
else if j==i
m=0;h=0;
for r=1:n
m=m+g(i,r)*e(r)-b(i,r)*f(r);
h=h+g(i,r)*f(r)+b(i,r)*e(r);
endjjac(2*i,2*j-1)=-1*m-g(i,i)*e(i)-b(i,i)*f(i);
jjac(2*i-1,2*j)=-2*f(i);
jjac(2*i,2*j)=-1*h+b(i,i)*e(i)-g(i,i)*f(i);
jjac(2*i-1,2*j-1)=-2*e(i);
endendendendelse
jjac(2*i-1,2*j-1)=0;
jjac(2*i,2*j)=0;
jjac(2*i-1,2*j)=0;
jjac(2*i,2*j-1)=0;
endendendjjac1=jjac(3:2*n,3:2*n);
for k=1:2*n-2
m=0;
for i=k+1:2*n-2
m=jjac1(i,k)./jjac1(k,k);
wj1(i)=wj1(i)-m*wj1(k);
for j=k+1:2*n-2
jjac1(i,j)=jjac1(i,j)-m*jjac1(k,j);
endendende1(2*n-2)=wj1(2*n-2)./jjac1(2*n-2,2*n-2);
for i=2*n-3:-1:1
c=0;
for k=i+1:2*n-2
c=c+jjac1(i,k)*e1(k);
e1(i)=(wj1(i)-c)./jjac1(i,i);
endend%disp(e1);
for i=1:n-1
e(i+1)=e(i+1)-e1(2*i-1);
f(i+1)=f(i+1)-e1(2*i);
endfor i=1:n-1
bx(2*i-1)=abs(e1(2*i-1));
bx(2*i)=abs(e1(2*i));
endkb1=max(bx);
if kb10
ttt=0;ccc=ccc+1;
else
ttt=1;
endend
disp(t);
disp(ccc);
%disp(e);
%disp(f);
for i=1:n
fz1(i)=sqrt(e(i)^2+f(i)^2);
enddisp(fz1);
MATLAB程式設計問題 我編寫了迭代計算程式,裡
subscript indices must either be real positive integers or logicals.這個報錯的意bai 思就是,你的陣列腳du標出現 zhi0或負值或者小數了。matlab的腳標必 dao須回是正整數。像a 1 a 2 如果出答現a 1.1 a 1...
matlab簡單影象處理的程式,共執行了均值,中值濾波,然後計算各個處理後影象的MSE,PSNR等值
其實你列舉的幾種方法和增強處理之間是有重疊的,建議你看一些影象增強的例子,先有個直觀感受,然後才好理解這些概念。學影象處理,未必要把各種方法妥善,qaazbi 做影象處理別總用matlab,多用用vc matlab中值濾波影象處理 40 medfilt2 a,m n m n 表示濾波器的大小,即是m...
求用matlab編寫求完全數的程式
先編乙個求因子的程式,然後判斷因子之和等於因子之積,例如6的因子1 2 3 1 2 3,是一 專個完全數 m input 請輸入屬m的值 所求 完全數範圍 下限n input 請輸入n的值 所求 完全數範圍 上限for s m n y 0 for i 1 s 2 if mod s,i 0 y y i...