t=input('请输入时间步长:');3 c4 H% e9 s( D# P; o6 R h=input('请输入x轴步长:');
r=t/h^2;a=1-2*r; A=[]; u=[];%第0时间层的数值 m=1/h;) G# t V2 ^$ b7 A j=0:h:1;" H/ g4 J- Z K% R) l1 j5 c4 B- B I=ones(size(j)); u=4*j.*(I-j); %第0时间层的值的计算 disp('5秒之后将会显示第0时间层的数值:')0 X" G/ n2 k# t1 c: E0 U pause u4 r" V& q1 W; \* @+ X/ H. o w=[];%第1时间层数值的计算 for j=2:m w(j)=[r*u(j)+a*u(j-1)+r*u(j+1)]; w(1)=0;w(m+1)=0;, O- n% X+ x1 f3 Q+ L end %通过第0层数值来求第1层的计算$ |# C+ h2 s$ L$ t/ R disp('5秒之后将会显示第1时间层的数值:') pause w' C) X- F5 C" @/ k q=[];%第2时间层的数值 for j=2:m q(j)=[r*w(j)+a*w(j-1)+r*w(j+1)]; q(1)=0;q(m+1)=0;) S" h% c- f2 \8 j! V+ U end %通过第1层数值来求第2层的计算6 i9 v! G: B' g3 v8 H disp('5秒之后将会显示第2时间层的数值:')$ Q# C/ W/ q% K' P( S6 s pause q* b' y- x( v) X f=[];%第3时间层的数值6 X9 P2 W7 r: X: ^ for j=2:m f(j)=[r*q(j)+a*q(j-1)+r*q(j+1)];& ]1 s0 F# o! O% L/ ^" h# e f(1)=0;f(m+1)=0; end %通过第2层数值来求第3层的计算4 b6 ~, l( i& w' B! H5 L- @( r, T7 u% { disp('5秒之后将会显示第3时间层的数值:')3 B' }& ~4 \) q, G0 u- { pause0 c: d# k9 } f' w- F f e=[];%第4时间层的数值4 O1 c. I) _5 `6 ]8 V/ T for j=2:m% t, O5 _ b0 X1 s e(j)=[r*f(j)+a*f(j-1)+r*f(j+1)]; e(1)=0;e(m+1)=0;" O" i4 F- e5 [% M* x, `- m m end %通过第3层数值来求第4层的计算/ O4 D7 |' v$ a& | Y0 } disp('5秒之后将会显示第4时间层的数值:')" c# X: i1 V% B% O! B# @* g pause e/ d! @/ N( i- N g=[];%第5时间层的数值 for j=2:m g(j)=[r*e(j)+a*e(j-1)+r*e(j+1)];/ G+ s3 U9 E6 v# ` g(1)=0;g(m+1)=0; end %通过第4层数值来求第5层的计算5 N+ v# S' K6 G8 N, t disp('5秒之后将会显示第5时间层的数值:') pause g8 _- k4 A8 M4 n. [6 D* | if r<=0.5: p; h o. a7 H6 V4 ~- m disp('以上为上五层数据,因为r小于0.5,在稳定区域,所以方法稳定!') else disp('以上为上五层数据,因为r大于0.5,不在稳定区域,所以方法不稳定!')4 D1 J0 Y4 b3 A5 R' f/ O( l; T- } end9 g: [" D4 |9 I9 a0 q' C 有用的,大家可以直接用啊时间有限,其中的函数大家可以从程序中获知!!!
[em05][em05]* Z( T/ z/ F* l# x4 e5 o, V欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) | Powered by Discuz! X2.5 |