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

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

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

[复制链接]

该用户从未签到

尚未签到

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

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

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

×
各位前辈们,有谁特别熟悉MATLAB软件?帮我看下这个程序,为什么运行的时候,总是提示我这个错误:& _8 n5 W6 p' T
Warning: Divide by zero.: ^  Q: w% ?% e. S
> In lllllllll at 17% W% E0 \( @( a2 }2 Q) q. L8 [
Warning: Divide by zero.
. K( Y2 x& \9 D( H> In lllllllll at 18
. D. x2 `2 G* m, ~??? Attempted to access G(0,0); index must be a positive integer or logical.
; _( f& n( w" K' {$ i3 Z' {Error in ==> lllllllll at 29  ?4 W" x" n+ j' g" G
    G(i,i)=G(i,i)+gij/(k^2);( K4 F8 }, Y! H* S& H) V  x0 q1 p
- \5 Q: \  K: h* A' y- Q1 D/ F

# |  v% N2 ^! E, V* A5 c& ^程序如下:
& r6 q0 b* B/ H1 b9 Q%牛顿——拉夫逊法进行潮流计算4 ^) J8 j, t5 ~
n=input('请输入节点数:n=')" {1 @4 u  \- l
nl=input('请输入支路数:nl=')( l! x& P7 q$ h
isb=input('请输入平衡母线节点号:isb=')
$ W' {! L5 q  D7 [9 JA=input('请输入由支路参数形成的矩阵: A=')* e) |4 \4 O! m8 ?: x) ^
A=zeros(nl,5);
0 W% B7 S3 }: Z9 I! ~! w( c& u: iG=zeros(n)- X( T- d" F; `- B! j) _  o
B=zeros(n)
9 L* ?2 K, A# f. Jfor a=1:nl, |4 n5 ]8 m* K' q2 ?
i=A(a,1);
* S2 Q2 u, I, U$ xj=A(a,2);  E" u6 n; r9 \$ e6 j: m
r=A(a,3);* P) k* ?3 \% u2 t* {( t
x=A(a,4);- g7 b. O8 R' I2 [
k=A(a,5);# W9 [+ e0 t5 I0 \) {
z=r*r+x*x;
% Q6 T5 }  c; ], @6 Qgij=r/z;
; a3 Z% u/ E6 D5 f9 Jbij=-x/z;
( N4 Z! T1 N) `       if(k<0)6 C) r( ]# E8 W2 j. s# Q
          k=abs(k);4 J, c% b- J' j- e- d# I  H
        G(i,i)=G(i,i)+gij;
8 a- Q3 P# W3 m$ Z        B(i,i)=B(i,i)+bij+k;2 |4 h1 L1 S; V
        G(j,j)=G(j,j)+gij;
! r+ G( L& w' W9 S  a3 W9 ~+ C        B(j,j)=B(j,j)+bij+k;# X( L5 u" |. _& |# @) u2 N6 s
        G(i,j)=-gij;
2 [" W$ C7 q2 W2 D& S* u& v) @        B(i,j)=-bij;
3 z% f& G  |% d2 i! Q1 Selseif(k==0)
! }: G5 `5 N: k    k=1;
8 X- |8 b+ U0 e7 |    G(i,i)=G(i,i)+gij/(k^2);' A7 k9 `- P& e- n4 {( |* @
    B(i,i)=B(i,i)+bij/(k^2);
5 Z/ b& C3 g7 w* v. |* Y( c4 o    G(j,j)=G(j,j)+gij;' f$ C3 ]! _0 O2 x* `
    B(j,j)=B(j,j)+bij;
$ _1 R8 A) ?) o. y    G(i,j)=-gij/k;$ p/ W0 A  j: E$ F, H
    B(i,j)=-bij/k;4 v8 D& g  ?5 V- J. L
elseif(k>0)
% s; |6 B+ S" b7 V    G(i,i)=G(i,i)+gij/(k*k);
' b% L( x+ ~0 C0 E$ _* f0 N% i7 s    B(i,i)=B(i,i)+bij/(k*k);* {- W" @) ]8 S' P. N4 m/ }' ~# m
        G(j,j)=G(j,j)+gij;
