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

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

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

[复制链接]

该用户从未签到

尚未签到

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

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

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

×
各位前辈们,有谁特别熟悉MATLAB软件?帮我看下这个程序,为什么运行的时候,总是提示我这个错误:
6 [+ c9 r9 d2 U( s1 e* u1 [# J# G Warning: Divide by zero.
# q* V- P* V/ y1 B7 S1 C( x> In lllllllll at 173 D: S9 m. A' k
Warning: Divide by zero.
6 w3 M3 q* u, T  A' z> In lllllllll at 18% S: I9 h& K: o$ l+ [
??? Attempted to access G(0,0); index must be a positive integer or logical.0 u' Q) K: Z; Q
Error in ==> lllllllll at 29- C9 b+ `5 u. y1 x1 X
    G(i,i)=G(i,i)+gij/(k^2);2 W# ]3 w. M' \, p& l

, i8 N9 {) B+ y: i1 T+ `0 e' P5 Y. i1 o& ?9 N9 {$ C, i
程序如下:- s) U) \4 A; }; ?
%牛顿——拉夫逊法进行潮流计算5 L" D6 n8 f) {3 ^' q5 a
n=input('请输入节点数:n=')
5 c' U5 u: c: m5 ^nl=input('请输入支路数:nl='), E# N: m8 c8 H. J  [4 y: w* d
isb=input('请输入平衡母线节点号:isb=')- f2 u; }2 {! _
A=input('请输入由支路参数形成的矩阵: A=')
3 p3 I, E1 v- [( }) OA=zeros(nl,5);
* n/ p! k  S: X" k4 IG=zeros(n)
) }6 U- n; \, j8 Z2 F& hB=zeros(n)
2 V( C+ F. i) w* L8 }8 @for a=1:nl
1 A  n2 j6 k' Q% g/ C3 D3 U* Y$ Pi=A(a,1);
9 R7 o1 l9 S9 s/ Sj=A(a,2);0 `$ z! y5 Z$ H" m& A) O4 h
r=A(a,3);0 |" ^% V7 l4 d" {. ^1 S3 y
x=A(a,4);
$ W) m1 m' C0 J3 W3 Ek=A(a,5);
2 \1 Q0 ?: G7 W2 Y: [8 nz=r*r+x*x;# F9 `& J! C/ S, O1 f% ?
gij=r/z;
8 N7 R4 x" ]6 e8 Lbij=-x/z;; Y, E! X9 q: D
       if(k<0)  Q( w. @) z5 v9 G" Q% @9 e0 i
          k=abs(k);
" Y- K7 S6 s# Z3 \( J        G(i,i)=G(i,i)+gij;
) w$ A% X; e, f        B(i,i)=B(i,i)+bij+k;4 N, K% Q2 U/ s+ C  b
        G(j,j)=G(j,j)+gij;/ l) N2 k! d: t( l8 d  L
        B(j,j)=B(j,j)+bij+k;
# u; v( @* f8 P' k+ G        G(i,j)=-gij;' q! S2 V( J9 f$ |1 C7 |9 m1 J2 N
        B(i,j)=-bij;" `  O% N" J! |) g# w/ K0 c, \2 i
elseif(k==0)' O" C7 N% ~. L/ i7 I
    k=1;. I4 K, u& P; a" b$ i/ C
    G(i,i)=G(i,i)+gij/(k^2);
5 B* v7 W- A) v' x5 x; G; A2 j    B(i,i)=B(i,i)+bij/(k^2);
9 o* V( o2 F/ u9 j; W: V" {    G(j,j)=G(j,j)+gij;
8 W1 G. f! V" i/ [- P    B(j,j)=B(j,j)+bij;
$ n" l9 p9 v8 |) g    G(i,j)=-gij/k;: M! `/ c3 W5 C+ L' Q
    B(i,j)=-bij/k;/ f  E0 |, x) S& y
