|
这是我为我女朋友的课程设计写的,如有不足,大家指点啊5 }+ _& m& L6 k5 i3 f
! s; x6 T/ L$ b& |4 H! ?- D! S
t=input('请输入时间步长:');5 B6 a( |3 P+ \; P0 r8 q2 q
h=input('请输入x轴步长:');
0 X( U2 Q1 q) n0 or=t/h^2;a=1-2*r;
' a+ R8 _& G; r% f* F0 v/ wA=[];+ q0 H5 f- _. ]. }
u=[];%第0时间层的数值
! _8 U. Y) i* u* h# s$ @# vm=1/h;5 Y" |* O W0 d9 N" g) H& V; l- |
j=0:h:1;
. o P! d4 \7 _I=ones(size(j));- B2 J3 Z; S. Z$ y
u=4*j.*(I-j);( | I7 A& f% N L$ K/ D8 d
%第0时间层的值的计算8 |7 {7 j& L/ [
disp('5秒之后将会显示第0时间层的数值:')
6 i& m$ k" ^5 I# T4 r- s5 Opause8 S$ l% F7 O- H/ F* _
u$ K' s- }. K, c+ q" |
w=[];%第1时间层数值的计算5 P2 Y7 W- f) k+ U( m9 g
for j=2:m
" ]# r" ?0 Z6 \. S/ |5 [9 m% B5 V w(j)=[r*u(j)+a*u(j-1)+r*u(j+1)];
$ d7 m+ k* Z5 Y4 ?6 l$ z w(1)=0;w(m+1)=0;
1 J5 \% k" q/ c& }/ |0 g- ^end %通过第0层数值来求第1层的计算
! K5 I0 }- W6 I2 l2 _* ^disp('5秒之后将会显示第1时间层的数值:')$ _ G5 t# V% o! R. W4 s7 w7 d
pause
, i8 }! _: E7 O* aw
8 H; O& h; |" wq=[];%第2时间层的数值 ?# a0 b; r7 C0 A8 o0 k
for j=2:m" C& f: u& r$ ~- S% k$ C `; d4 ?
q(j)=[r*w(j)+a*w(j-1)+r*w(j+1)];
% H4 C" _0 Z" f, f3 j' ? q(1)=0;q(m+1)=0;
+ O; C6 l! K% I: C4 A! `end %通过第1层数值来求第2层的计算9 w2 V+ z/ ]- L6 t) m% T9 i
disp('5秒之后将会显示第2时间层的数值:')
! C/ ^: Y' i( Y# b# q2 upause
' S6 I' p6 y3 l, Z! Rq. W0 ^( t1 a P3 a+ ?( O
f=[];%第3时间层的数值
" z* e0 d) m, y( L! j. gfor j=2:m
- u) Z1 @) A& W( |. t: C; S% b f(j)=[r*q(j)+a*q(j-1)+r*q(j+1)];
3 T& M8 W( T+ j/ ]/ k/ F2 G5 P f(1)=0;f(m+1)=0;
8 a% n+ k. c2 F0 s t9 ]end %通过第2层数值来求第3层的计算
& z8 e d# t( M/ M' S, j! e% P0 Ddisp('5秒之后将会显示第3时间层的数值:')
# R4 D% c2 F9 Kpause. {2 F; b: Q% b' b# M( M
f
( f5 ?8 |* t# k: O f+ m+ C; Be=[];%第4时间层的数值: F/ s" q) o; H3 @, n& k( |
for j=2:m
4 @& |7 L/ m2 j% x- Q- p) g# s! g: O5 b e(j)=[r*f(j)+a*f(j-1)+r*f(j+1)];
! z2 T4 C7 e! p e(1)=0;e(m+1)=0;
6 [2 w0 c( u4 L3 I5 o1 ^- oend %通过第3层数值来求第4层的计算. V- a" {* K m% T( e+ k
disp('5秒之后将会显示第4时间层的数值:'). O; S1 H+ G8 ]9 b% s, D$ e, e( {5 I* }
pause
$ Q/ @7 E& _& o `! xe
, E* f2 G. G: Y9 `6 t$ \( [% G; wg=[];%第5时间层的数值
9 G; \4 Y A- M r. n# [# C% O# ?. |for j=2:m
. V0 I, I3 Z6 D0 U' e: r g(j)=[r*e(j)+a*e(j-1)+r*e(j+1)];' J) J6 X) {6 n
g(1)=0;g(m+1)=0;
' P2 r* _6 t) X4 ^% j* d, vend %通过第4层数值来求第5层的计算
' n! V6 G: a. m6 ] V7 M8 Edisp('5秒之后将会显示第5时间层的数值:')
( m; a @9 g4 u; Fpause- P0 Q; `% n# i$ |6 a
g2 U1 p3 _4 ~+ i5 ^
if r<=0.5
& z A' P7 K% V, ~6 z* c* V disp('以上为上五层数据,因为r小于0.5,在稳定区域,所以方法稳定!')+ X l: ?" R' X, M
else 6 g8 Y# a5 t* X. ]- O! O! K
disp('以上为上五层数据,因为r大于0.5,不在稳定区域,所以方法不稳定!')
: M) B/ K: m6 a" U& K6 }end
& o- z- G5 L0 x4 t7 |- Y; Z$ w9 R
7 J9 z9 k) u( F! m) ?/ z" c5 N有用的,大家可以直接用啊
+ _6 Q c9 a% f$ V! y时间有限,其中的函数大家可以从程序中获知!!! [em05][em05]
5 q6 Q6 H9 R @3 s& ^[此贴子已经被作者于2004-12-27 21:52:53编辑过] |