运行没有报错,但是由于它第一行第933列开始inf,导致最后nan,怎么能处理这个inf问题呢
s1(j)=snx1; %(27)式
s2(j)=(snx1-snx2)/T; %(27)式
z1(j)=s1(j); %(34)式
omega1(j)=-g1*z1(j); %(38)式
z2(j)=s2(j)-omega1(j); %(35)式
domega1(j)=(omega1(j)-omega1(j-1))/T;
omega12=omega11;
omega11=omega1(j);
snx2=snx1;%
snx1=vx(nx,j);%nx=r v_x(r,t)
qx(nx,j)=2*qx(nx,j-1)-qx(nx,j-2)+T^2*(-ddvx(1,j-1)+(u1(j)+d_x...
-TT(nx,1)*qxa(j-1)-c*(dvx(1,j)+dqx(nx,j))-2*w(nx,1)*(qxa(j-1)^3+qxa(j-1)*qya(j-1)^2)...
-EA*(qxa(j-1)*qza(j-1)+0.5*qxa(j-1)^3+0.5*qxa(j-1)*qya(j-1)^2))/M);
vxa(j-1)=qxa(j-1);
vx(nx,j)=vx(1,j)+qx(nx,j);%v和q之间的关系式
(1)问题分析
从你的代码来看,你这个程序应该是以T为采样间隔进行有限差分递推,从结果来看你的差分格式发散了,这通常是因为T比较大导致差分误差较大并最终导致差分格式不稳定。也就是说,之所以第933个分量的绝对值会变成inf,是因为差分格式不稳定导致分量的绝对值指数级增大。
(2)解决方案
比较简单的是解决方案是减小采样间隔T,比如将T取为原来的一半试试,如果还是发散就继续减少采样间隔T。