plot::Ode2d

2D графики решений для ОДУ

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

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

Синтаксис

plot::Ode2d(f, [t0, t1,...], Y0, <[G1, <Style = style1>, <Color = c1>], [G2, <Style = style2>, <Color = c2>], …>, <method>, <RelativeError = rtol>, <AbsoluteError = atol>, <Stepsize = h>, <a = amin .. amax>, options)
plot::Ode2d(f, [Automatic, tstart, tend, tstep], Y0, <[G1, <Style = style1>, <Color = c1>], [G2, <Style = style2>, <Color = c2>],...>, <method>, <RelativeError = rtol>, <AbsoluteError = atol>, <Stepsize = h>, <a = amin .. amax>, options)
plot::Ode2d([t0, t1, …], f, Y0, <[G1, <Style = style1>, <Color = c1>], [G2, <Style = style2>, <Color = c2>],...>, <method>, <RelativeError = rtol>, <AbsoluteError = atol>, <Stepsize = h>, <a = amin .. amax>, options)
plot::Ode2d([Automatic, tstart, tend, tstep], f, Y0, <[G1, <Style = style1>, <Color = c1>], [G2, <Style = style2>, <Color = c2>],...>, <method>, <RelativeError = rtol>, <AbsoluteError = atol>, <Stepsize = h>, <a = amin .. amax>, options)

Описание

plot::Ode2d(f, [t0, t1,...], Y0) представляет двумерные проекции решений задачи с начальными значениями, данной ft0 и Y0.

plot::Ode2d(f, [t0, t1,...], Y0, [G]) вычисляет mesh числовых точек выборки Y (t 0), Y (t 1), … представление решения Y (t) дифференциального уравнения первого порядка (динамическая система)

.

Процедура

карты эти точки решения (t i, Y (t i)) в ×ℂn к сетке 2D точек графика [x i, y i]. Эти точки могут быть соединены прямыми линиями или интерполирующими сплайнами.

Внутренне, последовательность числовых точек выборки

Y_1 := numeric::odesolve(f, t_0..t_1, Y_0, Options),

Y_2 := numeric::odesolve(f, t_1..t_2, Y_1, Options), и так далее

вычисляется, где Options некоторая комбинация method, RelativeError = rtol, AbsoluteError = atol, и Stepsize = h. Смотрите numeric::odesolve для получения дополнительной информации о векторной полевой процедуре f, начальное условие Y0, и опции.

Служебная функция numeric::ode2vectorfield может использоваться, чтобы произвести входные параметры f, t0, Y0 от набора дифференциальных выражений, представляющих ОДУ. Смотрите Пример 1.

Каждый из “генераторов данных о графике” G1, G2 и т.д. создает графическую кривую решения из числовых точек выборки Y0, Y1, и так далее. Каждый генератор G внутренне называется в форме G(t0, Y0), G(t1, Y1),... произвести последовательность графика указывает в 2D.

Решатель numeric::odesolve возвращается решение указывает Y0, Y1, и так далее, как списки или одномерные массивы (фактический тип определяется начальным значением Y0). Следовательно, каждый генератор G должен принять два аргумента (t, Y)T действительный параметр, Y “вектор” (или список или 1-мерный массив).

Каждый генератор должен возвратить список с 2 элементами, представляющими (x, y), координаты графической точки, сопоставленной с решением, указывают (t, Y) из ОДУ. Все генераторы должны произвести графические данные той же размерности, то есть, 2D данные как списки с 2 элементами для plot::Ode2d. Вот некоторые примеры:

  • G := (t, Y) -> [t, Y_1] создает 2D график первого компонента вектора решения вдоль y - ось, построенная против переменной t времени вдоль x - ось

  • G := (t, Y) -> [Y_1, Y_2] создает 2D график фазы, строя первый компонент решения вдоль x - оси и второго компонента вдоль y - ось. Результатом является кривая решения в фазовом пространстве (параметризованный временем t).

Если никакие генераторы не даны, plot::Ode2d графиками по умолчанию все компоненты решения как функции времени, с помощью [Splines, Points] как стиль.

