|
这是我为我女朋友的课程设计写的,如有不足,大家指点啊
- E( M9 {7 }, h8 V2 @
5 H4 `: `; r1 ?4 X% J& L# H" D t=input('请输入时间步长:');3 S5 s+ k) L+ ]5 I0 h& M9 I5 W# N
h=input('请输入x轴步长:');
4 N& j: n. q# N7 M. ~9 b5 _r=t/h^2;a=1-2*r;
# l. L$ u% O2 |; F) RA=[];
6 i2 H9 u$ U% ^( o( [u=[];%第0时间层的数值. N% j- A3 o: H( y7 S3 v
m=1/h;
' r4 H* @- b' ~ y* n6 Zj=0:h:1;0 F4 ?( @: { E. v! M) f: V
I=ones(size(j));! N, \# J% t1 {0 ^( _8 `* M7 c0 m T
u=4*j.*(I-j);
. `9 l5 f/ e( f* Z* N5 ?/ E %第0时间层的值的计算
. l. S7 \% r# c8 U# xdisp('5秒之后将会显示第0时间层的数值:')
) ^" |' m0 ]1 M" j& }! upause" l/ I7 t. F, _) M5 D
u
% y& f' Y' C6 A% o8 Xw=[];%第1时间层数值的计算5 s' r. P4 M5 d' A, G
for j=2:m
5 i) B, ~% V2 b5 f& a* b/ F w(j)=[r*u(j)+a*u(j-1)+r*u(j+1)];5 a$ N& |4 W* A: Z6 R; @
w(1)=0;w(m+1)=0;) \# D7 x: d! F
end %通过第0层数值来求第1层的计算+ m! {/ A: I$ @! \4 m
disp('5秒之后将会显示第1时间层的数值:')
, ?4 e* ^9 K( M6 Z" X v @pause9 f+ X6 I) l0 ?% v
w; A z T5 j+ i" l- k7 t! q
q=[];%第2时间层的数值, N3 R/ Q5 h$ `2 n. P
for j=2:m
) R% [7 j$ z& `6 e6 e/ B% } q(j)=[r*w(j)+a*w(j-1)+r*w(j+1)];7 k' t& q" A, i5 l" R
q(1)=0;q(m+1)=0;
7 T8 C& ~- F* U }8 @% ?end %通过第1层数值来求第2层的计算
6 L; ~( q$ J B3 y. S8 L) ?" vdisp('5秒之后将会显示第2时间层的数值:')
( g% x( L6 i" xpause
. @6 A8 l: S/ u# M* l- h/ Oq
! n( t, X9 u }" Z* _" ~) ef=[];%第3时间层的数值
& _' m$ Y s8 O: k5 Xfor j=2:m7 ` n* f5 a% T& {2 i; y' p
f(j)=[r*q(j)+a*q(j-1)+r*q(j+1)];
' b% r& V! \" }6 Q$ A: z; d5 T f(1)=0;f(m+1)=0;; l# s( w6 U+ |" p+ l
end %通过第2层数值来求第3层的计算" i$ `9 n$ m: P: c
disp('5秒之后将会显示第3时间层的数值:')
! e2 ?1 T' i7 R- T" C8 J2 ^! Gpause+ W* Z4 ]: F1 Y8 I) X9 E4 _
f
1 z3 z6 |9 B; n+ U' p% ze=[];%第4时间层的数值
( q: ]3 q2 F d8 s1 [* Wfor j=2:m
3 _: [1 m( W+ t' ^! [* E( s6 N! z e(j)=[r*f(j)+a*f(j-1)+r*f(j+1)];) Q" p6 V: ^: A/ w, R! f4 j1 P
e(1)=0;e(m+1)=0;
# p% [; y$ L# y. dend %通过第3层数值来求第4层的计算5 H+ c# O2 k5 r9 l
disp('5秒之后将会显示第4时间层的数值:')5 H7 G* f J$ X! g' }5 `
pause
, _; w E) c1 S7 `6 ~e. Q3 M9 N( O+ {
g=[];%第5时间层的数值
% _' j' v+ g8 r% E1 K- o3 Jfor j=2:m
7 W: h( l+ W6 p2 u0 v g(j)=[r*e(j)+a*e(j-1)+r*e(j+1)];; H8 K7 Z. ?8 s5 z) P& b
g(1)=0;g(m+1)=0;( h, n$ _ S$ ^( s# ~! K
end %通过第4层数值来求第5层的计算- k2 O0 i/ r0 Y' I, f
disp('5秒之后将会显示第5时间层的数值:')
. d. o% o% B& p ~: lpause
( E/ h# x- _+ Jg1 Q) D: }$ j* G$ I
if r<=0.5
% k$ I* {+ w4 C7 \, D8 M# F2 T6 O disp('以上为上五层数据,因为r小于0.5,在稳定区域,所以方法稳定!')
0 D S/ P' s# c& i! V/ uelse * Z, {6 L6 @/ n* [* [
disp('以上为上五层数据,因为r大于0.5,不在稳定区域,所以方法不稳定!')
" _# n) G% B! @0 l- @; ~end
- S( Z# y- F! m; I# v1 P4 }2 ^& G
& U$ n- j, O9 D: k& j$ c有用的,大家可以直接用啊 * h3 U; c# U {) _# N; X
时间有限,其中的函数大家可以从程序中获知!!! [em05][em05]6 b/ _0 R6 U8 ` z. A
[此贴子已经被作者于2004-12-27 21:52:53编辑过] |