plot
::Streamlines2d
Потоки векторных полей
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.
plot::Streamlines2d([v1, v2]
,x = xmin .. xmax
,y = ymin .. ymax
, <a = amin .. amax
>,options
) plot::Streamlines2d(v1
,v2
,x = xmin .. xmax
,y = ymin .. ymax
, <a = amin .. amax
>,options
) plot::Streamlines2d(V
,x = xmin .. xmax
,y = ymin .. ymax
, <a = amin .. amax
>,options
)
plot::Streamlines2d( [v1, v2] , x = `x_{min}`..`x_{max}` , y = `y_{min}`..`y_{max}` )
создает потоки векторного поля, заданного с (x, y) ∈ [x min, x max] × [y min, y max].
Векторное поле задано функцией. plot::Streamlines2d
отображает векторное поле путем рисования почти равномерно распределенных потоков векторного поля, т.е. изгибается, к которому векторное поле является тангенциальным в каждой точке. Плотностью линий потоков (и время, необходимое для вычисления), управляют с атрибутом MinimumDistance
.
Как показывает опыт: уменьшение значения MinimumDistance
фактором 2 приводит к увеличению времени выполнения фактором 4.
Схема определяемого пользователем цвета может быть задана LineColorFunction = color
, где color
процедура MuPAD®, принимающая 6 входных параметров и возвращающая список RGB
значения. Во время графического вывода эта функция вызвана в форме color(x, y, v1, v2, t, l, n)
:
Значения x
Y
координаты текущей точки.
Значения v1
, v2
компоненты векторного поля в текущей точке.
Значение t
“время” текущей точки (x, y)
на текущем потоке. Масштабирование этого параметра зависит от векторного поля.
Значение l
длина кривой текущего потока от его начальной точки текущая точка (x, y)
, как Евклидово расстояние. Этот параметр является инвариантным относительно скалярных изменений векторного поля (до изменения направления потока).
Целочисленное значение n
количество текущего потока. Каждый отдельный поток имеет различное значение.
См. пример 3.
Атрибут | Цель | Значение по умолчанию |
---|---|---|
AbsoluteError | максимальная абсолютная ошибка дискретизации | |
AffectViewingBox | влияние объектов на ViewingBox из сцены | TRUE |
AntiAliased | сглаженные линии и точки? | TRUE |
Frames | количество систем координат в анимации | 50
|
Legend | делает запись легенды | |
LegendText | короткий объяснительный текст для легенды | |
LegendEntry | добавить этот объект в легенду? | FALSE |
LineColor | цвет линий | RGB::Black |
LineWidth | ширина линий | 0.35*unit::mm |
LineColor2 | цвет линий | RGB::DeepPink |
LineStyle | тело, подчеркнутые штриховой линией или пунктирные линии? | Solid |
LineColorType | типы окраски линии | Flat |
LineColorFunction | функциональная окраска линии | |
MinimumDistance | пробел между линиями потоков | |
Name | имя объекта графика (для браузера и легенды) | |
ODEMethod | числовая схема, используемая в том, что решила ОДУ | ABM4 |
ParameterEnd | закончите значение параметра анимации | |
ParameterName | имя параметра анимации | |
ParameterBegin | начальное значение параметра анимации | |
ParameterRange | область значений параметра анимации | |
RelativeError | максимальная относительная ошибка дискретизации | 1/100000
|
Stepsize | установите постоянный размер шага | |
TimeEnd | время окончания анимации | 10.0
|
TimeBegin | время начала анимации | 0.0
|
TimeRange | оперативный промежуток анимации | 0.0 .. 10.0
|
TipAngle | вводный угол наконечников стрелки | (2*PI)/15 |
TipStyle | стиль презентации наконечников стрелки | Filled |
TipLength | длина наконечников стрелки | 0
|
Title | объектный заголовок | |
TitleFont | шрифт объектных заголовков | [" sans-serif " , 11 ] |
TitlePosition | положение объектных заголовков | |
TitleAlignment | выравнивание по горизонтали заголовков w.r.t. их координаты | Center |
TitlePositionX | положение объектных заголовков, x компонент | |
TitlePositionY | положение объектных заголовков, y компонент | |
Visible | видимость | TRUE |
VisibleAfter | объект, видимый после этой временной стоимости | |
VisibleBefore | объект, видимый до этой временной стоимости | |
VisibleFromTo | объект, видимый в это время, располагается | |
VisibleAfterEnd | объект, видимый после его законченного времени анимации? | TRUE |
VisibleBeforeBegin | объект, видимый перед его временем анимации, запускается? | TRUE |
XFunction | функция для x значений | |
XMax | окончательное значение параметра “x” | |
XMin | начальное значение параметра “x” | |
XName | имя параметра “x” | |
XRange | область значений параметра “x” | |
YFunction | функция для y значений | |
YMax | окончательное значение параметра “y” | |
YMin | начальное значение параметра “y” | |
YName | имя параметра “y” | |
YRange | область значений параметра “y” |
plot::Streamlines2d
изображает векторные поля (более или менее) равноотстоящими линиями потоков:
plot(plot::Streamlines2d(-x, -y, x=-2..2, y=-2..2))
Обратите внимание на то, что этот стиль отображения обязательно повреждает симметрии, в этом случае совершенная осевая симметрия векторного поля.
Кроме того, циклы не будут закрыты, но оставят разрыв:
plot(plot::Streamlines2d(-y, x, x=-2..2, y=-2..2))
Кроме “обычных” параметров, таких как параметр располагается, цвет линии, или ширина линии, plot::Streamlines2d
может управляться с атрибутом MinimumDistance
, который устанавливает минимальное расстояние между линиями потоков:
plot(plot::Streamlines2d(sin(x^2+y^2), cos(x^2+y^2), x = -3..3, y = -2..2))
plot(plot::Streamlines2d(sin(x^2+y^2), cos(x^2+y^2), x = -3..3, y = -2..2, MinimumDistance = 0.2))
plot(plot::Streamlines2d(sin(x^2+y^2), cos(x^2+y^2), x = -3..3, y = -2..2, MinimumDistance = 0.05))
Функция цвета линии для plot::Streamlines2d
имеет доступ к текущим координатам, к компонентам векторного поля в текущей точке, к текущей длине на кривой (и в терминах параметра “времени” и в терминах Евклидова расстояния) и целочисленное количество текущей кривой (которые не найдены в некотором предопределенном порядке). Мы используем номер кривой, чтобы сгенерировать красочное отображение:
num2col := (x, y, vx, vy, t, l, n) -> RGB::fromHSV([111*n, 1, 1]): plot(plot::Streamlines2d(sin(x^2+y^2), cos(x^2+y^2), x = -3..3, y = -2..2, LineColorFunction = num2col))
Используя кривую информация о длине позволяет нам включать направленную информацию в отображение:
l2col := (x, y, vx, vy, t, l) -> [frac(5*l) $ 3]: plot(plot::Streamlines2d(sin(x^2+y^2), cos(x^2+y^2), x = -3..3, y = -2..2, LineWidth = 0.75, LineColorFunction = l2col))
Часто, более легкий способ построить ориентацию линий потоков состоит в том, чтобы активировать наконечники стрелки plot::Streamlines2d
графики в середину каждого достаточно долго) линия потоков. Они сделаны невидимыми длиной совета по умолчанию 0:
plot(plot::Streamlines2d(0.3*x-y, 0.3*y+x, x = -3..3, y = -2..2, TipLength = 3*unit::mm))
Поскольку размещение линий потоков трудно предсказать, plot::Streamlines2d
не действительно подходит для анимаций. Возможно анимировать plot::Streamlines2d
, но когерентность между кадрами анимации меньше чем обычно:
plot(plot::Streamlines2d(sin(x^2+y^2), cos(x^2-y^2+a), x = -2..2, y = -2..2, a = -PI..PI, MinimumDistance = 0.1, Frames=10))
С настройками по умолчанию, plot::Streamlines2d
не может построить векторное поле (который не является непрерывным Липшицом) удовлетворяющим способом:
plot(plot::Streamlines2d([1, surd(3,y)^2], x=-3..3, y=-2..2))
При помощи различного числового интегратора проблемы могут быть преодолены (за счет более длительного расчета):
plot(plot::Streamlines2d([1, surd(3,y)^2], x=-3..3, y=-2..2, ODEMethod=RKF43, RelativeError=1e-3))
|
x - и y - компонент векторного поля: арифметические выражения в |
|
Матрица A категории |
|
Идентификаторы. |
|
Действительные численные значения.
|
|
Параметр анимации, заданный как |
Алгоритм используется в plot::Streamlines2d
был опубликован в “Создании Равномерно распределенных Потоков Произвольной Плотности” Бруно Джобардом и Уилфридом Лефером на Еврографическом Семинаре в Boulogne-sur-Mer, Франция.