В краевой задаче (BVP) цель состоит в том, чтобы найти решение обыкновенного дифференциального уравнения (ODE), которое также удовлетворяет определенные заданные граничные условия. Граничные условия задают отношение между значениями решения в двух или больше местах в интервале интегрирования. В самом простом случае граничные условия применяются вначале и конец (или контуры) интервала.
Решатели MATLAB® BVP bvp4c
и bvp5c
разработаны, чтобы обработать системы ОДУ формы
где:
x является независимой переменной
y является зависимой переменной
y ′ представляет производную y относительно x, также записанного как dy/dx
В самом простом случае 2D точки 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, помещенных рядом, где решение изменяется быстро.
Если существует известное, простое решение на меньшем интервале, то используйте его в качестве исходного предположения на большем интервале. Часто можно решить проблему как серию относительно более простых проблем, практика вызвала продолжение. С продолжением серия простых проблем соединяется при помощи решения одной проблемы как исходное предположение, чтобы решить следующую проблему.
Часто BVPs включают неизвестные параметры 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
могут решить класс сингулярного BVPs формы
Решатели могут также разместить неизвестные параметры для проблем формы
Сингулярные проблемы должны быть созданы через определенный интервал [0, b] с b> 0. Используйте bvpset
, чтобы передать постоянный матричный S решателю как значение опции 'SingularTerm'
. Граничные условия в x = 0 должны быть сопоставимы с необходимым условием для сглаженного решения, Sy (0) = 0. Исходное предположение решения также должно удовлетворить это условие.
Когда вы решаете сингулярный BVP, решатель требует, чтобы ваш функциональный odefun(x,y)
возвратил только значение f (x, y) термин в уравнении. Термин, включающий S, обработан решателем отдельно с помощью опции 'SingularTerm'
.
MATLAB включает решатели bvp4c
и bvp5c
, чтобы решить BVPs. В большинстве случаев можно использовать решатели взаимозаменяемо. Основное различие между решателями - то, что bvp4c
реализует формулу четвертого порядка, в то время как bvp5c
реализует формулу пятого порядка.
Функция bvp5c
используется точно как bvp4c
, за исключением значения ошибочных допусков между этими двумя решателями. Если S (x) аппроксимирует решение y(x), bvp4c
управляет невязкой |S ′ (x) – f (x, S (x)) |. Этот подход косвенно управляет истинной погрешностью |y (x) – S (x) |. Используйте bvp5c
, чтобы управлять истинной погрешностью непосредственно.
Решатель | Описание |
---|---|
Метод словосочетания использует сетку точек, чтобы разделить интервал интегрирования на подынтервалы. Решатель определяет числовое решение путем решения глобальной системы алгебраических уравнений, следующих из граничных условий и условий словосочетания, наложенных на все подынтервалы. Решатель затем оценивает ошибку числового решения на каждом подынтервале. Если решение не удовлетворяет критерии допуска, то решатель адаптирует mesh и повторяет процесс. Необходимо обеспечить точки начальной mesh, а также начального приближения решения в точках mesh. | |
bvp5c является кодом конечной разности, который реализует четырехэтапную формулу Lobatto IIIa. Это - формула словосочетания, и полином словосочетания предоставляет решение C1-continuous, которое является пятым порядком, точным однородно в [a, b]. Формула реализована как неявная формула Рунге-Кутта. bvp5c решает алгебраические уравнения непосредственно, тогда как bvp4c использует аналитическую конденсацию. bvp4c обрабатывает неизвестные параметры непосредственно, в то время как bvp5c увеличивает систему с тривиальными дифференциальными уравнениями для неизвестных параметров. |
Методы коллокации, реализованные в bvp4c
и bvp5c
, производят решения C1-continuous на интервале интегрирования [a, b]. Можно оценить приближенное решение, S (x), в любой точке в [a, b] использование функции помощника deval
и структура sol
, возвращенный решателем. Например, чтобы оценить решение sol
в сетке точек xint
, используйте команду
Sxint = deval(sol,xint)
Функция deval
векторизована. Для векторного xint
i
th столбец Sxint
аппроксимирует решение y(xint(i))
.
Несколько доступных файлов в качестве примера служат превосходными отправными точками для наиболее распространенных проблем BVP. Чтобы легко исследовать и запустить примеры, просто используйте приложение Дифференциальных уравнений В качестве примера. Чтобы запустить это приложение, ввести
odeexamples
edit exampleFileName.m
exampleFileName
Эта таблица содержит список доступных файлов в качестве примера BVP, а также решатели и опции, которые они используют.
Файл в качестве примера | Используемый решатель | Заданные опции | Описание | Ссылка в качестве примера |
---|---|---|---|---|
|
|
| Уравнение Эмдена, сингулярный BVP | |
|
| — | Falkner-Skan BVP на бесконечном интервале | |
|
| — | Четвертая собственная функция уравнения Мэтью | |
|
|
| Пример, сравнивающий ошибки, которыми управляет | Сравните bvp4c и bvp5c Решатели ( Сравните bvp4c и bvp5c Решатели ( |
|
|
| Решение с ударным слоем рядом x = 0 | |
|
| — | BVP точно с двумя решениями | |
|
| — | Краевая задача с тремя точками |
[1] Ascher, U., Р. Мэттейдж и Р. Рассел. “Числовое Решение Краевых задач для Обыкновенных дифференциальных уравнений”. Филадельфия, PA: SIAM, 1995, p. 372.
[2] Шемпин, L.F., и Дж. Кирженка. "Решатель BVP на основе остаточного управления и PSE MATLAB". Математика Сделки ACM. Softw. Издание 27, Номер 3, 2001, стр 299–316.
[3] Шемпин, L.F., М.В. Рейчелт и Дж. Кирженка. "Решая Краевые задачи для Обыкновенных дифференциальных уравнений в MATLAB с bvp4c". MATLAB File Exchange, 2004.
[4] Шемпин, L.F., и Дж. Кирженка. "Решатель BVP, который Невязка Средств управления и Ошибка". Дж. Нумер. Анальный. Ind . Прикладная Математика. Издание 3 (1-2), 2008, стр 27–41.