Решение краевых задач

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

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

y'=f(x,y)

где:

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

  • y - зависимая переменная

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

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

В простейшем случае двухточечного 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, расположенных вблизи места быстрого изменения решения.

  • Если существует известное, более простое решение на меньшем интервале, то используйте его как начальное предположение на большем интервале. Часто можно решить задачу как ряд относительно более простых задач, практики, называемой продолжением. С продолжением связывают ряд простых задач, используя решение одной задачи в качестве исходной догадки, чтобы решить следующую задачу.

Поиск неизвестных параметров

Часто BVP включают неизвестные параметры 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.

Сингулярные BVP

bvp4c и bvp5c может решить класс сингулярных BVP вида

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 для решения BVP. В большинстве случаев можно использовать решатели взаимозаменяемо. Основное различие решателей в том, что bvp4c реализует формулу четвертого порядка, в то время как bvp5c реализует формулу пятого порядка.

bvp5c функция используется в точности как bvp4c, за исключением значения допусков ошибок между двумя решателями. Если S (x) аппроксимирует y(x) решения ,bvp4c управляет невязкой | <reservedrangesplaceholder9>    (<reservedrangesplaceholder8>) - f (x, S (<reservedrangesplaceholder4>) ) |. Этот подход косвенно управляет истинной |<reservedrangesplaceholder3> ошибок (x) - S (x) |. Использоватьbvp5c для непосредственного управления истинной ошибкой.

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

bvp4c

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

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

bvp5c

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, а i1-й столбец Sxint аппроксимирует решение y(xint(i)).

Примеры и файлы BVP

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

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

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

Пример файла

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

Описание

Пример ссылки

emdenbvp

bvp4c или bvp5c

  • 'SingularTerm'

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

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

fsbvp

bvp4c или bvp5c

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., 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.

См. также

| | | | |