В краевой задаче (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
это кодирует уравнения ODE, и граничные условия должны каждый иметь третий аргумент.
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.