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);
展开
 我来答
lhmhz
高粉答主

2019-01-31 · 专注matlab等在各领域中的应用。
lhmhz
采纳数:7263 获赞数:17001

向TA提问 私信TA
展开全部

是的,需要用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

自定义微分方程组函数,与题主相同。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式