|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
本帖最后由 huazi071783 于 2011-5-12 22:11 编辑
用荣格-库塔发解结构振动微分方程,求系统相应x,Mx''+cx'+kx=F(t),我设激振力F(t)为环境激励,就是用randn生成的随机数组。不知道能不能以我下面编的程序实现,就是逐个的解,虽然能计算,但计算速度特慢。如果激励为函数形势的如正弦函数就特别快。还有一下红字部分问题。下面是我的程序
clear;clc
global m k c f
m=0.5;
c=0.02;
k=80;
f=5;
x0=[0;0];
tspan=[0:0.01:100];
[t,y]=ode45(@randvibration,tspan,x0);
figure(1)
set(gca,'FontSize',30)
plot(y(2000:10000,1),y(2000:10000,2),'r')
调用函数
function dy=randvibration(t,y)
global m k c f
load('randsignal.mat');
F=randsignal;
n=floor(t./0.01);
%n=t./0.01;这样会出错,提示n到一定大的时候就不是整数了,按理说不会出现小数的。为什么?
% dy=[y(2);-(c./m)*y(2)-(k./m)*y(1)+f*cos(omeg*t); 这个计算特别块
dy(2)=-(c./m)*y(2)-(k./m)*y(1)+f*F(n+1);
dy(1)=y(2);
dy=dy';
结果不知道是否正确,请高手指点
|
|