|
这是我为我女朋友的课程设计写的,如有不足,大家指点啊
7 M V* q8 X/ y/ x8 a! E# x$ \9 j5 M5 d4 \- {0 @1 t
t=input('请输入时间步长:');' R& g4 D: o2 \) A; f) f9 _
h=input('请输入x轴步长:');
, T$ j, t. c0 \' Kr=t/h^2;a=1-2*r;! e$ b r7 T8 P. Q- b3 f, T% T
A=[];
s$ X2 b- N4 b1 a8 k! n: R) nu=[];%第0时间层的数值" D6 y5 I' E* A6 y( ?/ \ @0 Z& `
m=1/h;0 F7 @% Y1 q1 u2 ]& Q! b h8 A2 ^
j=0:h:1;2 }( J+ P$ d% u
I=ones(size(j));
2 m- k+ m% Q1 s$ | u=4*j.*(I-j);. m! \4 |4 Z+ ~1 }/ Q: Q
%第0时间层的值的计算/ g" s! ~, y$ B1 f8 ], B
disp('5秒之后将会显示第0时间层的数值:')
1 `1 e' F$ h4 r8 f% \pause
3 e# n8 r) M# E3 G3 J( i6 A/ i" Ou: H: w- K: [+ o c4 C! }, O3 [
w=[];%第1时间层数值的计算
) G% A7 t2 p" S* T- P/ D4 cfor j=2:m
0 m+ s, Y7 }- @9 E. g4 f" I w(j)=[r*u(j)+a*u(j-1)+r*u(j+1)];
9 I4 S" m& V3 l+ _; G& K w(1)=0;w(m+1)=0;
8 q; I8 V2 ]& `0 E+ i8 Uend %通过第0层数值来求第1层的计算
6 t6 t+ Q* o( |7 t' {disp('5秒之后将会显示第1时间层的数值:')
/ X: I( c9 ~. S$ d. e0 O8 Qpause
T5 _+ ]+ Z% V2 Zw
( F. f1 Q7 {3 u4 ~0 Q! H. Eq=[];%第2时间层的数值
5 X$ E5 r4 y& n( e2 r8 t! x7 v ffor j=2:m
; z% F7 x+ @8 j7 N4 n2 } q(j)=[r*w(j)+a*w(j-1)+r*w(j+1)];
" `, k) X7 E4 Y( i( t) | q(1)=0;q(m+1)=0;
- E+ Z/ J# Y8 _end %通过第1层数值来求第2层的计算
, b/ t8 l' c" Y' f1 Q/ a- s* Vdisp('5秒之后将会显示第2时间层的数值:')3 V5 v! }! N. `8 d3 i
pause5 J8 n% n0 w& i J4 d, ], F9 u2 d5 l
q2 r! k8 \7 K% ]
f=[];%第3时间层的数值
3 w% ^. H& b8 R3 S5 D( Mfor j=2:m) j- c e. \; ~$ Y0 m/ ^! Z7 k4 l. D
f(j)=[r*q(j)+a*q(j-1)+r*q(j+1)];
' x& C1 d9 s" j8 k, r f(1)=0;f(m+1)=0;
( p7 E( h9 q# s+ x# t/ B E/ z" lend %通过第2层数值来求第3层的计算
- P' o+ B! q& R3 f6 z+ z' odisp('5秒之后将会显示第3时间层的数值:'): t8 B# h% }, a
pause, M- Q" c/ l* l4 T& t, p
f
+ t3 h* [# ?1 h9 n8 _0 z1 u3 se=[];%第4时间层的数值3 U5 ~# w" @' a P
for j=2:m
4 u' _) ^8 {* |( }" t, l1 b e(j)=[r*f(j)+a*f(j-1)+r*f(j+1)];: m1 M2 n5 E- X8 g! @
e(1)=0;e(m+1)=0;
# K% {: o+ ?' N; ?% yend %通过第3层数值来求第4层的计算
$ m5 Q5 Q( X; Z. a; O8 w" l C4 Adisp('5秒之后将会显示第4时间层的数值:')
. [7 L. S+ m( _8 _# U, Spause
% k( L' l: ~) x m3 Ye1 ?" u% o1 X0 i1 C* G
g=[];%第5时间层的数值( ]4 R. p4 B# D2 N, F5 A- ]+ |
for j=2:m0 |* E- v5 m8 m; r3 U! ]/ ?
g(j)=[r*e(j)+a*e(j-1)+r*e(j+1)];
" h& Q+ z+ B$ ^' |, p g(1)=0;g(m+1)=0;
6 l" d! ^7 B p% V, Qend %通过第4层数值来求第5层的计算
0 j% s$ l" ^- r# k* q& _disp('5秒之后将会显示第5时间层的数值:')
9 w- u. v8 p. d0 n) w2 w$ P& C' Apause+ } g, K2 w& @8 F/ L4 m9 i/ O
g
$ v) Z' Z+ x% `6 T1 Z3 ^if r<=0.59 Z$ {+ Z) m5 e4 t) N8 o! e
disp('以上为上五层数据,因为r小于0.5,在稳定区域,所以方法稳定!')
- M }4 [" C; V+ [# I @9 kelse
6 u, `9 D( C. w* x1 I* Y! y1 Z disp('以上为上五层数据,因为r大于0.5,不在稳定区域,所以方法不稳定!')
$ u; p) t% J4 {2 ~! b' xend
/ @) s' ?9 }7 L1 m" h8 ]# H
+ @1 q; e+ b0 K# Q+ }/ a有用的,大家可以直接用啊
. ?3 u5 N. p. V0 u8 j$ h时间有限,其中的函数大家可以从程序中获知!!! [em05][em05]* o8 L! Q# A. }$ L5 k
[此贴子已经被作者于2004-12-27 21:52:53编辑过] |