|
这是我为我女朋友的课程设计写的,如有不足,大家指点啊8 n/ o# j% t. O2 A) W1 s
" v: S$ `2 r- e0 T$ R0 `9 w" R7 \( z
t=input('请输入时间步长:'); y& B/ t6 o+ X& `4 a% N
h=input('请输入x轴步长:');
, f3 I, ^" `% x* sr=t/h^2;a=1-2*r;
& @ d$ j6 A' B+ }( i1 ]A=[];( F5 u/ v9 I5 H) b
u=[];%第0时间层的数值
9 H. ?3 e' R0 M6 z/ h3 ~, U3 fm=1/h;
8 N2 K2 u) c8 N' e+ p' a. [$ W" ~& Zj=0:h:1;
. ?- k- i4 @- k7 h1 r( wI=ones(size(j));
$ Y1 R l! E4 E u=4*j.*(I-j);
4 G$ ]9 @ y4 x3 h; Y2 H' E O2 | %第0时间层的值的计算5 Q( m8 G; a& D! y8 q0 v. G
disp('5秒之后将会显示第0时间层的数值:')
3 X% d5 {& C1 B0 S" u: } Xpause
/ S& I6 @) |: N6 H' V" }9 Q3 O* Ju
6 k; V0 v7 u+ Hw=[];%第1时间层数值的计算6 O7 U. v% E8 n) g* f5 z
for j=2:m9 Y/ P5 j3 L- Z8 Q: L
w(j)=[r*u(j)+a*u(j-1)+r*u(j+1)];9 l. j* h+ ?- A# z, {
w(1)=0;w(m+1)=0;! _. k4 T! C7 `3 ]
end %通过第0层数值来求第1层的计算
) j$ {6 i. e) J% x* y$ ~+ v* A4 @; |7 Idisp('5秒之后将会显示第1时间层的数值:')5 w9 W. l: s4 P0 y
pause8 H3 M; z9 r& n4 b# |) h% \
w
7 O" H' t1 s6 M0 _5 tq=[];%第2时间层的数值% ]: Y0 O+ t. q6 \
for j=2:m
2 ^0 q! j& Y4 t* y& u L1 p q(j)=[r*w(j)+a*w(j-1)+r*w(j+1)];7 {$ m* L* S- v' u" u8 y1 ?+ A
q(1)=0;q(m+1)=0;
: E+ [% y- Q: F+ f5 }& qend %通过第1层数值来求第2层的计算
& o# n2 V4 a6 j2 I M: A: e7 b1 [0 wdisp('5秒之后将会显示第2时间层的数值:'); `, F0 v9 S$ L
pause
- h+ C' Q" j+ D# |9 E- Wq
" m' N7 _* m4 ff=[];%第3时间层的数值. _0 Q; {3 ?$ `$ V3 o5 x6 G' A
for j=2:m) r& r# `9 p9 `1 O7 k
f(j)=[r*q(j)+a*q(j-1)+r*q(j+1)];, e1 ~7 i4 j# c& i1 o
f(1)=0;f(m+1)=0;
! ^( n3 C5 m+ w0 v5 g% F! z/ wend %通过第2层数值来求第3层的计算
3 K1 u- O. e- T1 W9 vdisp('5秒之后将会显示第3时间层的数值:')) @7 {" h3 s) {) J$ x% u' I$ B( b L
pause
0 K' T7 v, ?$ V1 d5 N2 @ ef
6 q3 D7 g) z* _6 [, |1 Ae=[];%第4时间层的数值" R; e+ ]( u% V. m9 _
for j=2:m
{3 K) F; O8 c: l. U e(j)=[r*f(j)+a*f(j-1)+r*f(j+1)];
) h/ [" M& _& m! K, V e(1)=0;e(m+1)=0;
* m6 S7 K$ A, x( I2 hend %通过第3层数值来求第4层的计算
i0 U8 e7 ~$ ]( G) G; N6 Gdisp('5秒之后将会显示第4时间层的数值:')
, H/ f, C. \6 q# U" Cpause6 y+ F0 X; |5 h% D- d
e, ?1 X* V! n5 p4 i9 M7 i7 I) {
g=[];%第5时间层的数值
2 G+ d. {- [5 r! f+ sfor j=2:m/ E, Y* a' M& C6 x& ?
g(j)=[r*e(j)+a*e(j-1)+r*e(j+1)];
) w3 a8 n) e% j) n! F g(1)=0;g(m+1)=0;# ?* D% k, R! B5 m- s0 b
end %通过第4层数值来求第5层的计算1 ]" Q& N) w1 r; |$ z6 ^) }, e8 u
disp('5秒之后将会显示第5时间层的数值:')
) x+ c S* Q6 m7 S" p+ [pause( R* ]7 `, q; G; W2 \( @
g3 |: m- f- C1 }
if r<=0.5
- e& A; D5 x0 x$ P disp('以上为上五层数据,因为r小于0.5,在稳定区域,所以方法稳定!')
0 P, R6 f! Q4 s& f7 u, D# F) b" helse
( l8 e7 K. k- @7 c4 C disp('以上为上五层数据,因为r大于0.5,不在稳定区域,所以方法不稳定!')
2 c+ n1 l& P: i& `& h. g K$ eend
6 X# i, Z# z4 r/ E2 P' N, l, i1 Z
) ]7 x# p, v4 B) Q+ V5 D有用的,大家可以直接用啊 # [9 u9 }8 }4 h6 X+ O; U7 e. T7 \
时间有限,其中的函数大家可以从程序中获知!!! [em05][em05], Q1 w3 u# c) _6 ?0 `
[此贴子已经被作者于2004-12-27 21:52:53编辑过] |