В краевое значение задаче (BVP) цель состоит в том, чтобы найти решение обыкновенного дифференциального уравнения (ОДУ), которое также удовлетворяет определенным заданным граничным условиям. Граничные условия задают связь между значениями решения в двух или более местоположениях в интервале интегрирования. В самом простом случае граничные условия применяются в начале и конце (или контурах) интервала.
MATLAB® Решатели BVP bvp4c
и bvp5c
предназначены для обработки систем ОДУ формы
где:
x является независимой переменной
y - зависимая переменная
y ′ представляет производную y по отношению к x, также написанную как dy/ dx
В простейшем случае двухточечного BVP решение ОДУ ищется на интервале [a, b] и должно удовлетворять граничным условиям
Чтобы задать граничные условия для данного BVP, необходимо:
Напишите функцию формы res = bcfun(ya,yb)
, или используйте форму res = bcfun(ya,yb,p)
при наличии неизвестных параметров. Вы поставляете эту функцию решателю как второй входной параметр. Функция возвращается res
, которое является остаточным значением решения в граничной точке. Например, если y(a) = 1 и y(b) = 0, то функция граничного условия
function res = bcfun(ya,yb) res = [ya(1)-1 yb(1)]; end
В начальном предположении для решения первая и последняя точки в mesh задают точки, в которых применяются граничные условия. Для вышеуказанных граничных условий можно задать bvpinit(linspace(a,b,5),yinit)
для обеспечения соблюдения граничных условий в a и b.
Решатели BVP в MATLAB также могут включать другие типы задач, которые имеют:
Неизвестные параметры p
Особенности в решениях
Многоточечные условия (внутренние контуры, разделяющие интервал интегрирования на несколько областей)
В случае многоточечных граничных условий граничные условия применяются более чем в двух точках интервала интегрирования. Для примера может потребоваться, чтобы решение было нулем в начале, середине и конце интервала. Посмотрите bvpinit
для получения дополнительной информации о том, как задать несколько граничных условий.
В отличие от задач с начальным значением, краевая задача может иметь:
Нет решения
Конечное число решений
Бесконечно много решений
Важной частью процесса решения BVP является предоставление предположения для необходимого решения. Качество этой догадки может быть критическим для эффективности решателя и даже для успешных расчетов.
Используйте bvpinit
функция для создания структуры для начального предположения решения. Решатели bvp4c
и bvp5c
примите эту структуру как третий входной параметр.
Создание хорошей начальной догадки для решения - это скорее искусство, чем наука. Однако некоторые общие руководящие принципы включают:
Должны ли начальные предположения удовлетворять граничным условиям, поскольку решение также требуется для их удовлетворения. Если задача содержит неизвестные параметры, то начальное предположение для параметров также должно удовлетворять граничным условиям.
Постарайтесь включить в первоначальное предположение как можно больше информации о физической проблеме или ожидаемом решении. Например, если решение должно колебаться или иметь определенное количество изменений знака, то начальное предположение должно также быть.
Рассмотрим размещение точек mesh (координаты X начального предположения решения). Решатели BVP адаптируют эти точки в процессе решения, поэтому вам не нужно задавать слишком много точек mesh. Лучшая практика состоит в том, чтобы задать несколько точек mesh, расположенных вблизи места быстрого изменения решения.
Если существует известное, более простое решение на меньшем интервале, то используйте его как начальное предположение на большем интервале. Часто можно решить задачу как ряд относительно более простых задач, практики, называемой продолжением. С продолжением связывают ряд простых задач, используя решение одной задачи в качестве исходной догадки, чтобы решить следующую задачу.
Часто BVP включают неизвестные параметры p которые должны быть определены как часть решения задачи. ОДУ и граничные условия
В этом случае граничных условий должно быть достаточно, чтобы определить значения p параметров.
Вы должны предоставить решателю начальное предположение для любых неизвестных параметров. Когда вы звоните bvpinit
для создания структуры solinit
, задайте начальное предположение как вектор в третьем входном параметре parameters
.
solinit = bvpinit(x,v,parameters)
Кроме того, функции odefun
и bcfun
каждый из которых кодирует уравнения ОДУ и граничные условия, должен иметь третий аргумент.
dydx = odefun(x,y,parameters) res = bcfun(ya,yb,parameters)
Решая дифференциальные уравнения, решатель настраивает значение неизвестных параметров, чтобы удовлетворить граничным условиям. Решатель возвращает окончательные значения этих неизвестных параметров в sol.parameters
.
bvp4c
и bvp5c
может решить класс сингулярных BVP вида
Решатели могут также включать неизвестные параметры для задач вида
Сингулярные задачи должны быть поставлены на интервале [0, b] с b > 0. Использоватьbvpset
чтобы передать постоянную матрицу S решателю как значение 'SingularTerm'
опция. Граничные условия в x = 0 должны соответствовать необходимому условию для плавного решения, Sy (0) = 0. Первоначальное предположение о решении также должно удовлетворять этому условию.
Когда вы решаете сингулярный BVP, решатель требует, чтобы ваша функция odefun(x,y)
возвращает только значение f (x, y) члена в уравнении. Термин, связанный с S, обрабатывается решателем отдельно с помощью 'SingularTerm'
опция.
MATLAB включает решатели bvp4c
и bvp5c
для решения BVP. В большинстве случаев можно использовать решатели взаимозаменяемо. Основное различие решателей в том, что bvp4c
реализует формулу четвертого порядка, в то время как bvp5c
реализует формулу пятого порядка.
bvp5c
функция используется в точности как bvp4c
, за исключением значения допусков ошибок между двумя решателями. Если S (x) аппроксимирует y(x) решения ,bvp4c
управляет невязкой | <reservedrangesplaceholder9> (<reservedrangesplaceholder8>) - f (x, S (<reservedrangesplaceholder4>) ) |. Этот подход косвенно управляет истинной |<reservedrangesplaceholder3> ошибок (x) - S (x) |. Использоватьbvp5c
для непосредственного управления истинной ошибкой.
Решатель | Описание |
---|---|
Метод коллокации использует mesh точек, чтобы разделить интервал интегрирования на подынтервалы. Решатель определяет численное решение путем решения глобальной системы алгебраических уравнений, полученных из граничных условий и условий коллокации, наложенных на все подынтервалы. Затем решатель оценивает ошибку числового решения на каждом подынтервале. Если решение не удовлетворяет критериям допуска, решатель адаптирует mesh и повторяет процесс. Необходимо предоставить точки начального mesh, а также начальное приближение решения в точках mesh. | |
bvp5c является конечным разностным кодом, который реализует четырехэтапную формулу Лобатто IIIa. Это формула словосочетания, и полином словосочетания обеспечивает C1- непрерывное решение, которое является равномерно точным пятого порядка в [a, b]. Формула реализована как неявная формула Рунге-Кутты .bvp5c решает алгебраические уравнения непосредственно, в то время как bvp4c использует аналитическую конденсацию. bvp4c обрабатывает неизвестные параметры непосредственно, в то время как bvp5c увеличивает систему тривиальными дифференциальными уравнениями по неизвестным параметрам. |
Методы коллокации, реализованные в bvp4c
и bvp5c
произвести C1- непрерывные решения на протяжении интервала интегрирования [a, b]. Можно вычислить приблизительное решение, S (x), в любой точке [a, b] с помощью функции
helper deval
и структура sol
возвращается решателем. Для примера, чтобы оценить решение sol
в mesh точек xint
, использовать команду
Sxint = deval(sol,xint)
deval
функция векторизирована. Для вектора xint
, а i
1-й столбец Sxint
аппроксимирует решение y(xint(i))
.
Несколько доступных файлов примера служат отличными начальными точками для большинства распространенных задач BVP. Чтобы легко исследовать и запустить примеры, просто используйте Примеры дифференциальных уравнений app. Чтобы запустить это приложение, введите
odeexamples
edit exampleFileName.m
exampleFileName
Эта таблица содержит список доступных файлов примеров BVP, а также решателей и опций, которые они используют.
Пример файла | Используемый решатель | Заданные опции | Описание | Пример ссылки |
---|---|---|---|---|
|
|
| Уравнение Эмдена, сингулярное BVP | |
|
| — | BVP Фалькнера-Скана на бесконечном интервале | |
|
| — | Четвертая собственная функция уравнения Матье | |
|
|
| Пример сравнения ошибок, управляемых | |
|
|
| Решение с ударным слоем около x = 0 | |
|
| — | BVP с двумя решениями | |
|
| — | Трехточечное краевое значение задача |
[1] Ascher, U., R. Mattheij, and R. Russell. Численное решение краевых задач для обыкновенных дифференциальных уравнений. Филадельфия, Пенсильвания: СИАМ, 1995, с. 372.
[2] Шемпине, Л.Ф., и Я. Кирженка. «BVP Решателя на основе остаточного управления и MATLAB PSE». ACM Trans. Math. Softw. Том 27, № 3, 2001, стр. 299-316.
[3] Шемпин, Л.Ф., М.В. Рейхельт и Й. Кирженка. Решение краевых задач для обыкновенных дифференциальных уравнений в MATLAB с bvp4c. MATLAB File Exchange, 2004.
[4] Шемпине, Л. Ф. и Й. Кирженка. «Решатель BVP, который управляет невязкой и ошибкой». Дж. Нумер. Anal. Ind. App. Math. Vol. 3 (1-2), 2008, pp. 27-41.