Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Применение MATLAB для решения аналитических задач моделирования. Учебное пособие
.pdf
Трехмерные графики
61
Есть несколько способов соединения этих точек (табл. 26, рис. 26). Основные команды приведены в табл. 27.
Таблица 26
Пример построения графика функции в трехмерном пространстве
>> [x,y]=meshgrid(-1:0.1:2,-1:0.1:2);
>> z=y.^4-x.^4;
>> mesh(x,y,z);
>> xlabel('x'); ylabel('y'); zlabel('z');
title ('3D figure');
формирует массивы X и Y, которые
определяют координаты узлов прямоугольника, задаваемого векторами x и y;
добавляет подписи осей координат и
имя графика
Рис. 26. График функции y^4-x^4
Таблица 27
Основные команды для работы с трехмерными графиками
Команда
Назначение
plot3(X,Y,Z);
Строит трехмерный график
mesh(X,Y,Z);
Строит сетчатый график
surf(X,Y,Z);
Строит непрерывную поверхность
surfl
Строит непрерывную поверхность с подсветкой
hidden off;
Рисует скрытые линии
shading interp;
Выполняет интерполяцию тени
colormap( <map> );
Задает цветовую карту
help graphSd
Выводит полный список характерных палитр
axis([xmin xmax ymin
ymax zmin zmax]);
Масштабирует отдельные участки графика

Применение Matlab для решения аналитических задач моделирования
62
Окончание табл. 27
Команда
Назначение
view([az el]);
Меняет точку обзора виртуальной камеры. Az – угол
азимута; el – угол возвышения
subplot
Разделяет графическое окно
caxis
Устанавливает соответствие между палитрой цветов
и масштабированием осей
contour
Отображает линии уровня трехмерной поверхности
peaks(N)
Возвращает матричный образ поверхности с рядом
пиков и впадин
Существуют команды для модификации вида поверхности. Например, команда peaks, приведенная в табл. 27, позволяет добавить пики и
впадины на график. По умолчанию функция а = peaks возвращает а- координаты функции пиков для сетки размером 49 на 49.
Добавление параметра peaks(n) изменяет размеры сетки на nxn.
Ввод в командную строку а = peaks(Xm,Ym) строит график функции пиков в точках, заданных значениями Xm и Ym (рис. 27). Размеры Xm и Ym
должны быть одинаковыми или, как минимум, совместимыми. Например,
можно задать значения Xm и Ym в виде матриц в формате meshgrid.
Рис. 27. График без дополнительных параметров

Трехмерные графики
63
Помимо пиков с помощью встроенных команд можно строить сфе-
ры, цилиндры и эллипсоиды (рис. 28).
Рис. 28. Цилиндр в Matlab
Команда cylinder(___) строит цилиндр без возврата координат. Используйте этот синтаксис с любым из входных параметров в предыдущих
синтаксисах. Если для решения задачи требуется создать несколько цилиндров в разных местах, задайте параметры первому цилиндру и используйте возвращенные координаты для построения остальных. Примерный
код приведен ниже:
>> t = 0:pi/15:2*pi; % параметры t;
r = 3 + sin(t); % функция r;
[X,Y,Z] = cylinder(r); % команда для формирования цилиндра;
>> surf(X,Y,Z) % задание формы и вывод графика на экран
Чтобы добавить еще 1 цилиндр, необходимо ввести следующий код
в командную строку (рис. 29):
hold on
surf(X,Y,Z+1)
Аналогичным образом можно добавить новые цилиндры того же
формата на график.
Элипсоид в Matlab выглядит следующим образом (рис. 30).

Применение Matlab для решения аналитических задач моделирования
64
Рис. 29. Два цилиндра со сдвигом на 1
Рис. 30. Эллипсоид в Matlab
Для построения вводится следующий код (рис. 31):
ellipsoid(0,-0.1,0,5,2.75,3.25)
axis equal
Рис. 31. Уравнение для построения эллипсоида

Трехмерные графики
65
Подобно цилиндру можно построить сферу (рис. 32). Сначала задаются координаты:
[X,Y,Z] = sphere;
Потом график выводится на экран:
surf(X,Y,Z)
axis equal
Потом со сдвигом и некоторыми модификациями строится вторая
сфера:
hold on
r = 5;
X2 = X * r;
Y2 = Y * r;
Z2 = Z * r;
surf(X2+5,Y2–5,Z2)
Рис. 32. Сфера в Matlab
При построении трехмерных графиков в Matlab существуют также
разнообразные настройки затенения. Функция затенения управляет затенением цвета поверхностей и графических объектов. По умолчанию
включен режим затенения shading faceted – плоское затенение с наложенными черными сетчатыми линиями. Команда shading interp, приведенная

Применение Matlab для решения аналитических задач моделирования
66
в табл. 27, изменяет цвет в каждом сегменте линии и грани путем интерполяции индекса цветовой карты или значения истинного цвета по линии
или грани. Команда shading flat – каждый сегмент линии сетки и грань
имеют постоянный цвет, определяемый значением цвета в конечной точке
сегмента или угла грани с наименьшим индексом или индексами. Команда shading(axes_handle...) применяет тип затенения к объектам в осях, заданных значениями axes_handle, вместо осей по умолчанию.
Команда waterfall позволяет создать график водопада (рис. 33). Для
этого в командной строке вводится, например, следующий код:
[X,Y] = meshgrid(–5:.5:5);
Z = Y.*sin(X) – X.*cos(Y);
p = waterfall(X,Y,Z)
Рис. 33. График "водопада"
Лабораторная работа № 8.
Трехмерные объекты в Matlab. Сетчатые графики
Постройте графики в соответствии с вариантами из табл. 28.
Таблица 28
Варианты заданий для лабораторной работы № 8
№
варианта
Функции и объекты
Интервал
Настройки
1
z = y^2–x^2;
xϵ[– 2,2],
yϵ[– 2,2]
Сетчатая поверхность, палитра с серыми цветами

