|
这是我为我女朋友的课程设计写的,如有不足,大家指点啊
1 C$ B7 l9 O3 H' R' E; A
5 T Q5 |. Z3 n/ ~ t=input('请输入时间步长:');
V$ ]- d: R' j/ W& X; l" \7 L% jh=input('请输入x轴步长:');: G+ \( j! B, w
r=t/h^2;a=1-2*r;
" |# d4 l$ V! J, ~4 D/ J3 hA=[];1 h _ a0 D+ G+ {& `
u=[];%第0时间层的数值, i8 n l. D( C! h$ d0 U1 e
m=1/h;
1 k) C9 V+ e* @ i2 `j=0:h:1;) o" @) \) P7 c: v6 z0 m: o- g
I=ones(size(j));
+ L" O7 n9 [$ K# I' v" N$ ^7 H u=4*j.*(I-j);9 Z% \6 Y6 u$ H# s+ M1 f
%第0时间层的值的计算
' h% d& J4 |* V# s% T, Kdisp('5秒之后将会显示第0时间层的数值:')
! r/ E: O; E- N4 B+ H1 D- kpause
0 H" a2 C" F6 Z9 Qu
; c! A: E: i# @' Mw=[];%第1时间层数值的计算* X" p2 Z6 l* I: d2 t
for j=2:m
7 v8 F) |+ Q. X% W/ x* {* \3 h w(j)=[r*u(j)+a*u(j-1)+r*u(j+1)];; p( P1 Z! t, ^
w(1)=0;w(m+1)=0;
. ?/ Q' O g q2 \; T& Fend %通过第0层数值来求第1层的计算
( U% [. _0 @4 u; l; G( K- {1 Ydisp('5秒之后将会显示第1时间层的数值:')
( A% v* V4 e) S, Upause
/ ?+ C1 K1 s, ~5 _. nw
2 o. |+ V, s" Z' t4 _% jq=[];%第2时间层的数值
$ L9 Y5 e7 U* O, E( E5 U% hfor j=2:m
* S9 s8 {" e- s* i) q q(j)=[r*w(j)+a*w(j-1)+r*w(j+1)];2 A# z6 T# y9 V1 f' O) d
q(1)=0;q(m+1)=0;
* e/ G' R# K0 d$ C8 g5 f1 Lend %通过第1层数值来求第2层的计算
5 s$ _& ]9 t! Y' f) bdisp('5秒之后将会显示第2时间层的数值:')/ r% D7 _: b8 z/ d/ b1 @1 o/ b& ?
pause, K- E8 U/ d+ G( p, [' o
q9 e. ]# z+ q9 ]0 ^ K0 S
f=[];%第3时间层的数值
8 a" H. h+ K0 O- ~4 m$ O) kfor j=2:m5 Z" w! b% j. ]
f(j)=[r*q(j)+a*q(j-1)+r*q(j+1)];
@0 K1 x* T [* G& m' Y j f(1)=0;f(m+1)=0;
1 G! P ~) @: Kend %通过第2层数值来求第3层的计算
3 `, D6 g1 K/ k3 Q9 `disp('5秒之后将会显示第3时间层的数值:')* m! y6 ?. G7 k# f
pause
8 s0 n( P6 s2 a; @7 Gf; c+ J' ^1 S, X; J6 v9 ? D
e=[];%第4时间层的数值4 R: K& v, ?. D! _6 s& T
for j=2:m, s2 B- \5 N4 Y# R3 W" M, A- v4 m
e(j)=[r*f(j)+a*f(j-1)+r*f(j+1)];2 q* M1 h6 M; b
e(1)=0;e(m+1)=0;. H2 t1 @% T7 U9 O/ ^4 Y a
end %通过第3层数值来求第4层的计算8 ~, f% b) {2 B1 G" Z# ], ?) o
disp('5秒之后将会显示第4时间层的数值:')6 b/ d' a' A2 v: e2 T
pause
8 ^4 ?# C& T) F ~6 m) I, O$ }e4 K, ~, ?, s4 g) r9 E3 W
g=[];%第5时间层的数值6 ^ h8 k4 t) h
for j=2:m
) @; ^8 n5 T. a- k b g(j)=[r*e(j)+a*e(j-1)+r*e(j+1)];+ w. ]# }& U1 K
g(1)=0;g(m+1)=0;
7 I. S- n2 X% `+ F! bend %通过第4层数值来求第5层的计算) W/ t; }6 b: Y7 q6 C C1 I; Q$ o
disp('5秒之后将会显示第5时间层的数值:')
+ {0 V7 M, Q0 H5 Wpause
# C* R1 ]8 m9 Y# w: ?/ t) ig
0 m' Q! d j8 j4 d' s0 v2 O! Yif r<=0.5
& F1 u2 x; ], ]4 Q% ~% c) I' J disp('以上为上五层数据,因为r小于0.5,在稳定区域,所以方法稳定!')- q ?& [8 ^3 F
else
* N2 w4 {3 r5 E; C disp('以上为上五层数据,因为r大于0.5,不在稳定区域,所以方法不稳定!')
4 f* D! o. C, S4 {' [/ J* [end' `) R. x V9 ]+ W
1 i! q! v! A# r& W3 c0 t4 D& |有用的,大家可以直接用啊 ! R( y0 q" L& w ?. J( Z- N
时间有限,其中的函数大家可以从程序中获知!!! [em05][em05]6 C' j; t. C+ r- K1 B8 G$ d, a$ h
[此贴子已经被作者于2004-12-27 21:52:53编辑过] |