|
这是我为我女朋友的课程设计写的,如有不足,大家指点啊 r+ m% y& J! k( l- _3 h, `3 X
4 B; `0 @) W- \/ B& f t=input('请输入时间步长:');& l- _+ [3 \+ F q2 \. f' k4 L
h=input('请输入x轴步长:');. z% q6 t/ e% o$ e9 e3 W, }0 _" O
r=t/h^2;a=1-2*r;4 Y2 M T: [5 \5 M* e
A=[];
) w$ J8 H. V/ U6 {u=[];%第0时间层的数值' g4 l+ D4 o7 w. }5 W; t" K+ H
m=1/h;
' k$ N1 c4 c' ?& z' Ej=0:h:1;/ _: M8 J8 _1 X
I=ones(size(j));3 M& A+ J3 i# o3 q; a
u=4*j.*(I-j);. Z W3 I R6 U5 h
%第0时间层的值的计算9 U& R7 c. ^3 ^9 x! ~. r
disp('5秒之后将会显示第0时间层的数值:')
0 S0 d {" A0 z8 J+ H* Q* Kpause3 h" v2 k5 C- ~6 v% s1 b& Q
u
- ^5 W2 i8 f: I8 e2 H4 m$ Bw=[];%第1时间层数值的计算
* s/ g9 X( s/ P6 }+ s& i9 k9 _1 T) k3 P1 Xfor j=2:m& L. _$ h1 t$ ~9 v; T; u
w(j)=[r*u(j)+a*u(j-1)+r*u(j+1)];1 T3 H" n) e2 W) g5 x4 x/ ]+ T
w(1)=0;w(m+1)=0;
* u: \! K- [/ _' ^4 V/ r% send %通过第0层数值来求第1层的计算' c: j# n6 r Y" y f) d
disp('5秒之后将会显示第1时间层的数值:')
; W6 s: {) H% u: \' d/ g5 Z5 }pause
6 I0 y4 \6 A7 s" Y* }) o; rw
6 I' t1 U7 g2 r a+ o: Iq=[];%第2时间层的数值( G, V ?% H/ A- i) N
for j=2:m
, E1 r* X& J6 F# w q(j)=[r*w(j)+a*w(j-1)+r*w(j+1)];
S' E7 {4 m5 ], g! A9 j q(1)=0;q(m+1)=0;
7 C6 r2 `* Y' x4 p/ a6 [end %通过第1层数值来求第2层的计算
6 Z% d& V$ H3 ^$ {& w7 Gdisp('5秒之后将会显示第2时间层的数值:')8 E& h2 p! E! a$ j2 k9 U. [
pause- D6 c3 X$ |+ j& G9 _1 j( T: z
q
/ @: R& U" k4 j# |0 `f=[];%第3时间层的数值- l- m6 r1 }; b7 Y4 l- l+ ]0 G- G
for j=2:m: X, }: s, q9 o7 e% k
f(j)=[r*q(j)+a*q(j-1)+r*q(j+1)];( W' F; n I7 _2 z& u' I8 D
f(1)=0;f(m+1)=0;7 ^3 ?+ j* v4 Z5 n% j: v
end %通过第2层数值来求第3层的计算; o! l* O) F4 S) C7 F6 R
disp('5秒之后将会显示第3时间层的数值:')
8 g* b/ |2 J2 v3 ppause
+ |! Y9 v. w1 D: \" J/ a. }f
# ?0 ~3 Z: {; [e=[];%第4时间层的数值
4 T7 G m6 _' D7 h5 i+ Bfor j=2:m' b9 H8 L5 ]/ |+ w( s+ ]
e(j)=[r*f(j)+a*f(j-1)+r*f(j+1)];
$ v. ?( V; J. z2 ~; Q e(1)=0;e(m+1)=0;1 ^7 [$ Q6 z1 x. u3 l5 @
end %通过第3层数值来求第4层的计算 H1 A9 t( S7 t/ h
disp('5秒之后将会显示第4时间层的数值:')" \' c+ ^ B+ E4 z8 r
pause
5 a/ e$ ?6 s2 oe
2 E {% }* f- i4 zg=[];%第5时间层的数值
' T) Q& R7 g$ O" bfor j=2:m" C. ?) w# l7 k6 D5 B
g(j)=[r*e(j)+a*e(j-1)+r*e(j+1)];# d6 V( t; m9 c1 l1 J
g(1)=0;g(m+1)=0;% w! F% ^! Y/ r3 o7 d5 {, L
end %通过第4层数值来求第5层的计算
: x' ?$ [5 \6 C) n2 O! `: Q zdisp('5秒之后将会显示第5时间层的数值:')
( j" G: O! l: |) y# u3 @' _pause
: @- j9 F; \8 J; a( w3 T" Qg, T e& ]0 ~" m9 k3 t% a: W8 S6 n
if r<=0.56 {$ y% I$ k9 P1 {, x) I1 h
disp('以上为上五层数据,因为r小于0.5,在稳定区域,所以方法稳定!')
% v) K. n8 x4 J% v9 _& ~8 o, I' @( n& b" Uelse 3 q/ f) }. d3 W$ F' U( T- k5 k
disp('以上为上五层数据,因为r大于0.5,不在稳定区域,所以方法不稳定!')
& J k$ y, O: \( uend2 \3 d C) _& L3 ^/ Y
2 ]" b8 m: U( C. N$ D0 F有用的,大家可以直接用啊 ) \1 r7 i, ~, w3 l* z* p+ X
时间有限,其中的函数大家可以从程序中获知!!! [em05][em05]# Y, Q2 ~( ]& _" V, G8 J
[此贴子已经被作者于2004-12-27 21:52:53编辑过] |