|
这是我为我女朋友的课程设计写的,如有不足,大家指点啊/ a0 K) u) X- O& C0 p$ |, E9 N
: c: O' r/ J, q9 j' c% _; J$ U b
t=input('请输入时间步长:');
' s; n! g7 _0 e6 Wh=input('请输入x轴步长:');
/ N& u( o8 v9 M9 b" Q9 Zr=t/h^2;a=1-2*r;0 K. W! d J `
A=[];# U# l* r" q7 _& @; L
u=[];%第0时间层的数值0 e' J: G7 A3 _9 C) @. @
m=1/h;7 w$ W! I/ w1 M1 Z/ T
j=0:h:1;1 E" R' D4 x1 N5 p% W
I=ones(size(j));. G! F# s- n2 f0 J# A
u=4*j.*(I-j);
y1 [' B/ S5 A& Z# i %第0时间层的值的计算, N# l$ h/ [; B& A% P; c
disp('5秒之后将会显示第0时间层的数值:')! l7 b/ b9 s# |7 b. Y
pause
5 p) m1 B9 i6 T& i& ?7 Tu
2 D: x2 K- w1 M7 a% O# pw=[];%第1时间层数值的计算/ g! g4 Z% Y! U; q2 M1 Y
for j=2:m
. u1 }. t8 M4 v9 m* x; Z' M w(j)=[r*u(j)+a*u(j-1)+r*u(j+1)];% J. `$ D& q; }6 G" a. z7 `
w(1)=0;w(m+1)=0;
6 |6 W% |" Y3 H) s: u5 V9 Pend %通过第0层数值来求第1层的计算. B+ x* u# j, }* i3 a
disp('5秒之后将会显示第1时间层的数值:')8 f6 D) Q& Z' ?% P
pause
4 _/ h' A x; ?3 h7 S- x( jw- b1 y3 C) |7 I& V) V
q=[];%第2时间层的数值
" S% |4 _0 F) g# ]1 n, U4 Q$ m- kfor j=2:m
: U) b0 k1 b4 \* O/ `2 p q(j)=[r*w(j)+a*w(j-1)+r*w(j+1)];
* f; L, S5 M c5 H; @) l+ v q(1)=0;q(m+1)=0;8 y+ O/ P% v v
end %通过第1层数值来求第2层的计算
# W* u% W$ M: ^, \' B% rdisp('5秒之后将会显示第2时间层的数值:'), R) F- v7 P8 U/ ~/ p
pause" ?5 B! l1 S! F: W) c: k) ~
q# F, L, p; B8 _9 p6 a
f=[];%第3时间层的数值, @) N/ D2 k/ H3 i8 d" _& d
for j=2:m; r& g1 g/ c, ^ S- D+ H$ X- ^0 b
f(j)=[r*q(j)+a*q(j-1)+r*q(j+1)];( ]" p. e- X! ~; e& L* d7 `
f(1)=0;f(m+1)=0;% ^- T0 B5 W+ r8 U0 A# m
end %通过第2层数值来求第3层的计算2 j* {4 ` M5 t: |' E
disp('5秒之后将会显示第3时间层的数值:')
9 ?% Q) y3 P+ U6 y' }$ epause( B9 z1 W) c! _0 j1 G% Z
f1 Z, W! P3 A% F# M& g! {9 x. l
e=[];%第4时间层的数值 u9 ^+ f7 g+ x" J
for j=2:m! W' a. P G: H9 x' p
e(j)=[r*f(j)+a*f(j-1)+r*f(j+1)];
9 u9 x! e! Q# ~% ?( z e(1)=0;e(m+1)=0;
, D* v, X2 V! @8 n9 n! O; f# @end %通过第3层数值来求第4层的计算
7 P' g5 H, x7 d: W% g% ~) @disp('5秒之后将会显示第4时间层的数值:')
7 u7 M, n# o5 M' C0 vpause
/ _& v5 d+ F: S( m! f- je
. g1 Z$ e* c' U7 T' Mg=[];%第5时间层的数值8 C% }$ R2 A$ H0 o& @$ D
for j=2:m' I, j! b& R6 G8 g1 F$ f
g(j)=[r*e(j)+a*e(j-1)+r*e(j+1)];
* T( p4 g9 C$ K e g(1)=0;g(m+1)=0;! m4 V4 w! P" Y3 e3 P3 G P1 S
end %通过第4层数值来求第5层的计算
% r: V; E5 a$ Zdisp('5秒之后将会显示第5时间层的数值:')
( V" o" @6 R: [pause
. ^4 k9 j6 c; j' E0 lg. w2 c, a! t7 R) S
if r<=0.5- b c' E" e" P7 L# M( t
disp('以上为上五层数据,因为r小于0.5,在稳定区域,所以方法稳定!')
( E* A6 S* I' telse 7 ?% D/ P* T# w7 }
disp('以上为上五层数据,因为r大于0.5,不在稳定区域,所以方法不稳定!')
1 ^* t) p v. p. \2 V' h# |0 Eend
8 P- B/ c9 {/ A* i$ {
7 V) o1 F j8 H& w9 i3 b2 g有用的,大家可以直接用啊
4 C% g Q* U- J/ C2 Z4 R- }* O时间有限,其中的函数大家可以从程序中获知!!! [em05][em05]9 X) }9 x$ j* u
[此贴子已经被作者于2004-12-27 21:52:53编辑过] |