2016-12-19 6 views
3

У меня есть набор дифференциальных уравнений вида:Интегральное Дифференциальное уравнение

x1dot = x3; 
x2dot = x2; 
x3dot = x1; 
x4dot = x2 + integral(x1,t,tend) 

У меня есть граничное условие для x1, x2 на tstart и , x4 в tend. Без интегрального термина это прямолинейная реализация с использованием BVP4C.

Мне интересно, возможно ли иметь предыдущее решение для состояний из решателя BVP, которое может быть использовано для интеграла.

Одна из возможностей заключается в использовании ode45 и fsolve в сочетании для проблемы с граничными значениями, где у меня может быть предыдущее решение, но этот подход выполняется не так быстро, как установка BVP.

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

Есть ли лучший/более быстрый или простой способ решить эту проблему?

+2

Добро пожаловать в SO (запрашиваемая сторона, во всяком случае), а также престиж для корректного вопроса. –

ответ

1

Набор

x5 = integral(x1,t,tend) 

затем

x5dot = -x1 with x5(tend) = 0 

С x5dot + x3dot = 0, то отсюда следует, что x5 + x3 = C = const. Поэтому вы можете использовать замену x5 → C - x3.

Постоянная C - это просто C = x3(tend) + x5(tend) = x3(tend) (потому что x5(tend) = 0).

+0

+1: Большинство дураков легко ослеплены ложной сложностью; часто требуется гений, чтобы увидеть присущую простоту. –

+0

... Кажется, я дурак, потому что я изо всех сил пытаюсь понять, почему есть знак минус ('x5dot = -x1') и почему' x5 (tend) = 0' ... можете ли вы подробнее остановиться на что? –

+0

Используя основную теорему и 'X1' как одну из анти-производных от' x1', получаем, что 'x5 (t) = X1 (tend) -X1 (t)'. Дифференцируя это и применяя 'X1 '(t) = x1 (t)', получаем дифференциальное уравнение 'dotx5 = -x1'. Тривиально для 't = tend' область интегрирования является одной точкой и, следовательно, интегральным нулем,' x5 (tend) = 0' – LutzL

Смежные вопросы