Решите краевые задачи для обыкновенных дифференциальных уравнений
sol = bvp5c (odefun, bcfun, solinit)
sol = bvp5c (odefun, bcfun, solinit, опции)
solinit = bvpinit (x, yinit, параметрические усилители)
| Указатель на функцию, который оценивает дифференциальные уравнения f (x, y). Это может иметь форму dydx = odefun(x,y) dydx = odefun(x,y,parameters) Для скалярного | |
| Указатель на функцию, который вычисляет невязку в граничных условиях. Для условий граничного значения двух-точки формы до н.э (y (a), y (b)), res = bcfun(ya,yb) res = bcfun(ya,yb,parameters) где | |
| Структура, содержащая исходное предположение для решения. Вы создаете | |
| Заказанные узлы начальной mesh. Граничные условия наложены в = | |
| Исходное предположение для решения, таким образом, что | |
| Дополнительный. вектор | |
Структура может иметь любое имя, но поля нужно назвать | ||
| Дополнительный аргумент интегрирования. Структура вы создаете использование функции | |
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, имеет следующие поля:
| Mesh выбрана |
| Приближение к y (x) в точках mesh |
| Значения |
|
|
| Вычислительная статистика стоимости (также отображенный, когда опция 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 увеличивает систему с тривиальными дифференциальными уравнениями для неизвестных параметров.
[1] Шемпин, L.F., M.W. Reichelt, и Дж. Кирженка, “Решающая Краевые задачи для Обыкновенных дифференциальных уравнений в MATLAB с bvp4c”
Этот пример использует функцию bvp4c, однако в большинстве случаев решатели могут использоваться взаимозаменяемо.