|
这是我为我女朋友的课程设计写的,如有不足,大家指点啊 p9 d0 _, q) w! Y- _7 V. q
6 W4 Q+ F9 ] m! S# w( ]
t=input('请输入时间步长:');
w8 C& R: E- p, k- Vh=input('请输入x轴步长:');$ k' _0 o4 }5 `1 Z% L( z+ G1 C+ Z' D
r=t/h^2;a=1-2*r;; |* f6 X( W# c0 h. l
A=[];9 I2 _ T- g/ ^8 D$ e0 Z
u=[];%第0时间层的数值- v1 b9 p+ S5 g
m=1/h;
* p2 }% o. }$ g6 x2 _2 {j=0:h:1;$ ? @: q0 H Y4 H/ ]
I=ones(size(j));
4 E, q, Y( f7 {6 S u=4*j.*(I-j);
2 p0 _! g1 o$ [ %第0时间层的值的计算
" w) O6 ]* W, ^: q0 Tdisp('5秒之后将会显示第0时间层的数值:')( F: |# n0 J) w) g. X z1 L
pause
5 R5 X6 d. W3 C* x3 ]# Zu, |5 k; q& }) v2 H3 O* f% t6 F
w=[];%第1时间层数值的计算
/ }. b: n, i2 B/ ~for j=2:m0 J7 p0 Q+ F7 }: m4 n
w(j)=[r*u(j)+a*u(j-1)+r*u(j+1)];
3 A7 n0 R# E5 y( _ w(1)=0;w(m+1)=0;
# [* `9 x1 t' n2 j7 q. r+ F9 {end %通过第0层数值来求第1层的计算
3 A; a# ^1 p4 p3 p) X A: [disp('5秒之后将会显示第1时间层的数值:')4 \$ C$ L1 X6 l. s3 d2 P c- g
pause
+ `& ~: |. S2 t* }9 [2 E N) ?w
$ M& \$ N" X- v3 G9 o; V) e* w9 C# c! Fq=[];%第2时间层的数值
9 s4 ?$ z/ A. R. H* f5 |8 Gfor j=2:m# \1 Q# M! f: H3 |6 b; p6 V
q(j)=[r*w(j)+a*w(j-1)+r*w(j+1)];
y! y+ @ m- n$ s6 N5 h q(1)=0;q(m+1)=0;
& q$ i$ n" E/ H7 h3 x6 ^0 p: c! Nend %通过第1层数值来求第2层的计算' X; o( d" R4 s6 |: N
disp('5秒之后将会显示第2时间层的数值:')
6 k; v2 e8 p6 Q2 i5 C5 I/ y4 bpause
8 N, N! z3 e' S' V+ F1 aq
1 m# w- r( C" B/ _. af=[];%第3时间层的数值. }$ H$ a( D# V1 n4 r
for j=2:m8 h! d; {. _" K4 w' G
f(j)=[r*q(j)+a*q(j-1)+r*q(j+1)];8 f# g* |) X/ g5 X* i
f(1)=0;f(m+1)=0;
$ H+ {& I- k% Yend %通过第2层数值来求第3层的计算
; X! e6 ?* Q/ K G- vdisp('5秒之后将会显示第3时间层的数值:')
3 z" `8 J( r& M# W, L/ N) p( xpause! E$ m4 t! Y3 P7 z: X9 c Y
f2 L& l3 E) O- B0 r0 j% [
e=[];%第4时间层的数值
' w& S3 k% b% b, n: y! o0 afor j=2:m
0 b: g' E, { m+ b0 q/ v e(j)=[r*f(j)+a*f(j-1)+r*f(j+1)];
2 m+ V) y2 C9 F9 `+ l/ {' O e(1)=0;e(m+1)=0;
$ {- L8 Z+ y2 A E1 Nend %通过第3层数值来求第4层的计算# {) Z& K7 W& x( T
disp('5秒之后将会显示第4时间层的数值:')
* C4 n# ?' W2 Ppause
4 \* N7 G: F& Q$ c- Z! Ne5 Y, Z6 Y! J8 [" }) M' \- x
g=[];%第5时间层的数值
5 o7 p8 Y3 H2 P" x5 v2 N, [- yfor j=2:m
' t( v7 @! q# M- y g(j)=[r*e(j)+a*e(j-1)+r*e(j+1)];* W) i0 L) g# }* c, ~9 a
g(1)=0;g(m+1)=0;
! e+ s2 ]1 D$ p/ _1 x- xend %通过第4层数值来求第5层的计算, M. ~7 o I+ ]
disp('5秒之后将会显示第5时间层的数值:')) \6 ~. {. `( W* A' S
pause7 F n1 p G r1 s4 X: s) }3 T
g
+ `6 m9 P1 O- a0 ]0 tif r<=0.5
6 @( {7 K0 _/ _7 {& k/ q disp('以上为上五层数据,因为r小于0.5,在稳定区域,所以方法稳定!')( a( k* D8 V* y! `$ R3 Y& y6 C4 M- }
else / d5 R, N- l- G9 E
disp('以上为上五层数据,因为r大于0.5,不在稳定区域,所以方法不稳定!')
/ u! {6 z3 ]$ g( [: fend
* u3 r$ K5 _6 u& n c K! {5 M9 s: K+ i+ M9 n/ N0 W
有用的,大家可以直接用啊
8 n( q1 b1 Z5 B M4 W时间有限,其中的函数大家可以从程序中获知!!! [em05][em05]
, W1 z" g0 r2 h x[此贴子已经被作者于2004-12-27 21:52:53编辑过] |