|
这是我为我女朋友的课程设计写的,如有不足,大家指点啊
( N3 F1 _, H4 [$ p% `
- r9 D/ u3 U& c t=input('请输入时间步长:');
7 l2 \# `1 ~2 m% U( \( r, Ah=input('请输入x轴步长:');3 ~- d; J$ u& K) b
r=t/h^2;a=1-2*r;/ D" b& K0 l! l3 |$ E8 l
A=[];: K; R, X" s% G6 l" O0 t0 S+ h9 L
u=[];%第0时间层的数值
6 F- ~3 H2 b0 J; z: d7 e3 ^m=1/h;
2 |. c+ l. u# Z, p3 aj=0:h:1;
5 S+ n" a g6 v; L8 ZI=ones(size(j));+ {" A2 n7 j1 S, _
u=4*j.*(I-j);. ]) w8 J5 P/ F0 _4 b
%第0时间层的值的计算: H: d7 Q# w! r, E8 Z# K2 u1 J
disp('5秒之后将会显示第0时间层的数值:')
) C4 _$ Y+ X& c" |( E1 y! Zpause
1 ^9 \/ K2 j1 `3 r4 v& U" Y; ^u
1 X! |9 `( M0 g) lw=[];%第1时间层数值的计算
$ R' n( F8 ~! z% b4 D/ ?for j=2:m
5 _' p! z' J( }+ x3 y; Y$ m: p+ _6 d w(j)=[r*u(j)+a*u(j-1)+r*u(j+1)];/ \3 B! s. `: R b2 y9 n
w(1)=0;w(m+1)=0;
3 g# n& |. {" i8 `end %通过第0层数值来求第1层的计算
1 r) R z# ^8 f% k+ y7 Q# Xdisp('5秒之后将会显示第1时间层的数值:')
0 N. `& E ?' \" \) z- @& [+ Q1 [, x, Dpause' O# |4 S7 e- Y5 ]! B; I
w" c% b( e' t- {( y
q=[];%第2时间层的数值) c1 p B. y* t: j
for j=2:m6 v5 |- O; V2 k" r
q(j)=[r*w(j)+a*w(j-1)+r*w(j+1)];+ B9 l3 r: k* _- O- w
q(1)=0;q(m+1)=0;% i" U* j, _4 T9 S/ J3 X
end %通过第1层数值来求第2层的计算9 @, v, A8 U n9 b' J, E
disp('5秒之后将会显示第2时间层的数值:')
* f' i: H# v' M% Q. ~pause
3 U7 s8 W- A8 n& [) _q
. `6 N% T/ u' r3 x& S0 h# F8 o1 xf=[];%第3时间层的数值
T# e/ H+ w; U' X7 m8 x0 T7 ufor j=2:m% g0 w4 Y% D- ?
f(j)=[r*q(j)+a*q(j-1)+r*q(j+1)];3 n6 l2 H* j$ r1 J
f(1)=0;f(m+1)=0;
( n4 y$ D: a/ v, Y @ U/ oend %通过第2层数值来求第3层的计算
; h' O$ t: B/ {% L T/ Q! L: Kdisp('5秒之后将会显示第3时间层的数值:')
: Q$ e; m" f# t, z- wpause1 k# d7 r5 v- a
f
2 J/ Z7 v# @6 Me=[];%第4时间层的数值
# d# O+ z" G0 I& X# D( y) _3 Tfor j=2:m* U/ c) J1 O& ^8 ~" h6 _
e(j)=[r*f(j)+a*f(j-1)+r*f(j+1)];; J: j0 R( c) z- ?
e(1)=0;e(m+1)=0;5 V( x; G S- c- R! j0 l7 w
end %通过第3层数值来求第4层的计算7 g0 {6 N/ R' E( b2 X
disp('5秒之后将会显示第4时间层的数值:')
( A0 k* Q6 Z8 u5 z# s, vpause# x) h5 I! ~2 S+ \( }4 B8 w
e9 Z' T6 J2 r* {
g=[];%第5时间层的数值
* @9 `5 E$ n% `8 Q% ]; Ofor j=2:m
; H5 [/ O( W- z g(j)=[r*e(j)+a*e(j-1)+r*e(j+1)];
! o& B- K3 r, r- r# L$ A- e* B g(1)=0;g(m+1)=0; n) m, E) j* ~6 _- a$ {
end %通过第4层数值来求第5层的计算) ]0 O5 m O2 @/ { B- z2 ?" O; ~
disp('5秒之后将会显示第5时间层的数值:'); f8 a" s* o. ?/ M' f( e
pause( x {% B8 l$ ?# i2 o
g! T8 {$ i8 Y5 z
if r<=0.5) d3 s6 e3 F/ Q' Z* R
disp('以上为上五层数据,因为r小于0.5,在稳定区域,所以方法稳定!')
1 |9 s5 T" m2 n3 velse
' m1 {- X. F. d* B/ r' V7 { disp('以上为上五层数据,因为r大于0.5,不在稳定区域,所以方法不稳定!')) s+ K+ u! L, Q9 R: v! c
end
% {* N! e7 _9 u1 B4 _' L" q" d/ S' m/ ?* ^4 V" f
有用的,大家可以直接用啊
; U, i; f% L8 D时间有限,其中的函数大家可以从程序中获知!!! [em05][em05]6 i3 {9 q( X$ U1 P
[此贴子已经被作者于2004-12-27 21:52:53编辑过] |