Обратите внимание на то, что произвольные значения, сопоставленные с кривой решения, могут быть отображены графически соответствующим генератором G. Смотрите пример 2.

Несколько генераторов G1, G2, и так далее может быть задан, чтобы сгенерировать несколько кривых, сопоставленных с той же числовой mesh Y0, Y1, …. Смотрите пример 1, пример 2 и пример 3.

Графические данные, произведенные каждым из генераторов G1, G2,... состоит из последовательности точек mesh в 2D.

  • С Style = Points, графические данные отображены как дискретный набор точек.

  • С Style = Lines, точки графических данных отображены как кривая, состоящая из сегментов прямой линии между точками выборки. Сами точки не отображены.

  • С Style = Splines, точки графических данных отображены как сглаженная сплайновая кривая, соединяющая точки выборки. Сами точки не отображены.

  • С Style = [Splines, Points] и Style = [Lines, Points], эффекты используемых стилей объединены, то есть, и точки оценки и прямые линии, или сплайны, соответственно, отображены.

Атрибуты графика приняты plot::Ode2d включайте Submesh = n, где n является некоторым положительным целым числом. Этот атрибут только оказывает влияние на кривые, которые возвращены для графических генераторов с Style = Splines и Style = [Splines, Points], соответственно. Это служит для сглаживания графической сплайновой кривой с помощью достаточно высокого количества точек графика.

n количество точек графика между двумя последовательными числовыми точками, соответствующими mesh времени. Значением по умолчанию является n = 4, то есть, сплайны построены как пять сегментов прямой линии, соединяющих числовые точки выборки.

Атрибуты

АтрибутЦельЗначение по умолчанию
AbsoluteErrorмаксимальная абсолютная ошибка дискретизации 
AffectViewingBoxвлияние объектов на ViewingBox из сценыTRUE
AntiAliasedсглаженные линии и точки?TRUE
Colorsсписок цветов, чтобы использовать[RGB::Blue, RGB::Red, RGB::Green, RGB::MuPADGold, RGB::Orange, RGB::Cyan, RGB::Magenta, RGB::LimeGreen, RGB::CadmiumYellowLight, RGB::AlizarinCrimson, RGB::Aqua, RGB::Lavender, RGB::SeaGreen, RGB::AureolineYellow, RGB::Banana, RGB::Beige, RGB::YellowGreen, RGB::Wheat, RGB::IndianRed, RGB::Black]
Framesколичество систем координат в анимации50
Functionвыражение function или процедура 
InitialConditionsначальные условия ОДУ 
Legendделает запись легенды 
LegendTextкороткий объяснительный текст для легенды 
LegendEntryдобавить этот объект в легенду?FALSE
LineWidthширина линий0.35
LineStyleтело, подчеркнутые штриховой линией или пунктирные линии?Solid
LinesVisibleвидимость линийTRUE
Nameимя объекта графика (для браузера и легенды) 
ODEMethodчисловая схема, используемая в том, что решила ОДУDOPRI78
ParameterEndзакончите значение параметра анимации 
ParameterNameимя параметра анимации 
ParameterBeginначальное значение параметра анимации 
ParameterRangeобласть значений параметра анимации 
PointSizeразмер точек1.5
PointStyleстиль презентации точекFilledCircles
PointsVisibleвидимость точек meshTRUE
Projectorsспроектируйте решение для ОДУ графических точек 
RelativeErrorмаксимальная относительная ошибка дискретизации 
Stepsizeустановите постоянный размер шага 
Submeshплотность подmesh (дополнительные точки выборки)4
TimeEndвремя окончания анимации10.0
TimeMeshчисловая mesh времени 
TimeBeginвремя начала анимации0.0
TimeRangeоперативный промежуток анимации0.0.. 10.0
Titleобъектный заголовок 
TitleFontшрифт объектных заголовков[" sans-serif ", 11]
TitlePositionположение объектных заголовков 
TitleAlignmentвыравнивание по горизонтали заголовков w.r.t. их координатыCenter
TitlePositionXположение объектных заголовков, x компонент 
TitlePositionYположение объектных заголовков, y компонент 
USubmeshплотность дополнительных точек выборки для параметра “u”4
VisibleвидимостьTRUE
VisibleAfterобъект, видимый после этой временной стоимости 
VisibleBeforeобъект, видимый до этой временной стоимости 
VisibleFromToобъект, видимый в это время, располагается 
VisibleAfterEndобъект, видимый после его законченного времени анимации?TRUE
VisibleBeforeBeginобъект, видимый перед его временем анимации, запускается?TRUE

