#matlab #solver #ode45
#matlab #решатель #ode45
Вопрос:
Моя система уравнений может быть записана как-
y1′ = F_1(x, y1, y2)
y2′ = F_2(x, y1, y2)
где F1 и F2 — некоторые функции от x, y1, y2. y1 и y2 — функции от x и y1’= dy1_dx и y2’= dy2_dx.
Начальное условие равно x = 0, y1 = y2 = 0. Однако мне нужно решение при y1 = 1, т.Е. Как только будет достигнуто y1 = 1, итерация должна быть остановлена. Я хочу решить это с помощью правильного решателя, такого как ODE45 или ODE15s в MATLAB. Однако я не уверен, как установить x_span, т.Е. Начальное и конечное значения x. Пожалуйста, направьте меня.
Обратите внимание, что установка x на большое значение, скажем, 1000, не поможет, потому что я не знаю, где y1 = 1.
Комментарии:
1. этот вопрос кажется немного странным, поскольку система уравнений не определена. У вас есть два дифференциальных уравнения, но три переменные. Или y1 и y2 являются функциями x, а предоставленная вами система уравнений является результатом изменения переменных для уменьшения порядка дифференциального уравнения?
2. Извините, забыл упомянуть, что y1 и y2 действительно являются функциями x и y1’= dy1_dx и y2’= dy2_dx . Я обновляю вопрос.
3. не могли бы вы предоставить дифференциальное уравнение, которое вы пытаетесь решить? это может быть полезно для разработки ответа на вопрос.
4. @Thales Функции F1 и F2 указывают функции. Я не могу написать уравнения, потому что они почти по 35 строк каждое, но вы можете добавить их за функциями F1 и F2.
Ответ №1:
Используйте функцию события (обычно равную y1-1), которую вы предоставляете решателю ODE: https://fr.mathworks.com/help/matlab/math/ode-event-location.html
Как только решатель обнаруживает изменение знака вашей функции события, он останавливается.