|
这是我为我女朋友的课程设计写的,如有不足,大家指点啊
2 o5 n: Q$ n( p; u0 x% g( z0 D1 @: F q' F
t=input('请输入时间步长:');% L7 ]# X1 y3 e6 L$ ?$ f3 P* y
h=input('请输入x轴步长:');
3 f) L/ L6 h' r$ r$ l3 {r=t/h^2;a=1-2*r;
/ T8 y, s3 T2 RA=[];
. a+ D; W1 W, Tu=[];%第0时间层的数值
! \8 y+ R) k Am=1/h;
; o. G! S( H2 {3 Sj=0:h:1;
+ K, y# N/ i+ d( O, N9 h8 YI=ones(size(j));
! f6 Q1 _ t5 \- f4 @1 ~* Z u=4*j.*(I-j);9 }' V; G& A! F. ~: S0 v& [0 Y# U( `4 v" n( m
%第0时间层的值的计算$ s* Z6 G3 F% k+ w' ?
disp('5秒之后将会显示第0时间层的数值:')
M9 G6 @$ y. Vpause! J H- R2 H& n; h* p: l" ?9 W
u
* H6 }# ^9 E5 I4 d8 N# T _5 O9 pw=[];%第1时间层数值的计算
. T$ p# ^8 P# L* x, a* W, \7 q8 yfor j=2:m2 r I4 r, O7 y3 I" m- B0 {
w(j)=[r*u(j)+a*u(j-1)+r*u(j+1)];
0 z5 m9 A; V: ?$ B" ^# S w(1)=0;w(m+1)=0;8 c& s1 l+ a2 o" Z* I/ T* {+ N7 _+ Y
end %通过第0层数值来求第1层的计算
! ?+ D" Z8 w8 c0 Z, G ?6 h6 \+ |disp('5秒之后将会显示第1时间层的数值:')
+ _& y3 `9 h. S+ Ppause
0 c) T1 g1 I+ b, \6 C1 }w2 [5 H: L$ q: n! H1 I* Q# ?0 c
q=[];%第2时间层的数值. g0 J3 G0 r) m' E- _" d
for j=2:m$ W, y* t6 n( S# V% K) O1 ?4 E: y
q(j)=[r*w(j)+a*w(j-1)+r*w(j+1)];. H% x, l9 Z6 s" [9 W; j
q(1)=0;q(m+1)=0;. c: F2 f( j4 m' M0 d
end %通过第1层数值来求第2层的计算
3 r8 E D# e) Odisp('5秒之后将会显示第2时间层的数值:')
0 n/ J1 [ _6 }pause' D! x, Y s2 p5 ]
q
2 U( V: }# e' n% Cf=[];%第3时间层的数值9 K, ~; n9 R }3 c/ ~0 L8 \4 b
for j=2:m' c2 [5 E% M0 B& ]9 a( f1 ]: u
f(j)=[r*q(j)+a*q(j-1)+r*q(j+1)];$ l5 K! b' D) H( C1 R0 b
f(1)=0;f(m+1)=0;1 p9 q( k1 I% u2 c3 o- ~: i, x
end %通过第2层数值来求第3层的计算$ D8 K0 X" F3 l% j! S
disp('5秒之后将会显示第3时间层的数值:')
6 i" \# X2 z! n" qpause
4 n7 `9 T2 f6 ~" X) V. Sf P0 y( z- W" m5 ]# O
e=[];%第4时间层的数值
0 h4 f: K# \; W- {' H' k. }for j=2:m9 a8 E" v) k0 |; |% J3 y
e(j)=[r*f(j)+a*f(j-1)+r*f(j+1)];2 j% i0 T$ f& O8 j! v
e(1)=0;e(m+1)=0; d/ [' f7 v# {
end %通过第3层数值来求第4层的计算
1 k! N+ x) S# e7 Adisp('5秒之后将会显示第4时间层的数值:')
4 k, B) ]2 R- S" jpause
4 a4 K5 A! E$ O3 z& C1 T' me/ L8 `, ~; J8 [3 L! S( R
g=[];%第5时间层的数值
+ |% a4 B) t0 e6 g( H; mfor j=2:m1 ^- N* t) n' |- ^* B) F/ S
g(j)=[r*e(j)+a*e(j-1)+r*e(j+1)];: ?" h, a& W# H3 g4 u) V8 L
g(1)=0;g(m+1)=0;
5 B5 d) I5 r, d+ iend %通过第4层数值来求第5层的计算1 D; I- u* J/ E3 T
disp('5秒之后将会显示第5时间层的数值:')
; E( b4 ^; v- L' E$ t( y6 \, G6 o6 Ypause2 U9 W6 x( ~ R, x; K. _- V
g
8 i4 _9 P1 j! k, T* L: F5 Z0 }if r<=0.5
/ Q1 C& c$ q0 ], R" \' a- U! { disp('以上为上五层数据,因为r小于0.5,在稳定区域,所以方法稳定!')$ C3 I' L9 s1 G( Y w
else 1 O% [1 M4 U/ a4 f
disp('以上为上五层数据,因为r大于0.5,不在稳定区域,所以方法不稳定!'); z* R4 a4 N5 v) ^ _" d
end
\) f- R( Z- O: P2 P: x) E5 i5 B0 K' z
有用的,大家可以直接用啊 * e2 h1 q ^, T4 b0 s8 \( @
时间有限,其中的函数大家可以从程序中获知!!! [em05][em05]( X5 Z! ]1 v, G; x9 N8 X+ Y
[此贴子已经被作者于2004-12-27 21:52:53编辑过] |