exponenta event banner

Решение проблем с граничными значениями

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

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

y '= f (x, y)

где:

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

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

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

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

В простейшем случае двухточечного БВП решение ОДУ ищется на интервале [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

  • В первоначальном предположении для решения первая и последняя точки сетки задают точки, в которых выполняются граничные условия. Для вышеуказанных граничных условий можно задать bvpinit(linspace(a,b,5),yinit) для выполнения граничных условий на а и b.

Решатели BVP в MATLAB также могут решать другие типы проблем, которые имеют:

  • Неизвестные параметры p

  • Сингулярности в решениях

  • Многоточечные условия (внутренние границы, разделяющие интервал интеграции на несколько областей)

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

Начальное приближение решения

В отличие от задач начального значения, задача граничного значения может иметь:

  • Нет решения

  • Конечное количество решений

  • Бесконечно много решений

Важной частью процесса решения BVP является обеспечение предположения для требуемого решения. Качество этого предположения может быть критически важным для производительности решателя и даже для успешного вычисления.

Используйте bvpinit для создания структуры для начального предположения решения. Решающие устройства bvp4c и bvp5c принять эту структуру в качестве третьего входного аргумента.

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

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

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

  • Рассмотрим размещение точек сетки (координаты X начального предположения решения). Решатели BVP адаптируют эти точки во время процесса решения, поэтому не нужно указывать слишком много точек сетки. Рекомендуется указать несколько точек сетки, расположенных рядом с местом быстрого изменения решения.

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

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

Часто 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 управляет остатком | S  (x ) - f (x, S (x)) |. Этот подход косвенно управляет истинной ошибкой | y (x) - S (x) |. Использоватьbvp5c для непосредственного управления истинной ошибкой.

Решающее устройствоОписание

bvp4c

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

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

bvp5c

bvp5c - код конечных разностей, реализующий четырёхступенчатую формулу Лобатто Λ a. Это формула коллокации, и полином коллокации обеспечивает 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, i4-я колонна Sxint аппроксимирует решение y(xint(i)).

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

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

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] Ашер, У., Р. Маттейдж и Р. Рассел. «Численное решение граничных задач для обычных дифференциальных уравнений». Филадельфия, Пенсильвания: SIAM, 1995, стр. 372.

[2] Шампин, Л. Ф. и Дж. Кьерзенка. «Решатель BVP, основанный на остаточном контроле и MATLAB PSE». ACM Trans. Math. Softw. Том 27, номер 3, 2001, стр. 299-316.

[3] Шампин, Л.Ф., М.У. Райхельт и Ж. Кьерзенка. «Решение граничных задач для обычных дифференциальных уравнений в MATLAB с bvp4c». Обмен файлами MATLAB, 2004.

[4] Шампин, Л.Ф. и Ж. Кьерзенка. «Решатель BVP, управляющий остаточными значениями и ошибками». Дж. Нумер. Анал. инд. эппл. мат. т. 3 (1-2), 2008, стр. 27-41.

См. также

| | | | |