matlab求解微分方程的数值解的时候,数值结果为什么是一串数字表达式?

%(1)第一次接触、脱离循环
%接触工况
x=dsolve('D2x+2*10.3*Dx+140^2*x=15*sin(126.5*t)','x(0)=0','Dx(0)=0.1','t');
t=10:0.001:10.5;
y=subs(diff(x,2)); %加速度
y1=subs(diff(x,1));%速度
y2=subs(x); %位移
Fs=3.0e5*sin(126.5*t)+2e5-10500*y; %轮-土接触力
k=0; %计算循环的次数

%获取在未脱离时候的加速度信号
N=length(t);
for i=1:N
if Fs(i)>0
yn(i)=y(i); %yn系列为新的响应信号
yn1(i)=y1(i); %新速度
yn2(i)=y2(i); %新位移
k=i;
else
break;
end
end

%脱离工况
x1=dsolve('D2x=15*sin(126.5*t)+9.8','x(0)=yn2(k)','Dx(0)=yn1(k)','t');
t=10:0.001:10.5;
yt=subs(diff(x,2)); %脱离时的加速度
yt1=subs(diff(x,1));%脱离时的速度
yt2=subs(x); %脱离时的位移
Fst=3.0e5*sin(126.5*t)+2e5-10500*yt;

%获取在脱离时候的加速度信号
for i=k+1:N
if Fst(i)<0
yn(i)=yt(i); %yn系列为新的响应信号
yn1(i)=yt1(i); %新速度
yn2(i)=yt2(i); %新位移
k=i;
else
break;
end
end
k; %新的信号的个数

%(2)再次循环接触与脱离工况
%接触工况
x=dsolve('D2x+2*10.3*Dx+140^2*x=15*sin(126.5*t)','x(0)=yn2(k)','Dx(0)=yn1(k)','t');
t=10:0.001:10.5;
y=subs(diff(x,2)); %加速度
y1=subs(diff(x,1));%速度
y2=subs(x); %位移
Fs=3.0e5*sin(126.5*t)+2e5-10500*y; %轮-土接触力

如果仅仅运行 “ %(2)再次循环接触与脱离工况” 这一部分前面,求解到的y,y1等数组都是对的,且如输入y(5)或者Fs(5) 输出的都是直接一个数字,比如-0.025. 但是如果将上述所有的程序运行,求解到的y,y1等数组 ,输入比如y(5)或者F(5)等,输出的却是一串数字表达式,而不是一个直接的数字,为什么呢?非常困惑。。。。求解答~

无其他回答
相似回答