matlab单自由度系统,【Matlab代码】外力单自由度阻尼系统的数值解

d6685b450f6d02c62ed9a34114b1a128.png

function dx=odefun2(t,x)

dx=zeros(2,1);%存储x1,x2的导数

dx(1)=x(2);%第一个方程

dx(2)=-20*x(2)-100*x(1);%第二个方程

[t,x]=ode45('odefun2',[0,4],[1;0])

6a8b80d103cc6e340da8fec48adf3360.png

462ffbfa1b842977e4cfd120154a8f23.png

3f2c1fa286f7a7e643a859120af03849.png

注:数值解仅仅是解的一个数据点列;数值解只能作定量分析,它能处理几乎所有的方程。

028e6c5d2d4fd63a93ba9c309425eecf.png

xt=dsolve('D2x+20*Dx+100*x=0','x(0)=1','Dx(0)=0')

28228a81234cd45e25a473b1dbd29dc1.png

给出数值解与解析解的对比图:

f=inline(xt)

plot(t,x(:,1),'r.',t,f(t),'b');

legend('数值解','解析解')

77bb3253757603a26087b3bc77b97d24.png

变量名=inline(’函数表达式’,‘变量名1’,‘变量名2’,…,‘变量名n’)

6f283fa6afa5796b99289c7b73b75a6b.png

function dx=odefun3(t,x)

global c;

dx=zeros(2,1);%存储x1,x2的导数

dx(1)=x(2);%第一个方程

dx(2)=-20*c*x(2)-100*x(1)%第二个方程

注:通过全局变量c来接收外部阻尼系数的值。

function ode3(vc)

global c;%全局变量

hold on%hold住图形窗口

tspan=linspace(0,4,100);

for i=1:length(vc);

c=vc(i);

[t,x]=ode45('odefun3',tspan,[1,0]);

text(t(10),x(10,1),['\leftarrow c',num2str(c)])

plot(t,x(:,1))

end

hold off

vc=[0.2,0.4,0.6,0.8,1]

ode3(vc);

2d2a9db57bb14ae740f8f6e6a3c02ee4.png

vc=[0.2,0.3,0.4,0.6,0.8,1,1.4,1.7];

ode3(vc);

35a82bfb42178da6f2a62ff7f969789c.png

微信“图像处理与模式识别研究所”关注我呦

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
自由度振动系统是指只有一个自由度的振动系统,通常由质点与弹簧、阻尼器或其他约束力构成。在MATLAB中可以通过编程模拟和分析自由度振动系统。 首先,我们需要定义系统的动力学方程。对于简谐振动系统,动力学方程可以简化为一个二阶常微分方程。例如,考虑一个质量为m,劲度系数为k,阻尼系数为c的自由度振动系统,其动力学方程可以表示为: m*x''(t) + c*x'(t) + k*x(t) = 0 其中,x(t)表示质点的位移,x'(t)表示质点的速度,x''(t)表示质点的加速度。 接下来,我们可以使用MATLAB的ode45函数来数值算这个常微分方程。ode45函数可以使用龙格-库塔法来求常微分方程的初值问题。 首先,定义一个函数,包含系统的动力学方程。例如: function dxdt = single_dof_vibration(t, x) m = 1; % 质量 k = 1; % 劲度系数 c = 0.1; % 阻尼系数 dxdt = zeros(2, 1); dxdt(1) = x(2); dxdt(2) = -c/m * x(2) - k/m * x(1); end 然后,使用ode45函数求这个动力学方程。例如: [t, x] = ode45(@single_dof_vibration, [0, 10], [0, 1]); 其中,@single_dof_vibration表示输入的是single_dof_vibration函数,[0, 10]表示时间范围为0到10秒,[0, 1]表示初始位移为0,初始速度为1。 最后,可以使用plot函数绘制位移和速度随时间的变化曲线。例如: figure; plot(t, x(:, 1), 'r-', 'LineWidth', 2); hold on; plot(t, x(:, 2), 'b--', 'LineWidth', 2); xlabel('Time (s)'); ylabel('Displacement and Velocity'); legend('Displacement', 'Velocity'); title('Single DOF Vibration System'); 运行以上代码,即可得到自由度振动系统中位移和速度随时间的变化曲线图。这个图形可以帮助我们分析和理振动系统的动态特性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值