t=input('请输入时间步长:'); h=input('请输入x轴步长:');; b4 I5 k* ?/ g! S+ X0 Z r=t/h^2;a=1-2*r; A=[]; u=[];%第0时间层的数值3 `8 }* k! V! k( ~" G# P m=1/h; j=0:h:1;' d* z \* N6 R* [ I=ones(size(j));* z x' g1 H _. x0 `4 C u=4*j.*(I-j); %第0时间层的值的计算% @$ V+ g1 U# `, E. g" p3 R7 S' f disp('5秒之后将会显示第0时间层的数值:') pause u! f8 L, ?' {* n2 D3 w/ x w=[];%第1时间层数值的计算4 M$ G- ]; E0 a2 @! s8 U for j=2:m w(j)=[r*u(j)+a*u(j-1)+r*u(j+1)]; w(1)=0;w(m+1)=0; end %通过第0层数值来求第1层的计算4 y* Z: A1 D- v. c disp('5秒之后将会显示第1时间层的数值:'): H0 Y6 N! p. v# j pause w4 @$ O$ S* c% N) O4 n0 b' H8 J q=[];%第2时间层的数值 for j=2:m% v7 D1 M; |; [0 { q(j)=[r*w(j)+a*w(j-1)+r*w(j+1)]; q(1)=0;q(m+1)=0; end %通过第1层数值来求第2层的计算. F8 B; x6 x M: s7 j/ z disp('5秒之后将会显示第2时间层的数值:') pause7 X, f- A6 Q4 m. } q3 Z( r$ ?& H. T6 i6 V' i7 ]1 ]) p' M& L f=[];%第3时间层的数值# k' J9 K/ `$ e+ n for j=2:m! X0 C2 n4 e4 m* u, q) a f(j)=[r*q(j)+a*q(j-1)+r*q(j+1)];$ Z7 N& L) {2 L8 N f(1)=0;f(m+1)=0; end %通过第2层数值来求第3层的计算 disp('5秒之后将会显示第3时间层的数值:')! { b: w; K6 Z( ?1 p4 [# Z" a, ^ m pause f e=[];%第4时间层的数值# g) f" @9 m$ Z# c for j=2:m+ S, D7 B+ u0 U/ |) |# M e(j)=[r*f(j)+a*f(j-1)+r*f(j+1)];7 h7 Y* a* S) _5 I5 R e(1)=0;e(m+1)=0; end %通过第3层数值来求第4层的计算 disp('5秒之后将会显示第4时间层的数值:')0 D+ @. @8 V6 [$ p pause% Q6 P. ]4 n9 [5 @7 q e+ k# X5 x+ q) p- i g=[];%第5时间层的数值 for j=2:m g(j)=[r*e(j)+a*e(j-1)+r*e(j+1)]; g(1)=0;g(m+1)=0; end %通过第4层数值来求第5层的计算. r% O4 A0 J& ]. m- B5 v: g disp('5秒之后将会显示第5时间层的数值:')) x0 K" b# ^/ E9 X. P pause g if r<=0.5 disp('以上为上五层数据,因为r小于0.5,在稳定区域,所以方法稳定!')+ ~) Q, ]2 N6 `8 H3 Z- h else # s% w0 m1 L1 ]8 ~% S8 T& p: ~ disp('以上为上五层数据,因为r大于0.5,不在稳定区域,所以方法不稳定!'), n$ J( ~. ^, l! x. E3 X$ `- l end 有用的,大家可以直接用啊
时间有限,其中的函数大家可以从程序中获知!!!
[em05][em05]| 欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) | Powered by Discuz! X2.5 |