Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Применение MATLAB для решения аналитических задач моделирования. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
Трехмерные графики
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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]