|
这是我为我女朋友的课程设计写的,如有不足,大家指点啊- L/ _/ U( u% |7 z* G3 g
_+ x9 N$ A# T# ]; J5 c
t=input('请输入时间步长:');; t9 U/ J* e1 b4 O4 j# \! A
h=input('请输入x轴步长:');
; r/ }! f! _5 |. D- ?r=t/h^2;a=1-2*r;
5 ~. ?' E+ G) A+ @" LA=[];
" J4 w4 X1 S% b; e! I1 ?. Gu=[];%第0时间层的数值! _4 d( s% c) H; n/ P8 C3 @
m=1/h;- T, |4 B @, s/ @8 J2 g$ q
j=0:h:1;- |* W) [# {$ a9 m
I=ones(size(j));
6 O. z9 }5 x6 T. U4 n: k, H u=4*j.*(I-j);
2 z# t6 g# J7 z1 @5 R %第0时间层的值的计算
1 F1 M5 f7 v) C+ w, B+ g/ k4 n7 }) {disp('5秒之后将会显示第0时间层的数值:')
: b$ f, Z) K. Ypause
$ k, f; ?: H8 T7 Cu
8 L6 {: }$ _( y" I; m0 A1 t& Mw=[];%第1时间层数值的计算) t% F* V9 _1 M: j
for j=2:m
# v) j4 Q7 b% w2 K, |1 | w(j)=[r*u(j)+a*u(j-1)+r*u(j+1)];* P! ?, w5 w. j) g: k
w(1)=0;w(m+1)=0;3 D$ `9 |4 @# ]1 Q4 ]! H
end %通过第0层数值来求第1层的计算
) K; y9 E f j1 O1 wdisp('5秒之后将会显示第1时间层的数值:')
- X( K, Q: z1 r$ Y5 x2 hpause' x( S& s j8 Z/ z2 h, s0 Z' f9 g
w
: f2 z8 [8 X9 o+ Oq=[];%第2时间层的数值
/ Q* B% H! i9 z9 m2 Tfor j=2:m
- z( T& Y! ^% ~ X# R A2 I q(j)=[r*w(j)+a*w(j-1)+r*w(j+1)];& ~ R5 J) N8 E' H
q(1)=0;q(m+1)=0;
1 @7 R A' p4 ~( eend %通过第1层数值来求第2层的计算. e3 r% r% e3 s5 \/ B9 e
disp('5秒之后将会显示第2时间层的数值:')1 P1 D% l7 C0 c3 c
pause
% D8 s+ D/ ]6 O7 m9 \ N3 {q/ V7 }5 \0 w4 I" W5 G: i
f=[];%第3时间层的数值3 N: H8 u9 Z% L; N
for j=2:m* |( ~) [ G; k$ ]4 O C3 @
f(j)=[r*q(j)+a*q(j-1)+r*q(j+1)];+ l& x! f6 U% n* L( ~
f(1)=0;f(m+1)=0;) v) i$ ]: l' J
end %通过第2层数值来求第3层的计算' a. m& ~! _' H7 X! G
disp('5秒之后将会显示第3时间层的数值:')
. P: n8 l8 R- I! ]pause
- @1 `* G2 {& m1 x8 w( d# ~f
: O% t) K5 E+ I9 ie=[];%第4时间层的数值% a5 Y2 Z4 U# K; [( V: h# w9 ]6 \
for j=2:m
! G5 Z' _: l' I, e# S, n; g e(j)=[r*f(j)+a*f(j-1)+r*f(j+1)];' L' ?" H* c' u; v5 Z, [8 [+ M S9 E4 j
e(1)=0;e(m+1)=0;
: y' r a4 n, ~end %通过第3层数值来求第4层的计算
" v+ O; T$ @ K+ K: T) pdisp('5秒之后将会显示第4时间层的数值:')! M% L5 r) ]- g# l4 g& _
pause. x: m g4 x3 @5 A8 l2 U! q
e
) F0 o# W+ L! w" }4 O: B1 J8 e8 ~3 {g=[];%第5时间层的数值
7 M1 h* g. f) [# Q) Vfor j=2:m* X7 E! H) G/ C1 N+ l. p0 H. K8 ]
g(j)=[r*e(j)+a*e(j-1)+r*e(j+1)];
' h7 i9 [: D( M, [6 P g(1)=0;g(m+1)=0;
T: h4 e/ W% M7 F4 Hend %通过第4层数值来求第5层的计算
- X F3 ?9 i4 x, ]. ndisp('5秒之后将会显示第5时间层的数值:')
5 E# G" j4 T; K" npause
% @3 W2 G' N! H5 i, N' Sg
7 |1 u/ Z0 ^' p9 J3 H" Wif r<=0.5$ m) h4 _4 P& c ?# t
disp('以上为上五层数据,因为r小于0.5,在稳定区域,所以方法稳定!')
; N+ E4 u! ~! s# a3 ^: Felse $ s" ^; j$ h9 u' D% E( r
disp('以上为上五层数据,因为r大于0.5,不在稳定区域,所以方法不稳定!')
# N8 U/ [& N n3 N2 Jend
/ ^3 W- f9 n% {
1 O/ r9 D/ |8 d$ q) x N( G有用的,大家可以直接用啊 0 A3 S! {+ C0 Z! B# j! y; _
时间有限,其中的函数大家可以从程序中获知!!! [em05][em05]
; E! e# _- Z8 V: N& x2 t4 P( ?' Y[此贴子已经被作者于2004-12-27 21:52:53编辑过] |