numeric::ode2vectorfield

Преобразуйте систему оды в vectorfield обозначение

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.

Синтаксис

numeric::ode2vectorfield(IVP, fields)

Описание

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

numeric::ode2vectorfield служебная функция должна сгенерировать входные параметры для числового решателя ОДУ numeric::odesolve2. Этот решатель требует процедуры, представляющей vectorfield f (t, Y) системы первого порядка дифференциальных уравнений (динамическая система) и исходные данные Y 0 = Y (t 0). Учитывая задачу с начальными значениями IVP состоя из (возможно высший порядок) дифференциальные выражения вместе с начальными условиями, numeric::ode2vectorfield преобразует уравнения высшего порядка в эквивалентную систему ОДУ первого порядка и возвращает входные параметры для numeric::odesolve2.

Дифференциальные уравнения высшего порядка могут всегда представляться как эквивалентная динамическая система с некоторым векторным Y. Например, n-th заказывает уравнение

может быть записан как система первого порядка

для вектора.

Список входов fields correponds к векторному Y. Это должна быть полная спецификация всех функций и их производных через, но не включая самые высокие производные неизвестных функций. Например, для дифференциального уравнения второго порядка соответствующий список неизвестных полей. Дифференциальные уравнения имеют второй порядок в y и первого порядка в z. Следовательно, соответствующим списком неизвестных полей является [y(t), y'(t), z(t)].

Упорядоченное расположение полей в list определяет упорядоченное расположение компонентов списка, чтобы числовой решатель производит как вектор решения. См. Пример 2.

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

Полная спецификация начальных условий должна содержаться в IVP: для каждого компонента в list, начальное значение должно быть введено. Начальные условия могут быть заданы линейными уравнениями, которые будут решены для начальных значений неизвестных полей автоматически. Например, для fields = [y(t), y'(t), z(t)], начальные условия могут быть заданы явным образом y(t0) = 1, y'(t_0) = 2, z(t0) = 3, Скажем, или через линейные уравнения, такие как y(t_0) + z(t_0) = y'(t_0), y(t0) = z(t0), z(t0) = 2 y(t0). См. пример 3.

Дифференциальные уравнения, начальное 'время' t0, и начальные условия могут включить символьные параметры. Однако такие параметры должны оценить к числовым объектам, когда последовательность, возвращенная numeric::ode2vectorfield передается числовому решателю.

vectorfield процедура f и начальные значения Y0 возвращенный numeric::ode2vectorfield может также использоваться функциями numeric::odesolve, plot::Ode2d, plot::Ode3d. См. пример 3.

numeric::ode2vectorfield и numeric::odeToVectorField эквивалентны.

Примеры

Пример 1

Мы рассматриваем задачу с начальными значениями

.

Решатель numeric::odesolve2 требует процедуры f: для 1-мерного векторного Y = [y (t)] заданный fields. Служебный numeric::ode2vectorfield принимает более удобное представление через арифметические выражения:

IVP := {y'(t) = t*sin(y(t)), y(t0) = y0}:
fields := [y(t)]:
IVP := numeric::ode2vectorfield(IVP, fields)

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

t0 := 0: y0 := 1: 
Y := numeric::odesolve2(IVP)

Вызов числового решения Y вызывает численное интегрирование с начального 'времени' t 0 = 0 ко 'времени', заданному в вызове Y:

Y(0), Y(1), Y(2), Y(3)

delete IVP, fields, Y:

Пример 2

Мы рассматриваем задачу с начальными значениями второго порядка

.

Соответствующее vectorfield представление включает вектор, заданный fields:

IVP := {y''(t) = t*sin(y(t)), y(0) = 1, y'(0) = 0}:
fields := [y(t), y'(t)]:
numeric::ode2vectorfield(IVP, fields)

Эта последовательность принята numeric::odesolve2. Числовое решение Y возвращает списки, представляющие компоненты вектора, заданного fields:

Y := numeric::odesolve2(%):
Y(5)

С переупорядочением неизвестных полей числовой решатель возвращает вектор решения с перестроенными компонентами:

fields := [y'(t), y(t)]:
Y := numeric::odesolve2(numeric::ode2vectorfield(IVP, fields)):
Y(5)

delete IVP, fields, Y:

Пример 3

Следующий IVP включает неизвестные поля u (t), v (t), w (t). Поскольку это имеет второй порядок в u, первого порядка в v и третьего порядка в w, списке неизвестных [y(t), y'(t), v(t), w(t), w'(t), w''(t)] является соответствующим:

IVP := {u''(t) - u(t)*v'(t) = exp(-t)*v'(t), v'(t) = w''(t),
        u'(t)*w'''(t) = t + u''(t), 
        u(PI) = 3, u'(PI) = 1, 
        v(PI) = 0, 
        w(PI) = w'(PI), w'(PI) = 2 - w(PI), w''(PI) = 3*w(PI)}:
fields := [u(t), u'(t), v(t), w(t), w'(t), w''(t)]:
ivp := numeric::ode2vectorfield(IVP, fields)

Y := numeric::odesolve2(ivp):
Y(5)

Мы строим компоненты v, w, и вектора решения:

plotfunc2d(Y(t)[3], Y(t)[4], Y(t)[6], t = PI .. 5,
           Colors = [RGB::Red, RGB::Green, RGB::Blue]):

В качестве альтернативы мы используем vectorfield процедуру ivp[1] и начальные условия ivp[3] как входные параметры для plot::Ode2d:

plot(plot::Ode2d([PI + i*(5 - PI)/30 $ i = 0..30],
                 ivp[1], ivp[3],
                 [(t, Y) -> [t, Y[3]], Color = RGB::Red],
                 [(t, Y) -> [t, Y[4]], Color = RGB::Green],
                 [(t, Y) -> [t, Y[6]], Color = RGB::Blue])):

delete IVP, fields, ivp, Y:

Параметры

IVP

Задача с начальными значениями: список или набор уравнений, включающих одномерные вызовы функции y 1 (t), y 2 (t) и т.д. и производные, , и т.д. Дифференциальные уравнения должны быть квазилинейными: самая высокая производная каждой из зависимых функций y 1 (t), y 2 (t) и т.д. должен ввести уравнения линейно. IVP должен также содержать соответствующие начальные условия, заданные линейными уравнениями в выражениях y 1 (t 0), …, y 2 (t 0), и т.д. В качестве альтернативы арифметические выражения могут быть заданы, которые интерпретированы как уравнения с исчезающей правой стороной.

fields

Вектор динамической системы, эквивалентной IVP: список символьных вызовов функции, таких как [y_1(t), y_1'(t), dots, y_2(t), y_2'(t), dots] представление неизвестных полей, которые будут решены для.

Возвращаемые значения

Последовательность f, t0, Y0. Эти данные представляют динамическую систему с начальным условием Y (t 0) = Y 0, эквивалентный IVP. vectorfield f: процедура, t0 числовое выражение, представляющее начальное 'время' и Y0 список числовых выражений, представляющих компоненты начального векторного Y 0.

Смотрите также

Функции MuPAD

MuPAD графические примитивы