MATLAB:不连续ODE的数值积分

时间:2016-03-28 16:44:04

标签: matlab integration ode numerical-integration

我正在研究MATLAB中不连续ODE的数值积分,但是我没有得到我想要得到的结果。
我有两个通过弹簧连接的双自由度系统。 (见2-dof system

我在MATLAB中的功能是:

function [ xdot ] = two_springs(t, x, m1, m2, c, g, k)
% x(1) = x1
% x(2) = x1'
% x(3) = x2
% x(4) = x2'
delta = max(x(3,1) - x(1,1), 0); % (Discontinuous)
F = k * delta^(3 / 2);
xdot(1,1) = x(2,1);
xdot(2,1) = (-F + m1 * g) / m1;
xdot(3,1) = x(4,1);
xdot(4,1) = (F - c * x(3,1) + m2 * g) / m2;
end

然后我随着时间的推移绘制力F.

但无论我使用哪个解算器(ode45,ode23,ode113,ode15s,ode23s,......)我都会因为步长减小到允许的最小值而失败。 主题:MATLAB- ode solver: Unable to meet integration tolerances遗憾的是没有帮助我。

有没有人知道我还能尝试什么?

非常感谢你的帮助! 齿绝杀

0 个答案:

没有答案