elseif(k>0)
# J8 M. E9 [" n( X    G(i,i)=G(i,i)+gij/(k*k);+ V0 F! m  v; K
    B(i,i)=B(i,i)+bij/(k*k);% D2 z' G& Z% V, W6 F0 a, c' r
        G(j,j)=G(j,j)+gij;
* O1 ~/ {0 y  A        B(j,j)=B(j,j)+bij;
& a$ u- c$ P2 I7 F  z        G(i,j)=-gij/k;
0 t5 S3 n2 E/ T5 H9 V' a: S    B(i,j)=-bij/k;6 f) g: d( F/ N
end4 @8 @& J7 T7 g* g% [
if(i>j)- o8 E3 w# o3 W. e
           G(j,i)=G(i,j);
% H: i0 j+ |  q3 Z! u0 N           B(j,i)=B(i,j);
7 m8 ^! Z% M/ z+ Iend
' v: L7 |* l' h% H2 Pend- k+ L/ g$ b5 j1 i
for a=1:n- h" h/ A, E/ h( g$ ~* K
     for b=1:n  o+ K2 C8 H: B  R1 z
        if(a<b)% X# F. e; h. \' m4 e& G
            G(b,a)=G(a,b);
  S! |; F8 l4 R            B(b,a)=B(a,b);
# \5 q- ^5 H$ F. e8 r$ J        end
9 D$ G2 Q3 y( ]     end
- L; w, R! f( `) Z. g end
6 X; V4 l. M8 O9 p; fn=input('请输入节点数:n=')
1 q$ e) ]5 S. w$ Bnl=input('请输入支路数:nl=')
4 q4 B/ S/ T7 c$ t+ m  M) R  nisb=input('请输入平衡母线节点号:isb='): Q: ~; X: Y# X2 H
g=0%迭代次数2 g+ ?  l# S6 B* v$ K9 ^- i
e=input('请输入各节点参数形成的矩阵: e=')%%%%%%%%%%原始数据输入- z, Z) C% B' R5 u5 s, Y
f=input('请输入各节点参数形成的矩阵: f=')3 V7 d4 [" Q. x6 g/ z2 X. }# a6 x% w
Pis=input('请输入各节点参数形成的矩阵: Pis=')
/ ]: y0 |6 I! @Qis=input('请输入各节点参数形成的矩阵: Qis=')
! n  a8 S$ M7 G/ x# O! [ e=zeros(n,1)8 A# t  _$ m5 J' ]% v2 M( H) _
f=zeros(n,1)0 G& f  k2 H1 N' t# k
Pis=zeros((n-1),1)
: h2 r1 |) A6 x$ W. F& e& o Qis=zeros((n-1),1)' x' c  S1 k* u0 x
max=14 n- o% Z5 \- h# |% S
while(max>1.0e-5)
' Z- w4 C; k& W6 K8 n% |$ O5 B2 ?# NA=input('请输入由支路参数形成的矩阵: A=')
$ d, D4 Y: H8 u( e- ?G=zeros(n,n)5 C# B$ F1 O$ ]7 @- g" S2 {* Z
B=zeros(n,n)
+ H7 g( u# m8 [" X$ _8 J" Ifor a=1:nl
1 P: U- ]1 i4 x6 }6 q# A4 T: u9 W    i=A(a,1)9 q9 @& D( D% k8 J
j=A(a,2)
4 R% J# d3 z6 c% p; U% q) u! j3 Sr=A(a,3)
% ~2 L  ?" w) W* J: a1 Nx=A(a,4)
) P. `5 d9 u7 L$ d$ Z5 [3 }  q4 W% Jk=A(a,5)
8 f% n5 \8 E( y# zz=r*r+x*x, u2 Q! J* d( U, o7 o
gij=r/z
8 X- L. N& _4 {& |; k) W       bij=-x/z
1 v, D4 `7 p; ]) @; k       if(k<0), J( z7 s) j9 Z  Q' V6 u8 j# w" G4 `
          k=abs(k);0 @5 R' a3 n1 M- P2 i  A; ^
        G(i,i)=G(i,i)+gij;
! D! E8 X; }3 N& }* h) v3 B        B(i,i)=B(i,i)+bij+k;" M$ D: N. I6 r9 n8 E$ K
        G(j,j)=G(j,j)+gij;* S" x8 s, {( Y
        B(j,j)=B(j,j)+bij+k;- X. {( ~* \6 ^; L% _  ]
        G(i,j)=-gij;* B) q+ z* K6 I
            B(i,j)=-bij;* Y1 }* l: s; t4 u0 L& E. h
