t=input('请输入时间步长:'); h=input('请输入x轴步长:'); r=t/h^2;a=1-2*r; A=[]; d- {2 s; f! w; U* P u=[];%第0时间层的数值0 G$ n4 o8 q0 A& D m=1/h;! v3 C- A9 {, h0 d2 D2 y1 ~ j=0:h:1; I=ones(size(j)); u=4*j.*(I-j); %第0时间层的值的计算% i c- B. a" V0 {9 V disp('5秒之后将会显示第0时间层的数值:')/ ]% O+ ]& ?! @/ c0 I3 H5 y, ^ pause u w=[];%第1时间层数值的计算. y% t3 ^; D/ v( ^/ j for j=2:m3 G/ J9 J n1 E- A8 U5 A0 M" O' D w(j)=[r*u(j)+a*u(j-1)+r*u(j+1)]; w(1)=0;w(m+1)=0; end %通过第0层数值来求第1层的计算 disp('5秒之后将会显示第1时间层的数值:') pause( H3 O9 F' K7 K: [6 T w' w; @0 p$ C. T: z" A& k/ C0 P 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;/ Y' c2 W7 X* e) e, y6 n0 q end %通过第1层数值来求第2层的计算, v1 x. t3 i& l# s disp('5秒之后将会显示第2时间层的数值:'). y/ i/ M# j( ^) t% e pause9 }! r( P: |; { q f=[];%第3时间层的数值8 l/ {0 f. P* `+ c for j=2:m, n- H+ D+ U- u2 M W# i5 m8 K f(j)=[r*q(j)+a*q(j-1)+r*q(j+1)]; f(1)=0;f(m+1)=0; end %通过第2层数值来求第3层的计算 disp('5秒之后将会显示第3时间层的数值:') pause f8 l; o% B8 |$ `" z$ J2 X e=[];%第4时间层的数值: S7 h* h7 ?1 S5 u; G& R for j=2:m/ Y6 g: P/ ~+ q n* k, g, W Q& |! L e(j)=[r*f(j)+a*f(j-1)+r*f(j+1)]; e(1)=0;e(m+1)=0;2 U& N8 z. v* r* Q# O4 e! o2 I end %通过第3层数值来求第4层的计算 disp('5秒之后将会显示第4时间层的数值:')' ^* t) ^5 n+ U0 S! h pause% S$ z/ `& q; C e g=[];%第5时间层的数值3 A/ l2 ~, ^( h. ]3 l6 B4 f2 z$ `8 Y for j=2:m g(j)=[r*e(j)+a*e(j-1)+r*e(j+1)];& c' y& g: R( z4 V8 o( J. R g(1)=0;g(m+1)=0; end %通过第4层数值来求第5层的计算" H) g" Y5 ~3 B, W disp('5秒之后将会显示第5时间层的数值:'); r4 j" y. b& `) f+ {1 Y* F pause g) K. E' H6 M5 Q B0 H8 E& h if r<=0.5. l* L, i) g' X @5 }, t, h0 J disp('以上为上五层数据,因为r小于0.5,在稳定区域,所以方法稳定!')7 W% ~/ v' [ e0 Z. P* }& ^ else disp('以上为上五层数据,因为r大于0.5,不在稳定区域,所以方法不稳定!') end& Y* d% q, r* J7 q! j- R7 z 有用的,大家可以直接用啊
( V# r) M" W3 R" l2 G+ [- }2 i; s时间有限,其中的函数大家可以从程序中获知!!!
[em05][em05]| 欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) | Powered by Discuz! X2.5 |