Краевые задачи

В краевой задаче (BVP) цель состоит в том, чтобы найти решение обыкновенного дифференциального уравнения (ODE), которое также удовлетворяет определенные заданные граничные условия. Граничные условия задают отношение между значениями решения в двух или больше местах в интервале интегрирования. В самом простом случае граничные условия применяются вначале и конец (или контуры) интервала.

Решатели MATLAB® BVP bvp4c и bvp5c разработаны, чтобы обработать системы ОДУ формы

y'=f(x,y)

где:

  • x является независимой переменной

  • y является зависимой переменной

  • y ′ представляет производную y относительно x, также записанного как dy/dx

Граничные условия

В самом простом случае 2D точки BVP решение ОДУ найдено через определенный интервал [a, b], и должно удовлетворить граничные условия

g(y(a),y(b))=0 .

Чтобы задать граничные условия для данного 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, которые должны быть определены как часть решения проблемы. ОДУ и граничные условия становятся

y'=f(x,y,p)g(y(a),y(b),p)=0

В этом случае граничные условия должны быть достаточными, чтобы определить значения параметров p.

Необходимо предоставить решателю исходное предположение для любых неизвестных параметров. Когда вы вызовете bvpinit, чтобы создать структуру solinit, задайте исходное предположение как вектор в третьем входном параметре parameters.

solinit = bvpinit(x,v,parameters)

Кроме того, функции odefun и bcfun, которые кодируют уравнения ОДУ и граничные условия, должны каждый иметь третий аргумент.

dydx = odefun(x,y,parameters)
res = bcfun(ya,yb,parameters)

При решении дифференциальных уравнений решатель настраивает значение неизвестных параметров, чтобы удовлетворить граничные условия. Решатель возвращает окончательные значения этих неизвестных параметров в sol.parameters.

Сингулярный BVPs

bvp4c и bvp5c могут решить класс сингулярного BVPs формы

y=1xSy+f(x,y),0=g(y(0),y(b)).

Решатели могут также разместить неизвестные параметры для проблем формы

y=1xSy+f(x,y,p),0=g(y(0),y(b),p).

Сингулярные проблемы должны быть созданы через определенный интервал [0, b] с b> 0. Используйте bvpset, чтобы передать постоянный матричный S решателю как значение опции 'SingularTerm'. Граничные условия в x = 0 должны быть сопоставимы с необходимым условием для сглаженного решения, Sy (0) = 0. Исходное предположение решения также должно удовлетворить это условие.

Когда вы решаете сингулярный BVP, решатель требует, чтобы ваш функциональный odefun(x,y) возвратил только значение f (x, y) термин в уравнении. Термин, включающий S, обработан решателем отдельно с помощью опции 'SingularTerm'.

Выбор решателя BVP

MATLAB включает решатели bvp4c и bvp5c, чтобы решить BVPs. В большинстве случаев можно использовать решатели взаимозаменяемо. Основное различие между решателями - то, что bvp4c реализует формулу четвертого порядка, в то время как bvp5c реализует формулу пятого порядка.

Функция bvp5c используется точно как bvp4c, за исключением значения ошибочных допусков между этими двумя решателями. Если S (x) аппроксимирует решение y(x), bvp4c управляет невязкой |S ′ (x) – f (x, S (x)) |. Этот подход косвенно управляет истинной погрешностью |y (x) – S (x) |. Используйте bvp5c, чтобы управлять истинной погрешностью непосредственно.

РешательОписание

bvp4c

bvp4c является кодом конечной разности, который реализует 3-этапную формулу Lobatto IIIa. Это - формула словосочетания, и полином словосочетания предоставляет решение C1-continuous, которое является четвертым порядком, точным однородно в интервале интегрирования. Поймайте в сети выбор, и контроль ошибок основаны на невязке непрерывного решения.

Метод словосочетания использует сетку точек, чтобы разделить интервал интегрирования на подынтервалы. Решатель определяет числовое решение путем решения глобальной системы алгебраических уравнений, следующих из граничных условий и условий словосочетания, наложенных на все подынтервалы. Решатель затем оценивает ошибку числового решения на каждом подынтервале. Если решение не удовлетворяет критерии допуска, то решатель адаптирует mesh и повторяет процесс. Необходимо обеспечить точки начальной mesh, а также начального приближения решения в точках mesh.

bvp5c

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 и файлы

Несколько доступных файлов в качестве примера служат превосходными отправными точками для наиболее распространенных проблем BVP. Чтобы легко исследовать и запустить примеры, просто используйте приложение Дифференциальных уравнений В качестве примера. Чтобы запустить это приложение, ввести

odeexamples
Чтобы открыть отдельный файл в качестве примера для редактирования, ввести
edit exampleFileName.m
Чтобы запустить пример, ввести
exampleFileName

Эта таблица содержит список доступных файлов в качестве примера BVP, а также решатели и опции, которые они используют.

Файл в качестве примера

Используемый решательЗаданные опции

Описание

Ссылка в качестве примера

emdenbvp

bvp4c или bvp5c

  • 'SingularTerm'

Уравнение Эмдена, сингулярный BVP

Решите BVP с сингулярным термином

fsbvp

bvp4c или bvp5c

Falkner-Skan BVP на бесконечном интервале

Проверьте непротиворечивость BVP Используя продолжение

mat4bvp

bvp4c или bvp5c

Четвертая собственная функция уравнения Мэтью

Решите BVP с неизвестным параметром

rcbvp

bvp4c и bvp5c

  • 'FJacobian'

  • 'AbsTol'

  • 'RelTol'

  • 'Stats'

Пример, сравнивающий ошибки, которыми управляет bvp4c и bvp5c

Сравните bvp4c и bvp5c Решатели (bvp4c)

Сравните bvp4c и bvp5c Решатели (bvp5c)

shockbvp

bvp4c или bvp5c

  • 'FJacobian'

  • 'BCJacobian'

  • 'Vectorized'

Решение с ударным слоем рядом x = 0

Решите BVP Используя продолжение

twobvp

bvp4c

BVP точно с двумя решениями

Решите BVP с двумя решениями

threebvp

bvp4c или bvp5c

Краевая задача с тремя точками

Решите 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.

Смотрите также

| | | | |