|
这是我为我女朋友的课程设计写的,如有不足,大家指点啊
! x7 O( K" V7 |. G1 z5 A, {+ ^* x/ m; I3 N
t=input('请输入时间步长:');; A+ B# h4 X- p
h=input('请输入x轴步长:');
! n9 |- F+ [* h) P3 nr=t/h^2;a=1-2*r;
$ c; a5 `) D$ Y* Y3 ?A=[];
" C5 l6 w/ }2 E0 au=[];%第0时间层的数值
. P& y: @" Y5 ?/ m8 gm=1/h;; C' g( D2 b6 N# h/ [1 ?5 b c1 Q
j=0:h:1;! y9 t7 _8 h9 J
I=ones(size(j));" o$ b% \' [! P4 R7 @+ L
u=4*j.*(I-j);
/ U0 j5 E& ~1 W$ R+ ? %第0时间层的值的计算
8 p; U- A, A) @4 ]. g% Cdisp('5秒之后将会显示第0时间层的数值:')
; Z6 v4 [" H+ m9 Y$ h: G7 Mpause
6 E- q1 C1 V9 N( T" |( N9 Yu
8 C- a: q; E* u2 Uw=[];%第1时间层数值的计算
# Z9 d- e$ t# X# k( a3 J& a+ r% }for j=2:m
1 a* n; n/ B [4 a; k w(j)=[r*u(j)+a*u(j-1)+r*u(j+1)];
; _0 x) V8 w5 P8 ]5 |* i7 b w(1)=0;w(m+1)=0;
! h* W B% ?4 }. x! Iend %通过第0层数值来求第1层的计算7 W: l. A5 s6 p+ s3 W+ D
disp('5秒之后将会显示第1时间层的数值:')6 s- P: |+ A: F% D+ a3 t8 f
pause
4 y2 r5 U$ K3 A" z2 }) N7 Ow
( R4 K+ I4 w: Z+ Q0 }q=[];%第2时间层的数值
^& b- p' A9 Y1 F. v {for j=2:m
# I, Y. k9 |- n- d7 H q(j)=[r*w(j)+a*w(j-1)+r*w(j+1)];' q" J0 X: G3 s$ ^: v" L, G
q(1)=0;q(m+1)=0;
) w& K3 e7 N/ `, t* {end %通过第1层数值来求第2层的计算
2 B. |3 ~3 H, A( q% A! ddisp('5秒之后将会显示第2时间层的数值:'), `# y% N B, p; v" `3 X
pause+ ~/ M. H# P4 c+ t. p* [
q* O/ F5 o0 u7 i$ y2 |
f=[];%第3时间层的数值" r1 m9 }5 T% k" i+ d7 K
for j=2:m
2 u# s" @0 c- J: B f(j)=[r*q(j)+a*q(j-1)+r*q(j+1)];6 h/ F2 H) c4 T& H) w$ r
f(1)=0;f(m+1)=0;
" a7 @5 X. W ], B2 F4 iend %通过第2层数值来求第3层的计算
3 A' B. U- w* s5 E7 D& \disp('5秒之后将会显示第3时间层的数值:')
$ K) j: m1 j, y0 S) M( f6 N/ M4 e% mpause, j, C8 y" y H+ G; K& x3 E8 e! w
f
" T0 l1 b( u9 U; q' w3 D" be=[];%第4时间层的数值
( Z+ d1 U$ T4 M$ C/ Wfor j=2:m/ K8 \2 J- Y: y) ~* u$ y- {
e(j)=[r*f(j)+a*f(j-1)+r*f(j+1)];! f! K7 u1 n( d
e(1)=0;e(m+1)=0;: X. ^: K9 S0 i2 ~8 P
end %通过第3层数值来求第4层的计算 ^5 j, S R8 M3 c9 w' G$ A
disp('5秒之后将会显示第4时间层的数值:')
" I! P& h; y! O5 Apause# I) u1 J9 d @& Y& w3 E4 e8 d) R0 o* O
e
. t% `* `- v: G5 r2 }g=[];%第5时间层的数值
* I! a, j0 j& dfor j=2:m5 P! R8 W% e* v4 e4 [
g(j)=[r*e(j)+a*e(j-1)+r*e(j+1)];6 R: r/ r( U' n" J: k* b
g(1)=0;g(m+1)=0;
- @; f( x3 _$ `$ @/ _. D% k+ W% Fend %通过第4层数值来求第5层的计算5 ]% i- T* i, J# i5 T/ y
disp('5秒之后将会显示第5时间层的数值:')
* Z" w+ H k4 s n) Bpause9 h7 j+ l" O0 C$ H8 z( K
g) G1 G f8 L4 r# n
if r<=0.5
1 S0 g0 O. n8 h3 M+ m" F disp('以上为上五层数据,因为r小于0.5,在稳定区域,所以方法稳定!')
0 Y; w7 d1 V7 relse 3 ]' e6 K4 U' a7 c5 M9 y' t, a/ e5 ^. Z
disp('以上为上五层数据,因为r大于0.5,不在稳定区域,所以方法不稳定!')
' h( E) s+ e: `) c% a2 tend/ T5 x4 {! e3 x6 e! z; r
6 M- B" J! m I5 |& r8 F- |
有用的,大家可以直接用啊
: N: Q- l. }% D& x时间有限,其中的函数大家可以从程序中获知!!! [em05][em05]
' r; N" J& C2 {- i' N! ?- P3 M[此贴子已经被作者于2004-12-27 21:52:53编辑过] |