график::

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) представляет двумерные проекции решений задачи с начальными значениями, данной f, t0 и 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, эти значения должны быть в порядке возрастания.

t0, t1, … эквивалентен атрибуту 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, Lines, 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 графические примитивы