elseif(k==0)
1 {- j2 j/ P9 z1 Y8 `3 S# y    k=1;
8 Q3 s/ S# X7 A6 {, T. RG(i,i)=G(i,i)+gij/(k*k);: J/ {4 E% _) @
    B(i,i)=B(i,i)+bij/(k*k);
0 Q5 _! B% K7 m1 |# i" q/ }- E        G(j,j)=G(j,j)+gij;2 ^4 }4 ]+ [/ D5 h8 N
        B(j,j)=B(j,j)+bij;( h% u, C+ U2 Y6 Z6 n6 ]
        G(i,j)=-gij/k;' q' D7 u+ Y- T; V0 u9 r
    B(i,j)=-bij/k;& f3 j- A+ F& n9 ]! y
elseif(k>0)
* M& T3 H' f. Z' W* R! w    G(i,i)=G(i,i)+gij/(k*k);
$ @8 h# Y; }5 W* P    B(i,i)=B(i,i)+bij/(k*k);. q- I$ Q* S$ q8 W6 L
        G(j,j)=G(j,j)+gij;! D2 y/ Z! H6 Y) M/ \2 n
        B(j,j)=B(j,j)+bij;
  J( _; s9 d4 D' U' x% Y; P+ f        G(i,j)=-gij/k;7 f9 D/ T1 @& r3 J0 I1 ]
    B(i,j)=-bij/k;
6 o' x: G0 O( q; V7 }* hend, j; J9 y7 J7 w' r; h8 G3 H
if(i>j)) H2 W8 M. {; M, @1 h
           G(j,i)=G(i,j);6 o1 `' x5 V$ \, C
           B(j,i)=B(i,j);5 o4 n7 u; X7 S5 t$ `6 k( x
end
# p' u- k  ~) j- Rend
& B: g% I7 I6 |% R( ]) e: W/ h for a=1:n  e  d) E6 ^% r) |* n
     for b=1:n
5 f; ]5 S$ w! H8 z        if(a<b)
5 ?6 r6 R& x/ ~" y& r: h3 F            G(b,a)=G(a,b);- c% g) r2 ?3 K8 R+ g
            B(b,a)=B(a,b);$ x% q+ d/ W! o, x9 B
        end( `7 U. i2 {1 e' Z$ U# p
     end
9 |3 V. K; S* f) b. P2 M3 Oend
: o3 s# u7 m: w% ?这是求节点导纳矩阵。请问,为什么我输进去参数之后,老是提示那个错误??) |& t( [6 p9 f& [
还有,定义矩阵的时候,定义完之后要不要加;号??到底怎么区分??急死了。/ ?; y2 g/ U6 i4 T  j
大家快来帮帮我。。。。。。。。。。。。。。。。。。6 H, j8 o0 s2 n" P
先谢谢啦。。。。。。。
"真诚赞赏,手留余香"
还没有人打赏,支持一下
楼主热帖
帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
  • 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; R& I  C  l9 Q" U# O; V3 {
    A=zeros(nl,5);2 m- H+ g% m- c2 Y
    8 R& f9 X. }, S  F8 g& ^这两句是不是有问题,既然赋值了,为什么又给零矩阵。6 C: R, s! k  `. A/ k
    这两个错误是很简单的错误,一个是除零,一个是矩阵下标为零,你只要给个断点就可以了。
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
  • 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-11-12 11:28

    Powered by Discuz! X3.5 Licensed

    © 2001-2026 Discuz! Team.

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