ОДУ со стохастическим входом, зависящим от времени

Я пытаюсь повторить пример, который нашел в статье.

Я должен решить эту ОДУ:

25 a + 15 v + 330000 x = p(t)

где p(t) — последовательность белого шума, ограниченная полосой частот в диапазоне 10–25 Гц; a — ускорение, v — скорость и x — перемещение.

Затем он говорит, что система моделируется с использованием процедуры Рунге-Кутты. Частота дискретизации установлена ​​на 1000 Гц, и к данным добавляется гауссов белый шум таким образом, что шум составляет 5% от среднеквадратичного значения сигнала (как мне использовать эту последнюю информацию?).

Основная проблема связана с ограниченным по полосе белым шумом. Я следовал инструкциям, которые нашел здесь https://dsp.stackexchange.com/questions/9654/how-to-generate-band-limited-gaussian-white-noise и написал следующий код:

% White noise excitation
% design FIR filter to filter noise in the range [10-25] Hz
Fs = 1000; % sampling frequency

% Time infos (for white noise)
T = 1/Fs;
tspan = 0:T:4; % I saw from the plots in the paper that the simulation last 4 seconds
tstart = tspan(1);
tend = tspan (end);

b = fir1(64, [10/(Fs/2) 25/(Fs/2)]);
% generate Gaussian (normally-distributed) white noise
noise = randn(length(tspan), 1);
% apply filter to yield bandlimited noise
p = filter(b,1,noise);

Теперь мне нужно определить функцию для оды, но я не знаю, как дать ей p (белый шум)... Я пробовал так:

function [y] = p(t)
    b = fir1(64, [10/(Fs/2) 25/(Fs/2)]);
    % generate Gaussian (normally-distributed) white noise
    noise = randn(length(t), 1);
    % apply filter to yield bandlimited noise
    y = filter(b,1,noise);
end

odefun = @(t,u,m,k1,c,p)[u(2); 1/m*(-k1*u(1)-c*u(2)+p(t))];

[t,q,te,qe,ie] = ode45(@(t,u)odefun2(t,u,m,k2,c,@p),tspan,q0,options);

Дело в том, что входное возбуждение не работает должным образом: собственная частота уравнения составляет около 14 Гц, поэтому я ожидаю увидеть резонанс в отклике, поскольку белый шум находится в диапазоне 10-25 Гц.

Я также просмотрел этот Q / A, но я все еще не могу заставить его работать:

Как решить систему обыкновенного дифференциального уравнения с параметрами, зависящими от времени

Решение ОДУ при функция задается дискретными значениями -matlab-


person Rhei    schedule 13.12.2014    source источник
comment
Математически не существует ОДУ со стохастическим входом, зависящим от времени. У вас есть стохастическое дифференциальное уравнение (СДУ). Если вы заинтересованы в точном измерении статистических свойств, вам не следует использовать методы ОДУ для решения СДУ.   -  person horchler    schedule 13.12.2014
comment
Но поскольку в статье использовалась процедура Рунге-Кутты, значит ли это, что она существует и для СДУ, а не только для ОДУ?   -  person Rhei    schedule 13.12.2014
comment
Какую бумагу вы имеете в виду? К сожалению, в опубликованных (и рецензируемых) источниках слишком часто используются неподходящие методы. В зависимости от системы, шума и того, какая статистика вас интересует, иногда вам может сойти с рук то, что результаты будут аналогичны результатам при использовании надлежащего решателя SDE. Процедура Рунге-Кутты также неясна, так как существует такая вещь, как стохастический Рунге-Кутта для СДУ. Несмотря на название, есть большие различия.   -  person horchler    schedule 13.12.2014
comment
Я думаю, вам нужно больше узнать о вашей проблеме. Учебники, а не случайные публикации, найденные в Интернете, могут быть лучшим выбором с точки зрения методов оценки для использования в вашем приложении. Если вам нужно узнать о численном решении СДУ, воспользуйтесь методом Эйлера-Маруямы — хорошая (и надежная) отправная точка. К сожалению, многие из этих тем не относятся к теме StackOverflow.   -  person horchler    schedule 13.12.2014
comment
Наконец, вас может заинтересовать функция awgn. Или см. этот вопрос.   -  person horchler    schedule 13.12.2014
comment
Спасибо за предложения, посмотрю. Документ, о котором я говорил, таков: orbi.ulg.ac.be/handle/ 2268/18347 . Я пытаюсь сделать то же численное моделирование, о котором сообщается в статье, чтобы проверить мою программу для идентификации нелинейных структур. Бумага не бесплатная, я получил ее в своем университете, поэтому я не могу ею поделиться.   -  person Rhei    schedule 13.12.2014
comment
Для такой жесткой системы, если вы собираетесь использовать решатель ОДУ, чтобы воспроизвести то, что они сделали в статье, вам следует либо улучшить допуски для ode45, попробовать жесткий решатель, такой как ode15s, либо реализовать фиксированный шаг- размер схемы Рунге-Кутта самостоятельно и использовать достаточно маленькие шаги (это никогда не хорошо для репликации, когда они даже не удосуживаются сообщить конкретный используемый решатель и размер шага, если это был фиксированный метод).   -  person horchler    schedule 13.12.2014
comment
Могу ли я не получить размер шага, зная частоту дискретизации?   -  person Rhei    schedule 15.12.2014