设为首页收藏本站|繁體中文 快速切换版块

 找回密码
 立即加入
搜索
查看: 2822|回复: 3

求助,MATLAB程序运行时出错,怎么改?

[复制链接]

该用户从未签到

尚未签到

发表于 2008-6-2 17:32:09 | 显示全部楼层 |阅读模式

马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!

您需要 登录 才可以下载或查看,没有账号?立即加入

×
各位前辈们,有谁特别熟悉MATLAB软件?帮我看下这个程序,为什么运行的时候,总是提示我这个错误:
+ J" I  N  L3 h' \ Warning: Divide by zero.9 G9 r  p' f! \  Z4 B+ M2 W# L' h
> In lllllllll at 17& Y' Z: i1 h7 J/ a: v& c; b( e
Warning: Divide by zero.
$ e8 \' c3 i% x> In lllllllll at 18/ Z* x1 j+ ^1 U& \2 S
??? Attempted to access G(0,0); index must be a positive integer or logical." G- Q8 j" M' D* p5 k
Error in ==> lllllllll at 29
# @4 f% ^2 L0 s9 V) ]6 S    G(i,i)=G(i,i)+gij/(k^2);8 F+ y  D7 s. Z, Y, c

' w7 b1 k! n1 |+ H5 h  J  Y! ]3 l8 x9 t; `' ]# ?0 m
程序如下:
9 R8 K4 x/ }1 \/ ~%牛顿——拉夫逊法进行潮流计算
# ^/ [7 {* j/ F. ?. z4 cn=input('请输入节点数:n=')  ^8 }. A1 s/ Y: e
nl=input('请输入支路数:nl=')0 W- k3 J/ b7 q1 t" u3 g( {
isb=input('请输入平衡母线节点号:isb=')
) J/ v8 h& O/ y. G+ [8 d9 T/ ZA=input('请输入由支路参数形成的矩阵: A=')
" c! R4 C* W: q9 j5 n/ R, ?' DA=zeros(nl,5);/ P, D& C/ A& `8 W" T  m
G=zeros(n)/ \2 u; R5 W: B
B=zeros(n)7 M! H, F5 ?# Q$ S4 p# m
for a=1:nl
2 ?+ E7 v5 c* k& wi=A(a,1);5 m$ `8 _( R. O, J
j=A(a,2);
0 m+ J- J; Y) dr=A(a,3);
/ V7 A4 j- L; I. Wx=A(a,4);3 M7 X6 C* r. f. r
k=A(a,5);: k+ p' w( g5 L" S% ?! W
z=r*r+x*x;
) [9 L" R/ s3 z7 T' zgij=r/z;
# R9 b6 E. N9 O9 A/ z! R3 G7 bbij=-x/z;( L) ^! j* D' Q2 y( k4 l
       if(k<0)( o! N6 Q- p, \4 c, w6 I
          k=abs(k);, T7 ]! ~! d4 n
        G(i,i)=G(i,i)+gij;
/ R( t+ y% c* R9 Y0 Z        B(i,i)=B(i,i)+bij+k;
! u  |6 s* w8 X# g9 x$ J        G(j,j)=G(j,j)+gij;
8 C6 R. Q* O) a        B(j,j)=B(j,j)+bij+k;
& P8 r! h  O5 W0 b0 p- ?& s$ W        G(i,j)=-gij;
1 `0 Z. Z, t1 p3 H0 ^4 a        B(i,j)=-bij;' ]4 h! S# u+ o/ M6 x1 ~% m- W
elseif(k==0)
# E# D* |& i  v5 T7 s6 c! l8 c2 n1 j    k=1;
/ l. n% ~3 R% {% O6 `+ V- e9 K    G(i,i)=G(i,i)+gij/(k^2);
8 ?. m9 y# ^+ |5 S    B(i,i)=B(i,i)+bij/(k^2);/ {% D% w3 [9 c
    G(j,j)=G(j,j)+gij;, N7 @9 K, L0 Z+ a' F% ]5 W
    B(j,j)=B(j,j)+bij;, x3 Y5 |* c3 N: Y
    G(i,j)=-gij/k;
( h5 f% w2 v3 _* D( O    B(i,j)=-bij/k;
0 F3 a" C6 u# _- ^. N7 i( F: Relseif(k>0)7 E4 O0 Y$ b, ]+ K+ e% s! z9 w1 s
    G(i,i)=G(i,i)+gij/(k*k);
" R. h2 U* ~$ Z$ Z% M1 B6 T7 T    B(i,i)=B(i,i)+bij/(k*k);3 f! B4 n. w% @& O$ |  Q2 r" x
        G(j,j)=G(j,j)+gij;
; t( B- {1 i/ V) m        B(j,j)=B(j,j)+bij;, ~/ ~( o$ K) ^. g# @
        G(i,j)=-gij/k;' D9 ]* @0 G8 [0 b
    B(i,j)=-bij/k;& w/ Q* O$ B' t0 n- I8 C9 o
end
' c: o' o( O8 I4 v2 z$ I; Xif(i>j): @$ g! J% u' e1 k( k3 q) Q
           G(j,i)=G(i,j);/ q/ R! Y0 s) `% \2 d9 @
           B(j,i)=B(i,j);
5 p9 v, u. P7 L8 @end
* n( J- j% @. k9 u/ |+ B; ]" `8 kend7 t5 [4 K, G: t4 d$ F7 R3 N
for a=1:n
; Y: d6 n) I+ `. x; N     for b=1:n
$ x$ {4 w. O+ Y7 z( `$ J4 J/ \4 ?6 g1 D        if(a<b)
. M9 |6 \' Z6 Z0 f. S+ `. y6 f5 |            G(b,a)=G(a,b);" z0 S! G. E: `- ^
            B(b,a)=B(a,b);
! Y' e7 l# a; S4 X7 ^        end
4 Q* Z6 _' r, t( _3 ^, i- v3 [3 w; h     end7 g7 n: r8 a% _% R7 C
end6 e5 a3 B. v( {# d: _
n=input('请输入节点数:n=')
/ B1 K$ E! h2 U! V! Znl=input('请输入支路数:nl=')2 f' V0 @. h8 A
isb=input('请输入平衡母线节点号:isb=')+ t1 @5 U/ x" q% R. D# l6 C
g=0%迭代次数0 B+ O& i* u; b: d9 ^* o( E$ h' Y5 I
e=input('请输入各节点参数形成的矩阵: e=')%%%%%%%%%%原始数据输入- _  G2 ?! P$ \
f=input('请输入各节点参数形成的矩阵: f='), E. t% d6 n0 K! d& q3 B
Pis=input('请输入各节点参数形成的矩阵: Pis='); `: b0 Z  H' M9 l& r
Qis=input('请输入各节点参数形成的矩阵: Qis=')( _; M  z. Y+ T2 j  X' M
e=zeros(n,1)9 E4 {5 a: E0 G$ ?
f=zeros(n,1)1 K1 V& T0 A) m  m$ I. g
Pis=zeros((n-1),1)
. \6 K1 i7 A* w Qis=zeros((n-1),1)
9 @2 ?% P1 V0 x8 U  vmax=1& v8 k: R2 ^; U" q
while(max>1.0e-5)
% W1 ~! i$ `* Y) l' VA=input('请输入由支路参数形成的矩阵: A=')
% `# N4 K2 T9 V6 M- }, HG=zeros(n,n)
/ i6 d9 j; u" E) [B=zeros(n,n)! i9 w: d6 _/ l( a! i( R; [
for a=1:nl
* ]9 @: y6 C( S: h- A! D    i=A(a,1)
4 x( L3 Y4 i( A/ k0 ij=A(a,2)9 Y, r1 g! ^, m2 w2 T
r=A(a,3)  y5 k  P0 _% x3 M; L2 C* p
x=A(a,4). U; c9 c- ?% \" `+ V
k=A(a,5)( Z5 s6 h, i' L- P6 y' I7 _) O
z=r*r+x*x) ?8 L7 Z9 a7 d( W+ f
gij=r/z( `8 `7 [  V! z2 c$ q* ^
       bij=-x/z% J" `/ H( l9 i8 q+ z
       if(k<0)( ]5 Q/ ]' `7 z6 k3 |
          k=abs(k);5 t% Z# Y0 b6 P3 a; z
        G(i,i)=G(i,i)+gij;
/ T# e0 q/ c* N+ x5 F6 w1 W        B(i,i)=B(i,i)+bij+k;
/ t/ y$ N. x# Z; C' T        G(j,j)=G(j,j)+gij;
9 E# f' K5 c+ ~" l2 x. h% J        B(j,j)=B(j,j)+bij+k;5 \! u  B4 k6 l+ O
        G(i,j)=-gij;
/ E% K3 l( V7 O. V& l- r8 S# f4 g            B(i,j)=-bij;
  j7 D% f4 k8 ]2 i7 aelseif(k==0)
+ ^9 ^' T: G: B7 H    k=1;1 j$ b! B* n8 b  M8 C
G(i,i)=G(i,i)+gij/(k*k);
5 `, P3 i/ b1 h! Z1 T- j" k    B(i,i)=B(i,i)+bij/(k*k);
( `) m% S. h* t+ H5 U. C! W, R        G(j,j)=G(j,j)+gij;7 w5 k6 u' g% w) k9 x" j
        B(j,j)=B(j,j)+bij;  {; ]8 ~+ b6 C
        G(i,j)=-gij/k;' b- p  C  @! N5 u7 m4 I4 y/ [
    B(i,j)=-bij/k;
0 S8 y* r; z0 V3 O3 v% X$ {8 Selseif(k>0)/ K8 v2 A/ s# F4 f
    G(i,i)=G(i,i)+gij/(k*k);
& N- A# u1 f9 y1 g2 z2 ?; k& q    B(i,i)=B(i,i)+bij/(k*k);! r0 |; L+ G) q' t, _! e
        G(j,j)=G(j,j)+gij;3 V+ B8 `- A8 U) S
        B(j,j)=B(j,j)+bij;& Y2 P) I  x3 Z& B# k4 c) h8 e
        G(i,j)=-gij/k;
0 j% L! q  v) v# g; \# a3 m% \    B(i,j)=-bij/k;6 t3 o8 k9 f5 }! n" F* B
end# h) G) X$ ~- V% P' w, k6 f
if(i>j)7 ?* Y. n9 X  A+ G: ?
           G(j,i)=G(i,j);4 c/ a) }  E: s  ^+ r3 [
           B(j,i)=B(i,j);% O9 S5 c) ]& h6 {( m. l$ m  f
end
: O! n9 |% w; i" zend
* e6 x. ?! s4 R! F8 R2 P1 Q for a=1:n2 r# N: z& r! e9 y  K: S6 b
     for b=1:n
! e' O6 u. ~: e        if(a<b)& u5 t6 l) v3 W% d/ J# ~. i
            G(b,a)=G(a,b);
" j# h7 ?$ w  l            B(b,a)=B(a,b);# ^  D; u: G; f+ h6 S
        end
: r  y% l; f4 b# h     end
4 ~5 {/ A- c  J0 Q: ?end
& ^7 H6 Z+ P/ Q0 W# r2 X( g- e9 {这是求节点导纳矩阵。请问,为什么我输进去参数之后,老是提示那个错误??4 P. F0 C- L* Q/ Q
还有,定义矩阵的时候,定义完之后要不要加;号??到底怎么区分??急死了。
4 Z* z0 a) l# U; x  i2 ^大家快来帮帮我。。。。。。。。。。。。。。。。。。0 ~% u1 @" J/ o6 x6 q# O7 A
先谢谢啦。。。。。。。
"真诚赞赏,手留余香"
还没有人打赏,支持一下
楼主热帖
帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
  • TA的每日心情
    开心
    2018-7-18 12:52
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    累计签到:6 天
    连续签到:1 天
    发表于 2008-6-2 17:54:57 | 显示全部楼层
    能否提供一下参数?
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】

    该用户从未签到

    尚未签到

    发表于 2008-6-2 19:14:17 | 显示全部楼层
    A=input('请输入由支路参数形成的矩阵: A=')" i9 a, L# ^- E) y1 j5 e  E/ Y
    - W+ P  Z6 x* hA=zeros(nl,5);2 m- H+ g% m- c2 Y* ^+ u4 {2 R" b: z- Z
    这两句是不是有问题,既然赋值了,为什么又给零矩阵。
    # |3 `1 c0 A$ ~# Y3 f+ k3 j; A, \这两个错误是很简单的错误,一个是除零,一个是矩阵下标为零,你只要给个断点就可以了。
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
  • TA的每日心情
    郁闷
    2018-7-12 14:08
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    累计签到:1 天
    连续签到:1 天
    发表于 2008-6-18 10:43:55 | 显示全部楼层
    楼上的说的很对,做除法的时候有0元素出现!
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
    您需要登录后才可以回帖 登录 | 立即加入

    本版积分规则

    招聘斑竹

    小黑屋|手机版|APP下载(beta)|Archiver|电力研学网 ( 赣ICP备12000811号-1|赣公网安备36040302000210号 )|网站地图

    GMT+8, 2026-3-18 20:19

    Powered by Discuz! X3.5 Licensed

    © 2001-2025 Discuz! Team.

    快速回复 返回顶部 返回列表