Трехмерные графики
67
Окончание табл. 28
№
варианта
Функции и объекты
Интервал
Настройки
2
Трехмерная пространственная спираль
Сетчатая поверхность, палитра с красными цветами
3
r = sqrt(x^2+y^2)+0.001;
z = 1*sin(R)/R;
Непрерывная поверхность,
палитра с серыми цветами
4
Трехмерная пространственная спираль
xϵ[– 2,2],
yϵ[– 2,2]
Сетчатая поверхность
5
r = sqrt(x^4+y^4)+0.005;
z = 1*sin(R)/R;
Сетчатая поверхность, палитра с серыми цветами
6
z = 1*x* exp(–x^4 –
–y^4);
Непрерывная поверхность,
палитра с чередованием
цветов
7
z = y^4–x^4;
xϵ[– 3,3],
yϵ[– 3,3]
Сетчатая поверхность, палитра с красными цветами
8
Трехмерная пространственная спираль
Непрерывная поверхность,
палитра с чередованием
цветов
9
z = 1*x* exp(–x^2 –
–y^2);
xϵ[– 1,3],
yϵ[– 1,3]
Непрерывная поверхность,
палитра с серыми цветами
10
z = x*y*exp(–y^2);
xϵ[– 3,3],
yϵ[– 3,3]
Сетчатая поверхность, палитра с цветами радуги

Применение Matlab для решения аналитических задач моделирования
68
УРАВНЕНИЯ
Выбор инструмента целиком зависит от решаемой задачи. Для решения системы дифференциальных уравнений с большим количеством
неизвестных или тонкими настройками методов решения подходят встроенные алгоритмы и функции Matlab. Для моделирования реальных объектов управления с последующим синтезом лучше использовать Simulink.
Последний позволяет записывать системы дифференциальных уравнений
в виде функциональных блоков.
Функция dsolve, применяемая в решении уравнений в ранних версиях программы, на данный момент не рекомендуется официальным источником к использованию. В Matlab существует восемь встроенных
функций для поиска численных решений дифференциальных уравнений:
ode45, ode23, ode113, ode15s, ode23s, ode23t и ode23tb, ode15i.
Пример синтаксиса функций 4 приведен на рис. 34.
Рис. 34. Синтаксис функций odeXY
По данному алгоритму, в качестве аргументов в виде MAT-
LAB-функции подается правая часть системы уравнений. При необходимости, систему преобразуют к данному виду. Систему уравнений рекомендуется записывать не в поле функции, а в виде отдельной функции, в
4
Решение систем обыкновенных дифференциальных уравнений в среде
MATLAB. Часть 1 Математика и статистика. URL: https://hub.exponenta.ru/

Уравнения
69
некоторых случаях – в виде отдельного m-файла. После в виде строки из
аргумента t и его конечного значения задается интервал времени, для которого нужно найти решение.
Далее задаются начальные условия: значения неизвестных искомых
переменных (в виде столбца соответствующей размерности), опции отслеживания событий.
Разные ode представляют разные известные алгоритмы (табл. 29).
Таблица 29
Алгоритмы odeXY
Алгоритм
Метод
Назначение
ode45
Алгоритм Рунге–
Кутты четвертогопятого порядка
Одношаговый алгоритм для примерного
вычисления по значению в предыдущей
точке. Для решений используется метод
четвертого порядка, для контроля ошибки
– метод пятого порядка
ode23
Алгоритм Рунге–
Кутта, но 2–3 порядка
Одношаговый метод, для получения более
грубого решения, чем в алгоритме ode45 и
при наличии небольшой жесткости в
уравнениях
ode113
Метод Адамса–
Бэшфорта-Милтона
Многошаговый метод с решением на основе значений в предыдущих точках. Эффективнее предыдущих методов при высоких точностях и при сложности вычисления правых частей уравнений
ode15s
Метод Гира
Многошаговый метод. Используется при
неудачах с методом ode45
ode23s
Метод Розенброка
Одношаговый метод второго порядка.
Используется в случаях невысокой точности
ode23t
Метод Розенброка
Используется для решения умеренно
жестких систем без необходимости численного демпфирования решения
ode23tb
Метод Рунге–Кутта
Двухстадийное решение по неявной формуле Рунге–Кутта используется в случаях
невысокой требуемой точности решения
для грубой оценки подобных систем
В качестве примера использования алгоритмов разберем задачу.
В файле example с расширением .m запишем следующую функцию:
function f = example(a,b)

Применение Matlab для решения аналитических задач моделирования
70
f = cos(a+b)+(3/2)*(a-b);
end
После вызова функции ode113 получим решение в виде графика
для интервалов интегрирования [0,20] с помощью метода Адамса при
условии, что b(0) = 0:
ode113(@example,[0 20],0)
Лабораторная работа № 9.
Решение дифференциальных уравнений
Решить уравнение согласно варианту в табл. 30, при наличии начального значения найти частное решение.
Таблица 30
Варианты задания для лабораторной работы № 9
№
варианта
Задание
1
y’ = –2y, y(0) = 2
2
y’+(2y+1)ctgx = 0
3
y’+2y = 4x
4
y'–y ctgx–3y = 2, y(2) = 4
5
xy’–y = 3x2–3
6
y’–2xy+y2 = 5-x2
7
2sinx+y’ = 4y
8
y lny +xy’ = 0, y(1) = e
9
yx+y’ lnx = 10x, y(4) = 5
10
y’+2lnx = 10y, y(2) = 0
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
