Matlab: вывод ode45 неверен для демпфера принудительной пружины

Вот мой код Matlab для решения ODE второго порядка для системы масса-пружина-приборная панель:

function Spring

clear all;
close all;
options=odeset('RelTol',1e-6); 
p0 = [1 0]; %initial position and velocity
[t,p] = ode45(@SpringFunction, [0 20], p0, options);

plot(t,p(:,1)) %plot the first column (x) vs. time

return

function pdot = SpringFunction(t,p)

c = 5; w = 2;
g = sin(t); % forcing function
pdot = zeros(size(p));
pdot(1) = p(2);
pdot(2) = g-c*p(2)-(w^2)*p(1);

return

Я считаю, что вывод, который я получаю, неверен, потому что в этом случае я думаю, что график зависимости смещения от времени должен выглядеть как синусоида с уменьшающейся амплитудой. Вместо этого это выглядит так: функция уменьшения, которая ослабляется до синусоиды с постоянной амплитудой

Мне это кажется неправильным, но, пожалуйста, поправьте меня, если я ошибаюсь. Я не вижу, что не так в коде.


person whatsherface    schedule 13.03.2014    source источник


Ответы (1)


Вы синусоидально форсируете затухающую систему, поэтому вы должны ожидать, что устойчивое состояние будет синусоидой. Вот хороший учебник по вибрациям (PDF) - см. Стр. 448 –450 при демпфированном синусоидальном воздействии. Попробуйте убрать форсирование или сильно уменьшить его амплитуду. Кроме того, похоже, что у вас много демпфирования. Ваш коэффициент демпфирования, ζ (дзета), по-видимому, равен c/(2*w) = 5/4. Это означает, что ваша система без принуждения имеет чрезмерное демпфирование - без принуждения вы не увидите колебаний.

Также будьте осторожны при использовании ode45 с колебательными системами. Если ваша система окажется слишком жесткой, вам может потребоваться отрегулировать допуски или использовать жесткий решатель, например _ 3_, чтобы получить точные результаты. Вы всегда можете попробовать использовать более жесткие допуски, чтобы убедиться, что они дают качественно похожие результаты (одинаковый период, амплитуда, скорость роста / распада и т. Д.).

person horchler    schedule 13.03.2014