|
这是我为我女朋友的课程设计写的,如有不足,大家指点啊
. O* |+ T4 k" w4 P7 T& z+ L3 j+ U2 L. K
t=input('请输入时间步长:');
- k+ G+ O4 k- X* |h=input('请输入x轴步长:');) X) B4 s1 P5 {- g$ |
r=t/h^2;a=1-2*r;2 z- M0 Y- d, c
A=[];$ c0 g1 i& r& Y/ g* _( ~
u=[];%第0时间层的数值0 D' n, C+ o9 q+ P' m' g
m=1/h;
/ J9 z4 |4 e6 Bj=0:h:1;
$ z- M; U; p2 U2 t; A, i# H! f" SI=ones(size(j));# [0 C, H$ ?% R; Z- | j( ]4 S
u=4*j.*(I-j);
6 W4 G1 V" t' Z %第0时间层的值的计算
( w1 |+ V6 ~" S' xdisp('5秒之后将会显示第0时间层的数值:')$ Z5 C1 m n" m6 ?( B
pause
+ ]' _) Q, v) j% ~5 @0 du
2 X" w0 B' T9 K2 {+ O4 hw=[];%第1时间层数值的计算, c, r( K' a+ W) K
for j=2:m
2 j( V/ V: o3 s9 q w(j)=[r*u(j)+a*u(j-1)+r*u(j+1)];9 z; @* K! {# B Y' P* a
w(1)=0;w(m+1)=0;
0 F2 L4 h! ]8 t3 G0 p# R' Q& m/ `end %通过第0层数值来求第1层的计算# U8 W/ p: e! j: S# N8 @( w( ~3 M
disp('5秒之后将会显示第1时间层的数值:')0 T/ Q, y$ P/ h& i+ ^$ t8 ]' F# s
pause
4 X+ J* ~! W! s' v) ~! W! Fw1 [: }+ {. P; |9 r/ d
q=[];%第2时间层的数值
9 z5 d5 _ v u; M* ]* N' `0 Vfor j=2:m! s! a/ |2 j8 J5 b) G
q(j)=[r*w(j)+a*w(j-1)+r*w(j+1)];
( n: l' u7 o& a9 V q(1)=0;q(m+1)=0;
* f: F$ f% U/ E8 U; t8 R3 Eend %通过第1层数值来求第2层的计算( X5 p) s9 t8 b: P, m( |7 g
disp('5秒之后将会显示第2时间层的数值:')
, |! c: D' v7 y, V7 W0 b( \: x' zpause
9 c8 t4 m" o1 M8 I/ yq. R* s0 A) h. U* `, c7 G: U0 S0 F
f=[];%第3时间层的数值
! N* m: ^3 f: {2 l& Cfor j=2:m
1 C( k7 d2 Z9 N) C6 \& K f(j)=[r*q(j)+a*q(j-1)+r*q(j+1)];
) j1 L! M7 f2 B: h- Y+ P/ k$ M f(1)=0;f(m+1)=0;
/ n: M5 `; h4 B) N3 H5 i! U, P( oend %通过第2层数值来求第3层的计算
" P% Q) h, C! W4 k; V1 T' R- T* mdisp('5秒之后将会显示第3时间层的数值:')
0 w) M! _) N1 x9 hpause* `$ T i6 r- [2 T$ U# H) A# E
f
' q7 S8 ]- p! P) g. Xe=[];%第4时间层的数值
' s& t2 B* J& b" F( H% z8 G1 L0 Efor j=2:m7 o! U$ f7 Q# [* E1 S
e(j)=[r*f(j)+a*f(j-1)+r*f(j+1)]; d% o5 y5 S4 S! G3 o4 p
e(1)=0;e(m+1)=0;5 f8 p7 K+ X( R/ v
end %通过第3层数值来求第4层的计算
* Y* p' a0 G8 Edisp('5秒之后将会显示第4时间层的数值:')
- P. e2 y9 Q% ]% Upause
+ Z* _8 r+ y, \3 |! L% t$ Pe
7 e4 o4 k& a$ X& eg=[];%第5时间层的数值, \- b8 U) Z6 T3 v
for j=2:m
" O$ P! N- d" K1 b' l& p: D g(j)=[r*e(j)+a*e(j-1)+r*e(j+1)];
+ B- z% d( w. n3 Y( @6 [ g(1)=0;g(m+1)=0;
2 i& U( `! b1 k4 W) v, kend %通过第4层数值来求第5层的计算
; ^9 ?- B0 L1 [3 Edisp('5秒之后将会显示第5时间层的数值:')
/ A% u& k; q% mpause
4 S- F* K& l1 l _' k" z6 R1 `g. p( e' N+ o# i O
if r<=0.5
7 d( K5 |: r E. _1 ~' d* ? disp('以上为上五层数据,因为r小于0.5,在稳定区域,所以方法稳定!')% f9 N9 k, R7 p% e! z- z
else
' p! X/ `' a% T; ] I disp('以上为上五层数据,因为r大于0.5,不在稳定区域,所以方法不稳定!')2 g4 V) ~5 `7 ^0 ^; D0 n
end0 \2 m, x+ l- Y/ ~7 Q
T& j: B7 o' A! f" \有用的,大家可以直接用啊 5 h7 t0 T2 ]8 J% l8 i
时间有限,其中的函数大家可以从程序中获知!!! [em05][em05]
6 l5 Y$ D+ f4 y' I" m% N# p[此贴子已经被作者于2004-12-27 21:52:53编辑过] |