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

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

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

[复制链接]

该用户从未签到

尚未签到

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

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

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

×
各位前辈们,有谁特别熟悉MATLAB软件?帮我看下这个程序,为什么运行的时候,总是提示我这个错误:
% Q$ c. ^* }7 f% @, t2 ]0 _, F Warning: Divide by zero., J  n: Y4 h! \3 t' |( i1 W
> In lllllllll at 17
0 ~) t; r  M0 y+ w6 jWarning: Divide by zero.
+ B+ d3 L+ S; L4 j0 k> In lllllllll at 18
$ x3 N2 o( p* t- J# D??? Attempted to access G(0,0); index must be a positive integer or logical.
$ h3 Q: o9 Z0 H1 k+ I) wError in ==> lllllllll at 29; j4 q. G/ \: k2 M2 g7 y, V
    G(i,i)=G(i,i)+gij/(k^2);9 e+ t- k  f* C) j
/ q( n' Z9 f& v2 E+ D! G& q. S

$ P1 h, S% O) \  X& D) ]程序如下:$ ]2 V: [, @& Y0 M2 o( E
%牛顿——拉夫逊法进行潮流计算7 \4 w5 j& }- \. E. f& e
n=input('请输入节点数:n=')
1 D% d! f% q( w. qnl=input('请输入支路数:nl=')
2 U/ R2 w5 W* w; o& \" _+ g# qisb=input('请输入平衡母线节点号:isb=')
& }+ ?. O: |4 g7 W  }- m4 @9 oA=input('请输入由支路参数形成的矩阵: A=')
9 @& v9 ^$ ~. D( YA=zeros(nl,5);
6 ?  a6 C( h/ t/ M) }G=zeros(n)
$ l. s$ L" J8 `  v$ K/ iB=zeros(n)
0 m" `3 C5 g# U: r. t; Ffor a=1:nl
- W6 p6 P' ?, z' S; E8 S7 @i=A(a,1);
$ R5 K' v  A; `8 wj=A(a,2);* n+ ~" R5 L( k+ f+ {& r9 D/ y
r=A(a,3);! j$ N+ `# z# [. p4 @0 |( h
x=A(a,4);7 q' S; M0 Q6 s
k=A(a,5);
# I' b1 J9 |5 k: s3 }z=r*r+x*x;, n4 J% D: t5 q3 s* U
gij=r/z;* F% @" J7 S% G/ y1 ?" {
bij=-x/z;# f* N3 I$ d/ Q1 F4 v& }0 Q
       if(k<0)
6 Z! B; B2 F+ T9 ?          k=abs(k);( L$ k% v6 N6 H; O  x2 [
        G(i,i)=G(i,i)+gij;
6 H) ]) m3 ^' d# C3 P) X: {4 \) i0 T* j, d        B(i,i)=B(i,i)+bij+k;7 t# O3 e$ f* k+ }
        G(j,j)=G(j,j)+gij;3 B8 H; ]  I5 b( L1 l
        B(j,j)=B(j,j)+bij+k;+ e/ C# R  o: {8 v( d1 w
        G(i,j)=-gij;
3 J- D6 ?( f. E, l! u8 S; ]1 t        B(i,j)=-bij;, I9 f1 C/ C2 I) t- U, ?. u
elseif(k==0)  n6 t" X1 o/ M$ q6 w
    k=1;
: M3 p# n! ?2 H0 n& J) ^+ I5 X    G(i,i)=G(i,i)+gij/(k^2);+ e6 i) `9 |5 l9 G9 N
    B(i,i)=B(i,i)+bij/(k^2);
4 Q' W! N; s' o0 X4 @    G(j,j)=G(j,j)+gij;* K1 u2 g8 L! E! P5 C" x
    B(j,j)=B(j,j)+bij;