* d& x% I& g# k# m        B(j,j)=B(j,j)+bij;9 q/ i% ]- i3 T* t# Y
        G(i,j)=-gij/k;( o$ j  w* |% Z
    B(i,j)=-bij/k;
' b* l0 H' l7 l  e7 N- ]end
% @+ T# n$ n8 C8 K% g1 e7 P* nif(i>j)3 V; c; H  u0 a* y7 e' D
           G(j,i)=G(i,j);3 j# X" ?+ n. E2 N) [4 n- W" \
           B(j,i)=B(i,j);, E3 B- t5 b/ {0 F) D' K
end7 i' z1 ~2 n' n; W" {
end+ N* Z4 u3 D) R7 F/ m4 g) [6 d. j9 c
for a=1:n
' V: g9 \2 V0 f; D. y0 P     for b=1:n/ ?9 e  x' d, y2 ]# A6 p3 _
        if(a<b)
' C+ s2 O$ [) x7 v, H) n            G(b,a)=G(a,b);( d, M# t, N+ N* `, U# t
            B(b,a)=B(a,b);
* Q/ ~& k( X% {) ^% q        end
6 p1 b7 I7 _$ ^, G  V: r: r) B     end$ t  T" F: A5 i3 g2 W) B& V% r
end
1 @' Z& o% T& |n=input('请输入节点数:n=')
% v" ?" p* k( L3 Bnl=input('请输入支路数:nl=')
/ G" N+ B! [) N6 Q4 _isb=input('请输入平衡母线节点号:isb=')
- Y- h- y$ D4 V; Y6 @g=0%迭代次数
: P  u; z5 F, y: g1 Z- g/ M9 Ce=input('请输入各节点参数形成的矩阵: e=')%%%%%%%%%%原始数据输入! {  \  s& X1 O
f=input('请输入各节点参数形成的矩阵: f=')' |7 C$ M) B$ L6 K
Pis=input('请输入各节点参数形成的矩阵: Pis=')
1 N( _% O, v1 M/ `9 mQis=input('请输入各节点参数形成的矩阵: Qis=')
# V, P0 d3 x$ z1 N# d e=zeros(n,1)0 Z, E* V) a/ ^( S& C2 a8 r7 ]7 N
f=zeros(n,1)7 |7 G" R3 i# F; v- ]- C; `$ g, W
Pis=zeros((n-1),1)
( w: r, }) ~6 S0 |+ I Qis=zeros((n-1),1)0 K( L" A& c' r" @8 s% b) r
max=1  W3 C! s/ R0 G9 y( Z
while(max>1.0e-5), |5 a& i: {  f5 J" w( B; h
A=input('请输入由支路参数形成的矩阵: A=')8 j4 F: j3 w' @& ~
G=zeros(n,n)8 |2 s" ^5 P) h2 D) [5 P& z
B=zeros(n,n)* F6 F% I  b' U& q9 g$ e
for a=1:nl" E$ U6 l& i8 Q) t
    i=A(a,1)
* L# V, y& Z( T8 M  r6 [' Ij=A(a,2)
* P2 r! [9 l  w3 |  m7 a# ^r=A(a,3)
- q( c: O# Y' K1 T) j7 P2 fx=A(a,4); D+ y* K/ _( f8 k# g7 Z8 I. a! Y. p
k=A(a,5)2 }. U0 h: E" z
z=r*r+x*x3 \1 p: O8 Z% H
gij=r/z
, M& I7 t# v) P* K" E/ u       bij=-x/z) h8 [5 L+ q) y* V% [5 l4 l
       if(k<0)
8 _" `$ {4 \  M* M" R          k=abs(k);" o0 A! F* ?9 j/ Z8 t
        G(i,i)=G(i,i)+gij;
1 T5 G# v7 ?7 c1 Z1 J        B(i,i)=B(i,i)+bij+k;% i$ x( G; W( W5 p9 b: a
        G(j,j)=G(j,j)+gij;
( j) ]. o& t' Q0 t, L+ b        B(j,j)=B(j,j)+bij+k;
/ \5 r/ q1 N! s$ G# [) K$ d        G(i,j)=-gij;
8 b# m2 L1 b8 s. o, P8 }- I4 }+ P, F            B(i,j)=-bij;
4 @& n2 m6 e; Z6 q: _elseif(k==0)
0 p3 i5 e. B2 [  A, C    k=1;
; x) n  r& Q6 t" I3 j( IG(i,i)=G(i,i)+gij/(k*k);
* C# b' z4 v( {/ s    B(i,i)=B(i,i)+bij/(k*k);) R0 n2 g* D. H+ [& T" ]% e( O
        G(j,j)=G(j,j)+gij;
! r/ [5 R, G" a/ H3 d2 A8 T        B(j,j)=B(j,j)+bij;. ]" @7 Z4 `- T  |3 ?
        G(i,j)=-gij/k;# \1 J1 S9 @& E' B& y4 A: X
    B(i,j)=-bij/k;
7 F- u' E& A& K) l8 a! O- ]elseif(k>0)
$ u7 o1 U2 ~# |8 p8 D    G(i,i)=G(i,i)+gij/(k*k);
9 ]5 ^1 ]) q: j5 D    B(i,i)=B(i,i)+bij/(k*k);
$ L9 J2 z# h9 `# l8 e1 s5 F$ {        G(j,j)=G(j,j)+gij;
  j$ z8 T$ S) {, i% I  T        B(j,j)=B(j,j)+bij;
4 b( V: h! ~1 s6 K- y/ T0 v. F0 v( i        G(i,j)=-gij/k;
' C9 \+ H# ~/ M6 T    B(i,j)=-bij/k;. I- s' _. T/ q
end1 o3 w2 Y2 L$ ^; C1 x
if(i>j)
, N- V( x0 o8 i& e* h7 L8 U           G(j,i)=G(i,j);$ {- B4 j9 Z2 V/ S
           B(j,i)=B(i,j);* N, L5 Q5 r) M/ r! e: b/ \
end
' k  J# B. Y9 L! A8 G8 D5 Fend
3 m/ _  T+ b, K' W6 ]6 v for a=1:n( b0 `- T9 i7 q7 s0 A& f7 v
     for b=1:n
3 p8 w5 N" }) u3 ?+ v3 I+ a        if(a<b)
% V% c8 z: W( k* X4 s; f- y            G(b,a)=G(a,b);, X' W6 U' R; r; ]* Q4 r" r5 _" _
            B(b,a)=B(a,b);; @3 w1 D5 L' }( m7 C+ k( S
        end& U+ E, P9 A& {, g9 S+ r$ ~( H
     end9 m" G+ T' ?* r: \- x( W2 u" E6 i
end
7 j0 P7 \6 k9 N0 H这是求节点导纳矩阵。请问,为什么我输进去参数之后,老是提示那个错误??
3 A5 a: h+ m2 c: `/ G, f  k# T7 ~还有,定义矩阵的时候,定义完之后要不要加;号??到底怎么区分??急死了。: O: S) ~" _. D- H/ }  b
大家快来帮帮我。。。。。。。。。。。。。。。。。。
% f3 g0 x0 X9 z. ~先谢谢啦。。。。。。。
"真诚赞赏,手留余香"
还没有人打赏,支持一下
楼主热帖
帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
  • 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/ Y7 I; f4 p! @$ W: h" S, z1 ?
    A=zeros(nl,5);2 m- H+ g% m- c2 Y
    / z$ Z) v1 G9 i; L% H9 e- V  A  r( G这两句是不是有问题,既然赋值了,为什么又给零矩阵。
    ( v6 R5 p3 v0 S. s) j这两个错误是很简单的错误,一个是除零,一个是矩阵下标为零,你只要给个断点就可以了。
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
  • 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, 2025-4-22 03:12

    Powered by Discuz! X3.5 Licensed

    © 2001-2025 Discuz! Team.

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