Примеры

Пример 1

Следующая процедура f вместе с начальным значением Y0 представляйте задачу с начальными значениями, Y (0) = 2. В MuPAD® одномерный векторный Y представлен списком с одним элементом. Тело функционального f ниже адресов первое (и только) запись этого списка как Y1 и возвращает одномерный векторный tY - Y 2 как список с одним элементом. Также начальное условие Y0 одномерный вектор, представленный списком. Для получения дополнительной информации на формате f, смотрите numeric::odesolve:

f := (t, Y) -> [t*Y[1] - Y[1]^2]: 
Y0 := [2]:

В качестве альтернативы служебная функция numeric::ode2vectorfield может использоваться, чтобы сгенерировать входные параметры более интуитивным способом:

[f, t0, Y0] := [numeric::ode2vectorfield(
      {y'(t) = t*y(t) - y(t)^2, y(0) = 2}, [y(t)])]

Числовое решение состоит в том, чтобы состоять из точек выборки по mesh времени t i = i, i = 0, 1, …, 10. Мы используем генератор по умолчанию plot::Ode2d. Это генерирует точки выборки вместе со сглаженной сплайновой кривой, соединяющей эти точки:

p := plot::Ode2d(f, [$ 0..10], Y0,
                 PointSize = 2*unit::mm,
                 PointStyle = Stars):

Наконец, решение для оды представляется вызовом plot:

plot(p, TicksDistance = 2.0, GridVisible = TRUE, 
     SubgridVisible = TRUE):

Пример 2

Рассмотрите нелинейный генератор. Как динамическая система для, решите следующую задачу с начальными значениями, Y (0) = Y 0. Для получения дополнительной информации на формате f, смотрите numeric::odesolve:

f := (t, Y) -> [Y[2], - Y[1]^7]: 
Y0 := [1, 0]:

Следующий генератор производит график решения Y (t) против параметра времени t:

G1 := (t, Y) -> [t, Y[1]]:

В демонстрационных целях постройте функцию. Генератор G2 производит значения вдоль решения и строит эти значения против t:

G2 := (t, Y) -> [t, Y[1]^2/2 + Y[2]^2/2]:

Энергетическая функция или “гамильтониан”, должна быть сохранена вдоль кривой решения, потому что полная энергия системы является постоянной. Задайте соответствующий генератор G3 построить как функция t:

G3 := (t, Y) -> [t, Y[1]^8/8 + Y[2]^2/2]:

Кривая решения объединена с графиком функции и гамильтониана:

p := plot::Ode2d(f, [i/2 $ i = 0..40], Y0,
                 [G1, Style = Lines, Color = RGB::Red],
                 [G1, Style = Points, Color = RGB::Black],
                 [G2, Style = Lines, Color = RGB::Blue],
                 [G2, Style = Points, Color = RGB::Black],
                 [G3, Style = Lines, Color = RGB::Green],
                 [G3, Style = Points, Color = RGB::Black],
                 PointSize = 1.5*unit::mm,
                 LineWidth = 0.2*unit::mm
                ):

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

plot(p):

Гамильтонов G3 является постоянным, который проверяет точность интегратора.

Чтобы визуализировать зависимость траектории на начальных условиях, анимируйте plot::Ode2d по различным значениям:

plot(plot::Ode2d(f, [i/6 $ i = 0..120], [1, a], a = -1/2..1/2,
                 [G1, Style = Lines, Color = RGB::Red],
                 [G2, Style = Lines, Color = RGB::Blue],
                 [G3, Style = Lines, Color = RGB::Green],
                 LineWidth = 0.2*unit::mm, Frames=25))

Пример 3

Рассмотрите задачу с начальными значениями, y (0) = 0:

f := (t, y) -> t*sin(t + y^2): Y0:= [0]:

Используйте numeric::ode2vectorfield чтобы сгенерировать следующее векторное поле, которое является касательной к кривым решения:

p1 := plot::VectorField2d([1, f(t, y)], t = 0..4, y = -1.2..1.2,
                          Mesh = [21, 25], Color = RGB::Black):

Следующий объект представляет график решения как функция t:

p2 := plot::Ode2d(
   (t,Y) -> [f(t, Y[1])], [i/3 $ i=0..12], Y0,
   [(t, Y) -> [t, Y[1]], Style = Points, Color = RGB::Red],
   [(t, Y) -> [t, Y[1]], Style = Splines, Color = RGB::Blue]):

Задайте размер точки явным образом:

p2::PointSize := 2*unit::mm:

Наконец, объедините векторное поле и график ОДУ к сцене и вызовите средство отображения:

plot(p1, p2, XTicksDistance = 0.5, YTicksDistance = 0.2,
     Axes = Frame, AxesTitles = ["t", "y"], 
     GridVisible = TRUE):

Пример 4

По умолчанию, numeric::odesolve (который используется plot::Ode2d внутренне), использует адаптивные размеры шага и метод порядка 8. Обычно, нет никакой причины изменить эти настройки, за исключением демонстративных целей. В следующей анимации используйте прямой явный Метод Эйлера (первого порядка) и покажите, как уменьшение размера шага улучшает качество расчетного решения.

Дифференциальное уравнение, очевидно, выполнено показательной функцией:

[f, t0, Y0] := [numeric::ode2vectorfield(
                   {y'(t)=y(t), y(0)=1}, [y(t)])]:

Чтобы судить качество числового решения, постройте символьное решение вместе с приближением:

plot(plot::Function2d(exp(x), x=0..3,
                      Color = RGB::Black, LineStyle = Dashed),
     plot::Ode2d(f, [Automatic, 0, 3, 1/n], Y0, n = 1..50,
                 EULER1, Stepsize = 1/n,
                 [(t, Y) -> [t, Y[1]], Style=[Lines, Points]]))

Параметры

f

Векторное поле ОДУ: процедура. Смотрите numeric::odesolve для деталей.

f эквивалентно атрибуту Function.

t0, t1, …

Mesh времени: действительные численные значения. Если данные отображены с Style = Splines, эти значения должны быть в порядке возрастания.

t0t1 , … эквивалентен атрибуту TimeMesh.

tstart, tend, tstep

Mesh времени: действительные численные значения. tend должно быть больше, чем tstart и tstep должно быть положительным и должен быть меньшим, чем t e nd - t s tart.

tstart, tend, tstep эквивалентны атрибуту TimeMesh.

Y0

Начальное условие ОДУ: список или 1-мерный массив. Смотрите numeric::odesolve.

Y0 эквивалентно атрибуту InitialConditions.

G1, G2, …

“генераторы отображают данные на графике”: процедуры, сопоставляющие решение, указывают (t, Y(t)) к списку [x, y] или [x, y, z] представление графика указывает в 2D или 3D, соответственно.

G1, G2, … эквивалентен атрибуту Projectors.

method

Используйте определенную числовую схему (см. numeric::odesolve)

a

Параметр анимации, заданный как a = amin..amax, где amin начальное значение параметров и amax итоговое значение параметров.

Опции

Style

Опция, заданная как Style = style

Устанавливает стиль, в котором отображены данные о графике. Следующие стили доступны: PointsСтроки, Splines, [Lines, Points], и [Splines, Points]. Стилем по умолчанию является [Splines, Points].

Color

Опция, заданная как Color = c

Выбирает цвет RGB c в котором отображены данные о графике. Цветом по умолчанию i th генератор является i th запись атрибута Colors.

RelErr

Опция, заданная как RelErr = rtol

Устанавливает числовой допуск дискретизации (см. numeric::odesolve)

AbsErr

Опция, заданная как AbsErr = atol

Устанавливает числовой допуск дискретизации (см. numeric::odesolve)

Stepsize

Опция, заданная как Stepsize = h

Устанавливает постоянный stepsize (см. numeric::odesolve)

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

Функции MuPAD

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