t=input('请输入时间步长:'); h=input('请输入x轴步长:'); r=t/h^2;a=1-2*r; A=[]; u=[];%第0时间层的数值 m=1/h;0 u4 O, H/ e q) ?3 @ j=0:h:1; I=ones(size(j));3 y, |4 s. |: D, b$ } u=4*j.*(I-j);1 G) v w, ?. ~3 F# R %第0时间层的值的计算 disp('5秒之后将会显示第0时间层的数值:')6 V! x, j w! a pause0 g% @& ?. z2 V" U u w=[];%第1时间层数值的计算 for j=2:m9 G- t' C( Y' O' i+ R f: u7 l `5 Y: w w(j)=[r*u(j)+a*u(j-1)+r*u(j+1)]; w(1)=0;w(m+1)=0; end %通过第0层数值来求第1层的计算0 u% O! y* [9 G4 h, h' |% r disp('5秒之后将会显示第1时间层的数值:') pause w q=[];%第2时间层的数值, m! W v& Y) s* S6 v$ f; X for j=2:m$ t7 L3 r8 `. F# T q(j)=[r*w(j)+a*w(j-1)+r*w(j+1)]; q(1)=0;q(m+1)=0; end %通过第1层数值来求第2层的计算- ^! R8 D: k- E" I$ E disp('5秒之后将会显示第2时间层的数值:')% v# k0 @, J: ^: ]3 | pause q f=[];%第3时间层的数值7 d' z5 k3 X9 q4 K8 |- e% h for j=2:m f(j)=[r*q(j)+a*q(j-1)+r*q(j+1)]; f(1)=0;f(m+1)=0;8 G" F* W6 F6 k- p; a6 N end %通过第2层数值来求第3层的计算% S, Z- E: U& ]4 y disp('5秒之后将会显示第3时间层的数值:') pause f e=[];%第4时间层的数值 for j=2:m e(j)=[r*f(j)+a*f(j-1)+r*f(j+1)];/ Q* J$ L5 s z- g; i" r4 f8 E+ j e(1)=0;e(m+1)=0;( m: {7 _, {" W5 u end %通过第3层数值来求第4层的计算 disp('5秒之后将会显示第4时间层的数值:') pause e: s+ Y8 d: [4 U g=[];%第5时间层的数值2 c7 A9 v/ ~8 [' [6 B" n for j=2:m g(j)=[r*e(j)+a*e(j-1)+r*e(j+1)]; q6 @1 ^. g8 a) y5 r( w g(1)=0;g(m+1)=0; end %通过第4层数值来求第5层的计算 disp('5秒之后将会显示第5时间层的数值:'); y) A4 Q+ Z/ B4 z. n% { pause, D( S& |4 U6 I$ |% i4 W g& F, w* l$ z; A8 R2 L if r<=0.5# P7 b0 M# y5 @( X0 H+ y) E disp('以上为上五层数据,因为r小于0.5,在稳定区域,所以方法稳定!') else disp('以上为上五层数据,因为r大于0.5,不在稳定区域,所以方法不稳定!')" ~. |7 N( p. ?7 w$ k; v end 有用的,大家可以直接用啊
时间有限,其中的函数大家可以从程序中获知!!!
[em05][em05]| 欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) | Powered by Discuz! X2.5 |