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

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

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

[复制链接]

该用户从未签到

尚未签到

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

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

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

×
各位前辈们,有谁特别熟悉MATLAB软件?帮我看下这个程序,为什么运行的时候,总是提示我这个错误:
; g5 n0 i5 x( c& B& _* d5 c2 {1 S3 I Warning: Divide by zero.4 ~4 f. F& ~: C! f3 x
> In lllllllll at 17" U! n3 h4 z2 S! L7 O, M
Warning: Divide by zero.
& A9 }1 L" P5 d; A0 m  W> In lllllllll at 184 S# X( k( k+ S8 h* V) \
??? Attempted to access G(0,0); index must be a positive integer or logical.( ~) X! k' _$ a# z
Error in ==> lllllllll at 298 Q/ G3 F$ K# Z9 _4 u
    G(i,i)=G(i,i)+gij/(k^2);
% Z+ G& Z* T; k9 h! Z
5 N) S. \2 A+ q6 X6 \' T
, ?( Y" A* X( V  G% m! L4 z9 E程序如下:
* P& {) ?( `0 J, U6 `$ y; g: g%牛顿——拉夫逊法进行潮流计算2 T4 a; v+ @, P
n=input('请输入节点数:n=')# j9 y* Y" X. ~
nl=input('请输入支路数:nl=')& K- g" [5 V# f1 T, a+ F% E
isb=input('请输入平衡母线节点号:isb=')
0 d* Z$ i. [: t; [' lA=input('请输入由支路参数形成的矩阵: A=')
1 h5 m* \9 x& w/ t5 ^( {; r5 wA=zeros(nl,5);
5 [' K" ~. F( z  kG=zeros(n)
8 c; T8 s' @5 mB=zeros(n)
- R8 J9 Z( s& r8 ~& T* ^$ afor a=1:nl
; S+ c2 G6 K5 P; M& n, |i=A(a,1);
3 Y. s' g2 T' ~5 Wj=A(a,2);
" `# O! A  ^, `7 o3 Fr=A(a,3);
$ o9 q' ]' f- w3 x6 ~x=A(a,4);
# P9 h5 o% k5 t- m; f& sk=A(a,5);. }. k/ J( J8 |# X' y! U
z=r*r+x*x;2 H2 q" a0 u1 w% W' C
gij=r/z;
# G0 h7 ^, @2 [' S# kbij=-x/z;
6 V! q$ H, y6 w8 \: O& {( `" ~       if(k<0). U4 s" n8 q- R+ U0 \" t
          k=abs(k);3 C4 H' y7 w/ L) L8 m/ k4 P
        G(i,i)=G(i,i)+gij;
) r  {- A/ ]5 g        B(i,i)=B(i,i)+bij+k;& \: R: M# x5 M. A
        G(j,j)=G(j,j)+gij;. s) a4 R; J: T! \5 \
        B(j,j)=B(j,j)+bij+k;+ Z. B# o8 V- ~. [0 ?
        G(i,j)=-gij;
/ \# o( ^% [" u. v        B(i,j)=-bij;
+ \5 e! N7 {# }) Relseif(k==0)
( t+ V) Q* ?5 e! c$ H    k=1;! c" h; p3 W# T, B2 M
    G(i,i)=G(i,i)+gij/(k^2);" {, }; |/ v* v. a4 H# b0 X
    B(i,i)=B(i,i)+bij/(k^2);
) x+ w' b6 a% [+ z0 r- I5 d    G(j,j)=G(j,j)+gij;( z& ~4 q# n( H& h2 `
    B(j,j)=B(j,j)+bij;+ Z# L# J( P( ?( o/ c$ n/ p
    G(i,j)=-gij/k;
' R3 J1 Y& U9 ~" x) k. m    B(i,j)=-bij/k;
) g' I6 V- m8 D4 O& selseif(k>0)' P+ P4 c3 B' T+ J* f# e; |1 Z% K' O; u
    G(i,i)=G(i,i)+gij/(k*k);* q1 ^9 o8 R1 g3 m+ p2 b4 F
    B(i,i)=B(i,i)+bij/(k*k);
" d. T, }, S) @* R        G(j,j)=G(j,j)+gij;5 _+ B# w* R3 S( B
        B(j,j)=B(j,j)+bij;9 A  k* B. z: d. _; a: z
        G(i,j)=-gij/k;
1 W+ [% \, ~$ Q8 Q* {    B(i,j)=-bij/k;( T4 J5 b2 ?# I6 c* C
end
! K) ]- ~6 c. vif(i>j)! \  z+ L1 {+ F: ~2 X
           G(j,i)=G(i,j);
* j& K6 }0 r  m  R* K2 F% Y           B(j,i)=B(i,j);+ ^' L+ Q& B8 r" M+ X
end
  e/ H( x/ s5 jend
5 n& v' O( c( V& S  H for a=1:n" `5 o4 `( w4 b$ Z- B
     for b=1:n  X& D3 j/ |; W4 c- |* e# k, H
        if(a<b)# B, ?2 R' }& Z  A9 c. @6 {% a
            G(b,a)=G(a,b);
: Y3 h: L  o- A            B(b,a)=B(a,b);. [. j  _* D( D- f' {' j
        end9 q: r7 f& E" g- F8 S& h/ d. r1 T/ c
     end
0 q" J. l, `# M  V end
3 q& L" a/ H  }; r+ jn=input('请输入节点数:n=')
* ^# n1 e! e- h0 Ynl=input('请输入支路数:nl=')
: o4 d4 o0 j4 fisb=input('请输入平衡母线节点号:isb=')
0 v8 U% i" C) vg=0%迭代次数# P/ j$ b, I& B/ b# r* D
e=input('请输入各节点参数形成的矩阵: e=')%%%%%%%%%%原始数据输入( Y0 r& Q  P! e. J1 @
f=input('请输入各节点参数形成的矩阵: f=')4 X  @9 q. H) ]" O( z
Pis=input('请输入各节点参数形成的矩阵: Pis=')9 e: n1 Z" p# ^, P" O8 Y
Qis=input('请输入各节点参数形成的矩阵: Qis=')
6 \. o# X2 W/ r. e9 e e=zeros(n,1)
! V; E, `( f* u* J3 v8 c; { f=zeros(n,1): u% H3 @; p. I* d: ]2 T, F
Pis=zeros((n-1),1)
: ~2 ^: U. Q" a! B: s) O% q Qis=zeros((n-1),1); `' w9 t. o7 g+ r$ E* i; h/ o5 u
max=1" ]4 o1 I/ l/ A  H1 b  X+ C0 `1 v9 [
while(max>1.0e-5)
8 U- }' o% V+ }  u/ yA=input('请输入由支路参数形成的矩阵: A=')( B: p9 ?- n% e4 C5 C- D
G=zeros(n,n)
- w, i) i/ o/ `. @3 t' dB=zeros(n,n)9 l; ]9 [$ ^1 [) w: M3 c4 H+ L) }
for a=1:nl! s; ]6 D  ]* h* P% a* p" p
    i=A(a,1)
9 O+ T0 D2 n2 H+ Q9 Z: r) S. Zj=A(a,2)
, _, X0 O+ u2 y* T* w" s% ar=A(a,3)
6 P# l% J# j" W3 K& f1 J) Ox=A(a,4)
7 {6 G5 W+ `. n  Yk=A(a,5)
# T% F' s( Q; ^& X/ Bz=r*r+x*x& l* f2 n3 q  L! Z# u1 H- ?
gij=r/z
0 W# Z+ R) i- S( `( J       bij=-x/z
7 ?7 M& e! G, k! c       if(k<0)
' o% _* n" j) G6 ]6 f8 p          k=abs(k);
& p* p* I4 Z! N% o0 w        G(i,i)=G(i,i)+gij;
: _! z9 D8 F  B% J% U4 N        B(i,i)=B(i,i)+bij+k;
4 Q) `0 h4 o$ k: ~. z        G(j,j)=G(j,j)+gij;+ q# o! A& o% J' ~% @6 |( J
        B(j,j)=B(j,j)+bij+k;' _- Y1 U8 u3 V1 Q
        G(i,j)=-gij;! A- I! K; d& X$ P4 \. F
            B(i,j)=-bij;; K7 Z& P& U' P( C! W0 w
elseif(k==0)
5 L$ U1 d3 J: `  R* g    k=1;2 h9 J2 ?! o- D6 D8 d2 S
G(i,i)=G(i,i)+gij/(k*k);
$ F) o; Y' h! g5 J7 G6 _. g    B(i,i)=B(i,i)+bij/(k*k);
1 P) x% I/ m" _5 z- T        G(j,j)=G(j,j)+gij;
5 P6 g! q. y* \$ e1 l; C        B(j,j)=B(j,j)+bij;
2 b8 B+ W( n/ A; X        G(i,j)=-gij/k;2 t2 m0 H$ M  m! w
    B(i,j)=-bij/k;3 j/ K5 o) s" _1 l, ]
elseif(k>0)
, Q+ A" O4 ]# e- Y* |3 q    G(i,i)=G(i,i)+gij/(k*k);
  y1 d) T* d1 W    B(i,i)=B(i,i)+bij/(k*k);
* c, N% M+ ?1 w* s        G(j,j)=G(j,j)+gij;6 n' T1 Q$ G% A4 N2 X
        B(j,j)=B(j,j)+bij;
; G  k9 J9 Y3 ^" E- |        G(i,j)=-gij/k;
) D4 F7 E* U  l/ Y: I5 c( q    B(i,j)=-bij/k;
/ K1 ~% r" b( n% u# K6 mend' ?6 |7 k: F" M$ D% L
if(i>j)
2 l) E3 [; B+ v! N, F" j- v           G(j,i)=G(i,j);
" V7 v; m- d/ z7 _- A, U3 b# Z. c+ \# M           B(j,i)=B(i,j);
# a1 ^' ]. B  t" Zend# i9 ^9 N3 e! K6 ?: K, [' e$ _
end0 C' l* H1 t# M! h2 ]
for a=1:n
6 l$ R6 G, ?" ^% R) `/ E" |) b     for b=1:n# s: i4 v# [! `# n0 D$ H1 y
        if(a<b)9 o$ w+ J& ^! q7 z% n2 r
            G(b,a)=G(a,b);
' o# r7 T$ P, c, q3 C  C            B(b,a)=B(a,b);
8 O( v% x% c, `        end1 `1 N$ r  c! `$ k3 B
     end* h+ v) P0 W  o5 Z( L
end6 _6 [7 Y3 |$ i; I- f
这是求节点导纳矩阵。请问,为什么我输进去参数之后,老是提示那个错误??
5 x6 Y* [+ c! k4 ^' M/ c% i还有,定义矩阵的时候,定义完之后要不要加;号??到底怎么区分??急死了。& g' d5 \, a0 Y* A2 b) ?  j9 B
大家快来帮帮我。。。。。。。。。。。。。。。。。。
: P, I- o( c  K先谢谢啦。。。。。。。
"真诚赞赏,手留余香"
还没有人打赏,支持一下
楼主热帖
帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
  • 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
    8 s* F* o( h& s& z$ ]A=zeros(nl,5);2 m- H+ g% m- c2 Y
    ( ~4 V( Q2 x3 K/ D# f( n这两句是不是有问题,既然赋值了,为什么又给零矩阵。2 d, S7 L8 g; l- G7 D
    这两个错误是很简单的错误,一个是除零,一个是矩阵下标为零,你只要给个断点就可以了。
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
  • 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-10-18 10:02

    Powered by Discuz! X3.5 Licensed

    © 2001-2026 Discuz! Team.

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