|
这是我为我女朋友的课程设计写的,如有不足,大家指点啊
4 D. V5 k# w' }' i
6 @/ O6 I4 O2 ] t=input('请输入时间步长:');
- N- I6 ]" h: v: k: l. J6 Qh=input('请输入x轴步长:');
* O5 S2 ~5 ~! v2 n* Q5 gr=t/h^2;a=1-2*r;
5 Z b* u5 ]* Y" o3 D: f5 j$ s! WA=[];; i1 f! t4 ^* U
u=[];%第0时间层的数值 S; q' ], n& c( v( v
m=1/h;# D& d( s6 X) V/ z% F' |) F/ r
j=0:h:1;6 L% ?% x4 m( g' U: V
I=ones(size(j));
, J) S9 J! ~. F( W- i: u0 G- j u=4*j.*(I-j); [% }9 e0 J: y) G* H( l
%第0时间层的值的计算
' u9 `1 R8 `# u! udisp('5秒之后将会显示第0时间层的数值:')
7 t" l& `- b' @* Npause
* [/ ? \; m4 l6 Y' ?7 @! P. vu) F4 U- H8 y' A9 ^3 v1 R3 C' _
w=[];%第1时间层数值的计算
, T3 m( G. M! g( s. l" U/ h2 ofor j=2:m) N0 V z! ~6 k8 `/ u# e6 B
w(j)=[r*u(j)+a*u(j-1)+r*u(j+1)];
5 `- ^2 n) G- \0 b. J' ] w(1)=0;w(m+1)=0;3 A3 r3 v* W u6 R! X
end %通过第0层数值来求第1层的计算
( r3 O5 E+ j+ ^9 F: V2 A" ydisp('5秒之后将会显示第1时间层的数值:')5 N5 g1 G; R* L1 L
pause% y7 T2 \6 o) e/ i( V+ n
w$ K) z4 c( E. J. x
q=[];%第2时间层的数值: T- ]. d h0 E9 t" h( o! t) v0 u
for j=2:m$ W2 D$ R. I% @+ t7 _' q% Z
q(j)=[r*w(j)+a*w(j-1)+r*w(j+1)];: W; f% T1 s- `/ k4 t" N
q(1)=0;q(m+1)=0;. n( i; o+ n6 |' H1 B, z0 F7 i5 p7 e
end %通过第1层数值来求第2层的计算/ X) Q J0 ?8 b0 C' x- t. Q6 [; D( J
disp('5秒之后将会显示第2时间层的数值:')8 { r1 B/ d# c: k
pause. {7 A& s: s, |- S
q
; f. W7 I5 F" C5 t4 ], h, d8 A2 Tf=[];%第3时间层的数值
) _7 ~. d7 u4 A8 \: q" C4 wfor j=2:m- k, ?- Y! y# k+ \
f(j)=[r*q(j)+a*q(j-1)+r*q(j+1)];
8 g. A& g& W- Q1 [5 ~2 G. k f(1)=0;f(m+1)=0;/ {/ b" r# `# F. s3 N
end %通过第2层数值来求第3层的计算
6 u1 U$ o' t! U8 V" i9 O; gdisp('5秒之后将会显示第3时间层的数值:')
3 o7 Z0 q4 p+ _+ Z, |pause
5 W, p1 o1 \! I; [6 I. e- w- J& Gf! r8 W4 t$ F1 k/ V
e=[];%第4时间层的数值
/ H2 j! c$ S' V4 \; x4 kfor j=2:m
) y, ?6 v; P! l e(j)=[r*f(j)+a*f(j-1)+r*f(j+1)];( T- I1 D _0 D8 E: b! F% A5 a
e(1)=0;e(m+1)=0;" q: s: M5 \ t, i. E
end %通过第3层数值来求第4层的计算
q Y4 u! j# r8 B7 rdisp('5秒之后将会显示第4时间层的数值:')* ]8 |. i$ A6 q4 m2 G. `6 K
pause
& `7 n& n$ ~, E+ I. E/ je3 Q# H; A, M' s: {, ~+ t v9 _1 T+ @
g=[];%第5时间层的数值; u) V8 d% m5 G! T! C1 D a S: Z
for j=2:m# J3 D+ ~; L1 w; y( p7 T# Z
g(j)=[r*e(j)+a*e(j-1)+r*e(j+1)];
0 @3 u; t8 m6 m! U0 e g(1)=0;g(m+1)=0;; {& G3 T3 p6 w) @/ [2 K$ m+ ?. D: r( o
end %通过第4层数值来求第5层的计算$ a) l3 L. }) a: R1 C9 q5 \
disp('5秒之后将会显示第5时间层的数值:')
2 R( _! [2 T) R4 i: O( tpause
; P$ U. y* A+ I* ^8 Wg
, ?/ N$ i8 _: `: r; C x, Pif r<=0.5" z5 V9 T2 m7 Y& @# {1 i" y
disp('以上为上五层数据,因为r小于0.5,在稳定区域,所以方法稳定!')7 \4 O6 P! S8 v0 W, E
else 4 p) C2 k% u$ J' g+ h. {9 \
disp('以上为上五层数据,因为r大于0.5,不在稳定区域,所以方法不稳定!')
1 r3 \9 ^) e+ I9 k6 i9 ~# C! bend. x2 i/ l: K+ E% F& N
0 A* E* Q7 I8 p
有用的,大家可以直接用啊
4 S9 o/ U& y- z) s4 F. y/ _+ V时间有限,其中的函数大家可以从程序中获知!!! [em05][em05]
" X& w0 H1 C+ Q9 j; m. h+ b[此贴子已经被作者于2004-12-27 21:52:53编辑过] |