Могу ли я запустить ode45 назад во времени?

Я использую ode45 для решения дифференциальных уравнений, но tspan всегда должен быть таким, чтобы система работала вперед во времени. Могу ли я заставить ode45 запустить систему в обратном направлении до отрицательного t?

Конкретная проблема, с которой я столкнулся, использует возрастающую экспоненциальную функцию, т.е. a*exp(at) от t=-бесконечности до t=0, и функция равна нулю для всех t>0. Как видите, невозможно перевести эту функцию и использовать интервал от t=0 до t=infinity в моих задачах. Итак, я хотел бы, чтобы ode45 работал в отрицательном t.

Спасибо!

РЕДАКТИРОВАТЬ: После некоторого размышления я понимаю, что мой вопрос сформулирован плохо, и у меня тоже было плохое понимание, поэтому позвольте мне повторить его здесь.

Мои ОДУ имеют форму x'=f(t)x, где f(t)=a*exp(at) от -бесконечности до 0. Система начинается с некоторых начальных условий при t=-бесконечности. ode45, с другой стороны, требует, чтобы tspan был положительным, а также требует начальных условий при t=0. Итак, как я могу изменить оба этих критерия?

Спасибо :)


person user1936752    schedule 03.01.2013    source источник
comment
Почему бы не заменить -t новой переменной времени, скажем, s, и получить новое дифференциальное уравнение для s, решить его для s, а затем подставить t обратно в решение?   -  person Eitan T    schedule 03.01.2013
comment
Нет, вы видите, что это не будет работать для функции, которую я показал. aexp(-as) от 0 до бесконечности не совпадает с aexp(at) от -бесконечности до 0. Я не думаю, что эту функцию можно перевести в положительный интервал t.   -  person user1936752    schedule 03.01.2013
comment
но aexp(-as) от бесконечности до 0 совпадает с aexp(at) от -бесконечности до 0   -  person Rasman    schedule 03.01.2013
comment
Привет, Расман. Итак, что такое tspan? [бесконечность:0]? Я пробовал это с ode45. Я попробовал только [2:0], и это выдало мне ошибку. То, что мы пытаемся, по сути, пытается отмотать назад во времени, не так ли? К сожалению, это не сработало, не могли бы вы предложить альтернативу?   -  person user1936752    schedule 05.01.2013
comment
не уверен, правильно ли я думаю, но если вы замените t вместо [-inf, 0] на s = (-1/t) вместо s = [0, inf], это сработает?   -  person gauteh    schedule 21.01.2013


Ответы (1)


Используйте обратное linspace для генерации вашего t.

Для прямого направления (t) используйте что-то вроде t = 0:0,1:2. Для обратного направления (rt) используйте что-то вроде rt = 2:0-.1:0.

person JesseBikman    schedule 14.02.2013
comment
Обратный случай должен быть rt = 2:-0.1:0. - person horchler; 23.05.2013