默认y的单位是弧度
k=1000;
t=0:0.001:1;
Y=[];
err=1
K=[];
Ymax=[];
xishu=1.01;
whileerr
X=[00];
k=xishu*k;
K=[K;k];
Y=[];
fori=1:1001
Y_1=Runge_Kutta41(t(i),X,@folded_wing,0.001,k);
Y=[Y;t(i),Y_1];
X=Y_1;
end
ymax=max(Y(:,2));
Ymax=[Ymax;ymax];
ifymax>=pi/2&&ymax<=92/rad2deg(1)
break
elseifymax>92/rad2deg(1)
xishu=0.98;
else
xishu=1.01;
end
end
plot(Y(:,1),Y(:,2),'-b','linewidth',2);
holdon
gridon
xlabel('t-time','fontsize',14)
ylabel('y(rad)','fontsize',14)
plot([0,1],[pi/2pi/2],'-g','linewidth',2);
tstring=['292200y"=',num2str(k),'*(90-y)-8390.7*sin(y);'];
title(tstring,'fontsize',14);
legend('y"','y=pi/2')
functionY=Runge_Kutta41(t,X,f,h,k)
K1=f(t,X,k);
K2=f(t+h/2,X+h/2*K1,k);
K3=f(t+h/2,X+h/2*K2,k);
K4=f(t+h,X+h*K3,k);
Y=X+h/6*(K1+2*K2+2*K3+K4);
functiondy=folded_wing(t,y,k)
%y1=y;y2=y'
dy=zeros(1,2);
dy(1)=y(2);
dy(2)=1/292200*(k*(90-y(1))-8390.7*sin(y(1)));