matlab用ode45解微分方程,结构动力响应。
用ode45解三自由度结构振动问题。外力荷载f(t)我会解。地震荷载怎么解?地震波加速度e×g=f作为荷载,时间间隔0.02s。用for吗?质量和阻尼都为1,地震波假设1...
用ode45解三自由度结构振动问题。外力荷载f(t)我会解。地震荷载怎么解?地震波加速度e×g=f作为荷载,时间间隔0.02s。用for吗?质量和阻尼都为1,地震波假设11个时刻,随机用11个数当成地震波,时间间隔0.02s,时程也就是0.2s。方程里f即为地震波。最后画出位移、速度、加速度曲线。function dy= myode(t,y)
dy=zeros(6,1);
dy(1)=y(2);
dy(2)=-y(2)-2*y(1)+y(3)+f;
dy(3)=y(4);
dy(4)=-y(4)+y(1)-2*y(3)+y(5)+f;
dy(5)=y(6);
dy(6)=-y(6)+y(3)-y(5)+f;
end
~~~~~~~~~~
y0=ones(1,6);
tspan=[0 50];
[t,y]=ode45(@myode,tspan,y0);
figure(1)
plot(t,y(:,1),t,y(:,3),t,y(:,5));
legend('x1','x2','x3');
xlabel('时间(s)','FontSize',10);
ylabel('振动位移曲线 ','FontSize',10); 展开
dy=zeros(6,1);
dy(1)=y(2);
dy(2)=-y(2)-2*y(1)+y(3)+f;
dy(3)=y(4);
dy(4)=-y(4)+y(1)-2*y(3)+y(5)+f;
dy(5)=y(6);
dy(6)=-y(6)+y(3)-y(5)+f;
end
~~~~~~~~~~
y0=ones(1,6);
tspan=[0 50];
[t,y]=ode45(@myode,tspan,y0);
figure(1)
plot(t,y(:,1),t,y(:,3),t,y(:,5));
legend('x1','x2','x3');
xlabel('时间(s)','FontSize',10);
ylabel('振动位移曲线 ','FontSize',10); 展开
1个回答
展开全部
是的,需要用for循环语句来某一时刻的位移、速度、加速度。求解方法如下:
主程序
t=0:0.02:0.2;
for i=1:length(t)
g=0.00098;
f=g*t(i);
y0=zeros(1,6);
tspan=[0 0.2];
[t,y]=ode45(@(t,y)myode(t,y,?),tspan,y0,options);
figure(i)
plot(t,y(:,1),t,y(:,3),t,y(:,5));
legend('x1','x2','x3');
xlabel('时间(s)','FontSize',10);
ylabel('地震波位移曲线 ','FontSize',10);
end
自定义微分方程组函数,与题主相同。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询