bvp5c

Решите краевые задачи для обыкновенных дифференциальных уравнений

Синтаксис

sol = bvp5c (odefun, bcfun, solinit)
sol = bvp5c (odefun, bcfun, solinit, опции)
solinit = bvpinit (x, yinit, параметрические усилители)

Аргументы

odefun

Указатель на функцию, который оценивает дифференциальные уравнения f (x, y). Это может иметь форму

dydx = odefun(x,y)
dydx = odefun(x,y,parameters)

Для скалярного x и вектора - столбца y, odefun(x,y) должен возвратить вектор - столбец, dydx, представляя f (x, y). parameters является вектором неизвестных параметров.

bcfun

Указатель на функцию, который вычисляет невязку в граничных условиях. Для условий граничного значения двух-точки формы до н.э (y (a), y (b)), bcfun может иметь форму

res = bcfun(ya,yb)
res = bcfun(ya,yb,parameters)

где ya и yb являются векторами - столбцами, соответствующими y (a) и y (b). parameters является вектором неизвестных параметров. Вывод res является вектором - столбцом.

solinit

Структура, содержащая исходное предположение для решения. Вы создаете solinit с помощью функционального bvpinit. solinit имеет следующие поля.

 

x

Заказанные узлы начальной mesh. Граничные условия наложены в = solinit.x(1) и b = solinit.x(end).

 

y

Исходное предположение для решения, таким образом, что solinit.y(:,i) является предположением для решения в узле solinit.x(i) .

 

параметры

Дополнительный. вектор A, который обеспечивает исходное предположение для неизвестных параметров.

 

Структура может иметь любое имя, но поля нужно назвать x, y и parameters. Можно сформировать solinit с функцией помощника bvpinit. Смотрите bvpinit для деталей.

опции

Дополнительный аргумент интегрирования. Структура вы создаете использование функции bvpset. Смотрите bvpset для деталей.

Описание

sol = bvp5c(odefun,bcfun,solinit) интегрирует систему обыкновенных дифференциальных уравнений формы

y ′ = f (x, y)

на интервале [a, b] подвергают, чтобы двух-указать условия граничного значения

до н.э (y (a), y (b)) = 0

odefun и bcfun являются указателями на функцию. См. Создание указателя на функцию для получения дополнительной информации.

Параметризация Функций объясняет, как предоставить дополнительные параметры функциональному odefun, а также функцию граничного условия bcfun, при необходимости. Можно использовать функциональный bvpinit, чтобы задать граничные точки, которые сохранены во входном параметре solinit.

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

y ′ = f (x, y, p)

0 = до н.э (y (a), y (b), p)

где p соответствует parameters. Вы предоставляете bvp5c исходное предположение для любых неизвестных параметров в solinit.parameters параметры. Решатель bvp5c возвращает окончательные значения этих неизвестных параметров в sol.parameters параметры.

bvp5c производит решение, которое непрерывно на [a,b] и имеет непрерывную первую производную там. Используйте функциональный deval и вывод sol bvp5c, чтобы оценить решение в отдельных моментах xint в интервале [a,b].

sxint = deval(sol,xint)

Структура sol, возвращенный bvp5c, имеет следующие поля:

sol.x

Mesh выбрана bvp5c

sol.y

Приближение к y (x) в точках mesh sol.x

sol.parameters

Значения, возвращенные bvp5c для неизвестных параметров, если любой

sol.solver

bvp5c

sol.stats

Вычислительная статистика стоимости (также отображенный, когда опция stats установлена с bvpset).

Структура sol может иметь любое имя и bvp5c, создает поля x, y, parameters и solver.

sol = bvp5c(odefun,bcfun,solinit,options) решает как выше со свойствами интегрирования по умолчанию, замененными значениями в options, структура, созданная с функцией bvpset. Смотрите bvpset для деталей.

solinit = bvpinit(x, yinit, params) формирует исходное предположение solinit с векторным params предположений для неизвестных параметров.

Сингулярные Краевые задачи

bvp5c решает класс сингулярных краевых задач, включая проблемы с неизвестными параметрами p, формы

y ′ = S · y/x + f (x, y, p)

0 = до н.э (y (0), y (b), p)

Интервал требуется, чтобы быть [0, b] с b> 0. Часто такие проблемы возникают при вычислении сглаженного решения ОДУ, которые следуют из дифференциальных уравнений с частными производными (УЧП) из-за цилиндрической или сферической симметрии. Для сингулярных проблем вы задаете (постоянный) матричный S как значение опции 'SingularTerm' bvpset, и odefun оценивает только f (x, y, p). Граничные условия должны быть сопоставимы с необходимым условием S · y (0) = 0 и исходное предположение должен удовлетворить это условие.

Многоточечные Краевые задачи

bvp5c может решить многоточечные краевые задачи, где = a0 <a1 <a2 <... <= b являются граничными точками в интервале [a, b]. Точки a1, a2..., 1 представляет интерфейсы, которые делятся [a, b] в области. bvp5c перечисляет области слева направо (от до b) с индексами, запускающимися от 1. В области k, [ak–1, ak], bvp5c оценивает производную как

yp = odefun(x,y,k) 

В функции граничных условий

bcfun(yleft,yright) 

yleft (: k) решение на левом контуре [ak–1, ak]. Точно так же yright(:,k) является решением на правильном контуре области k. В частности,

yleft(:,1) = y(a)

и

yright(:,end) = y(b)

Когда вы создаете исходное предположение с

solinit = bvpinit(xinit,yinit),

используйте двойные записи в xinit для каждой интерфейсной точки. Смотрите страницу с описанием для bvpinit для получения дополнительной информации.

Если yinit является функцией, bvpinit вызывает y = yinit(x, k), чтобы получить исходное предположение для решения в x в области k. В структуре решения sol, возвращенный bvp5c, sol.x имеет двойные записи для каждой интерфейсной точки. Соответствующие столбцы sol.y содержат левое и правое решение в интерфейсе, соответственно.

Видеть пример этого решает краевую задачу с тремя точками, введите threebvp в командной строке MATLAB®.

Примечание

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

Алгоритмы

bvp5c является кодом конечной разности, который реализует четырехэтапную формулу Lobatto IIIa. Это - формула словосочетания, и многочлен словосочетания предоставляет решение C1-continuous, которое является пятым порядком, точным однородно в [a,b]. Формула реализована как неявная формула Рунге-Кутта. bvp5c решает алгебраические уравнения непосредственно; bvp4c использует аналитическую конденсацию. bvp4c обрабатывает неизвестные параметры непосредственно; в то время как bvp5c увеличивает систему с тривиальными дифференциальными уравнениями для неизвестных параметров.

Ссылки

Примечание

Этот пример использует функцию bvp4c, однако в большинстве случаев решатели могут использоваться взаимозаменяемо.

Была ли эта тема полезной?