Решение связанных дифференциальных уравнений с запаздыванием

Я пытаюсь смоделировать движение частицы в потенциале и включить обратную связь. Проблема, с которой я сталкиваюсь, заключается в добавлении задержки к обратной связи. Итак, работая в Matlab, у меня есть базовый скрипт, который выглядит так:

clear all; close all;
qx = .3;
qy = .4;
qz = .5;
om_D = 1.2e8;
ep = 1e-10;

t = 0:1e-11:1e-5;

[t,rss]=ode45(@ion_test, t, [1e-7 .45 2e-7 -.45 0.5e-7 .45],[], qx, qy, qz, om_D, ep);

где ion_test.m — это файл функции, который выглядит следующим образом:

function dr = ion_test(t,r, qx, qy, qz, om_D, ep)    
    dr = zeros(6,1);
    dr(1) = r(2);
    dr(2) = (2*qx*cos(om_D.*t) + ep.*2*r(3)*r(5));
    dr(3) = r(4);
    dr(4) = (2*qy*cos(om_D.*t) + ep.*2*r(1)*r(5));
    dr(5) = r(6);
    dr(6) = (2*qz*cos(om_D.*t) + ep.*2*r(1)*r(3));
end

Итак, как видите, дифференциальные уравнения для каждой из координат r связаны. Что мне нужно добавить, так это возможность для каждого уравнения вызывать значения других координат в предыдущие моменты времени, а не только их текущие значения. Целью этого является создание механизма отсроченной обратной связи. Любая помощь очень ценится!


person Dan Goldwater    schedule 25.07.2016    source источник
comment
пожалуйста, опубликуйте минимально воспроизводимый пример   -  person Ander Biguri    schedule 25.07.2016
comment
Надеюсь, эта версия понятнее   -  person Dan Goldwater    schedule 26.07.2016
comment
Неа. Мне нужно иметь возможность скопировать его и запустить   -  person Ander Biguri    schedule 26.07.2016
comment
Хорошо, снова настроили. Надеюсь, теперь это что-то простое.   -  person Dan Goldwater    schedule 26.07.2016


Ответы (1)


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

person Dan Goldwater    schedule 30.07.2016