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