$ O  a! d* N9 [3 b9 [! N$ V    G(i,j)=-gij/k;, i4 W) V0 O5 R7 c& G$ ?, o
    B(i,j)=-bij/k;. f6 B3 k4 u8 N0 u$ @
elseif(k>0)& l5 g) p  `$ s* l# T" X9 R: p
    G(i,i)=G(i,i)+gij/(k*k);
* B3 S6 J- W. ^) o) R) \    B(i,i)=B(i,i)+bij/(k*k);! [- t7 I4 t: Y1 W
        G(j,j)=G(j,j)+gij;
/ g% b  o% i2 ]6 w, p* ?: b3 C        B(j,j)=B(j,j)+bij;- o! L' Z+ C$ p
        G(i,j)=-gij/k;- k- z& G3 K" E# W6 Z# x
    B(i,j)=-bij/k;) N% `0 k. @& E
end
$ C+ j' q( X, U& b3 rif(i>j)
) D1 e5 K7 j( S; ?) c3 ^8 Z+ i# ~           G(j,i)=G(i,j);
( x6 L* s! N: E7 F7 v0 H/ w# ~           B(j,i)=B(i,j);
8 {& b" q) S4 d4 m6 Aend7 \: V# ?+ D$ I8 I* b/ b
end; t5 m/ n0 z) {, K. ]
for a=1:n( B  O. O) N8 [" A
     for b=1:n' a0 l* e3 r, h4 t
        if(a<b)
" e7 ], A, C9 t            G(b,a)=G(a,b);3 D4 @: Z+ W+ K
            B(b,a)=B(a,b);9 N( ~( u; M& [, s/ H4 W
        end
4 j3 J* v! W/ ]4 r' w' z0 h# z) L     end
5 [- ?+ N' u8 ?/ k2 f4 x+ p end( A, m: u% b- N( ^$ h
n=input('请输入节点数:n=')
, Y% _8 G$ {" d: V, vnl=input('请输入支路数:nl=')2 `2 {, h5 S; [4 A; f+ s3 Q$ o3 h4 v
isb=input('请输入平衡母线节点号:isb=')* _. {: L( o; q" d1 C. r; M9 X
g=0%迭代次数" a: P; \; D. @" f* ~
e=input('请输入各节点参数形成的矩阵: e=')%%%%%%%%%%原始数据输入
; g) a) V4 t+ Q( [, ?f=input('请输入各节点参数形成的矩阵: f=')
5 [* y" n; O$ D# o; K7 [Pis=input('请输入各节点参数形成的矩阵: Pis=')
) t. a% c/ _: g) S! h, ?/ PQis=input('请输入各节点参数形成的矩阵: Qis=')
! S9 {4 _2 h0 F$ U& h9 ` e=zeros(n,1)
! J2 V5 u3 D( i! a2 a* ]4 D f=zeros(n,1)
: F: P/ p  A/ ? Pis=zeros((n-1),1)4 A! ]/ g1 x! K; d( I
Qis=zeros((n-1),1)
4 p6 F. k% b3 a! R( J+ I9 Hmax=1+ p  _' K) e1 s, G# q2 o
while(max>1.0e-5)
' K2 l: e& a$ {7 ^, t3 O# |5 BA=input('请输入由支路参数形成的矩阵: A=')/ ?9 k" E2 S, G4 S$ O6 N
G=zeros(n,n)
. s8 z* M. O5 c1 VB=zeros(n,n)& ?4 [6 J8 w  D, o4 E
for a=1:nl
7 c( t# \5 j+ ~4 l: `    i=A(a,1)
! ~$ [! T. `" \! R# ij=A(a,2)
+ D4 N3 \: ]* o1 O" ar=A(a,3)
8 d6 d9 [/ G1 F% ox=A(a,4)
4 C1 V. l7 k9 }& R  J3 |% j+ T) \k=A(a,5)
- P$ t+ P) a" u: \z=r*r+x*x
; J  P2 ?/ i9 g: `* f) ygij=r/z4 N8 j( s, n- }, x6 y
       bij=-x/z
, Y( _# K) ^& w) S4 U       if(k<0). Y) B, ^4 ~" s. F1 [6 L
          k=abs(k);
% k6 E, P  d( C5 l+ S, F# W        G(i,i)=G(i,i)+gij;# T( r; L! W& [2 W9 C& P0 A5 |5 |
        B(i,i)=B(i,i)+bij+k;7 c* ?* c5 @& d' W
        G(j,j)=G(j,j)+gij;
7 d6 Z+ _, ?- T/ r" H0 ~/ h+ J2 y3 p        B(j,j)=B(j,j)+bij+k;6 j4 h) M  C! W4 y, i
        G(i,j)=-gij;
( y0 h( k; F2 p$ w8 y- J% }            B(i,j)=-bij;. V$ j' h4 T" k, y2 t
elseif(k==0)
; s% P" z( q- p( B' p    k=1;1 m1 n/ [8 I6 I( @; p5 m- P# k
G(i,i)=G(i,i)+gij/(k*k);! h6 H5 X# E/ |: W$ N! {. O+ y# K
    B(i,i)=B(i,i)+bij/(k*k);( [2 I/ H/ r( x1 @& }
        G(j,j)=G(j,j)+gij;( B" k- A' J( i# D$ H# j
        B(j,j)=B(j,j)+bij;
3 a0 g7 S# R& n0 L3 z        G(i,j)=-gij/k;; T6 f; p- S+ Q; d- g
    B(i,j)=-bij/k;- `9 l; x+ E4 H7 I. O2 I
elseif(k>0)+ `, u! Q* p) H& d3 c9 N# H
    G(i,i)=G(i,i)+gij/(k*k);. n4 O. F9 Q0 I( E" p; u' Z
    B(i,i)=B(i,i)+bij/(k*k);# R* Z) w  ?0 B4 g' L! q
        G(j,j)=G(j,j)+gij;
) o1 J' ?1 R/ @        B(j,j)=B(j,j)+bij;
7 s4 }% `* I& K  ?4 y# s        G(i,j)=-gij/k;+ J/ a* N1 @* L
    B(i,j)=-bij/k;) ^8 Z% a8 I; N' B0 V
end! {1 t- S, X; x: ]( z! f
if(i>j)6 ]( @% A" V) R4 r8 n/ ~; [. H, |
           G(j,i)=G(i,j);
' b& R' W7 m) o) x8 K# B1 m           B(j,i)=B(i,j);7 ^, |# s3 \! A* F# R7 q
end
1 A, i$ U( s$ O, R) oend; ^# N% T# M$ u! U  y
for a=1:n
* `/ F! T" r. {4 P     for b=1:n* ~9 o. y- o5 e! Y5 O
        if(a<b). F8 B3 K0 v3 _8 Q- b2 S
            G(b,a)=G(a,b);
/ I8 E" T* O: w- j            B(b,a)=B(a,b);
1 `4 U; u8 o: Z* {        end
+ |7 L) F  E1 \! Z     end
( f: P, V! _- Uend
" m' ^5 \; q# l; `  ?这是求节点导纳矩阵。请问,为什么我输进去参数之后,老是提示那个错误??
! x& O- t- Q# w还有,定义矩阵的时候,定义完之后要不要加;号??到底怎么区分??急死了。
& P3 i, F# T4 p1 e4 T9 @9 p大家快来帮帮我。。。。。。。。。。。。。。。。。。! W. z# L# W: C& v; F
先谢谢啦。。。。。。。
"真诚赞赏,手留余香"
还没有人打赏,支持一下
楼主热帖
帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
  • 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
    " A8 {( A2 y5 R/ e- s1 ZA=zeros(nl,5);2 m- H+ g% m- c2 Y0 I7 F7 k( U3 q  B( M
    这两句是不是有问题,既然赋值了,为什么又给零矩阵。1 b0 y- L0 @/ t: i
    这两个错误是很简单的错误,一个是除零,一个是矩阵下标为零,你只要给个断点就可以了。
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
  • 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 18:45

    Powered by Discuz! X3.5 Licensed

    © 2001-2025 Discuz! Team.

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