- •Запорізький національний технічний університет
- •Зміст та оформлення лабораторних робот
- •Лабораторна робота № 1 Рішення нелінійних рівнянь методами половинного розподілу та хорд
- •1.1 Мета роботи
- •1.2 Завдання на лабораторну роботу
- •Основні теоретичні відомості
- •1.3.2 Функції MatLab для рішення нелінійних рівнянь
- •Індивідуальні завдання до лабораторної роботи
- •1.5 Завдання на самостійну роботу
- •1.6 Контрольні питання
- •Лабораторна робота № 2 Рішення нелінійних рівнянь методами Ньютона та простих итерацій
- •2.1 Мета роботи.
- •2.2 Завдання на лабораторну роботу
- •2.3 Основні теоретичні відомості
- •2.3.2 Метод простої ітерації (метод послідовних повторень)
- •Індивідуальні завдання до лабораторної роботи
- •2.5 Завдання на самостійну роботу
- •2.6 Контрольні питання
- •Лабораторна робота №3 Тема: рішення систем лінійних алгебраїчних рівнянь
- •3.1 Мета роботи
- •3.2 Порядок виконання лабораторної роботи
- •3.3 Основні теоретичні відомості
- •3.3.1 Прямі методи і їх реалізація в пакеті MatLab
- •3.3.2 Ітераційні методи і їх реалізація в пакеті MatLab
- •Контрольні питання
- •Лабораторна робота №4 Тема: Побудова 3d- графіків у системі matlab
- •4.1 Мета роботи
- •4.2 Порядок виконання лабораторної роботи
- •4.3 Основні теоретичні відомості
- •Сохранение в файлах графических изображений matlab
- •4.5 Завдання на самостійну роботу
- •4.6 Контрольні питання
- •5 Лабораторна робота №5 Тема: Решение систем нелинейных уравнений
- •5.1 Мета роботи.
- •5.3.3 Метод простых итераций
- •Рішення систем нелінійних рівнянь за допомогою функції fsolve
- •5.4 Индивидуальные задания к лабораторной работе
- •5.5 Завдання на самостійну роботу
- •5.6 Контрольні питання
- •Список літератури
Контрольні питання
Сформулюйте визначення норми вектора і запишіть формули для знаходження норми.
Поняття погано обумовленої системи рівнянь.
Сформулюйте алгоритм методу Гауса.
Засоби системи MatLab для розв’язання СЛАР.
Алгоритм методу Якобі.
Алгоритм методу Зейделя.
Сформулюйте достатню умову збіжності методів Якобі і Зейделя.
Сформулюйте критерій закінчення ітерацій в методах Якобі і Зейделя.
Лабораторна робота №4 Тема: Побудова 3d- графіків у системі matlab
4.1 Мета роботи
Придбання практичних навиків використання 3D графіки системи MatLab.
4.2 Порядок виконання лабораторної роботи
Изучить команды потроения и оформления трёхмерных графиков в системе MatLab.
Выполнить примеры построения графиков раздела 4.3.
Выполнить индивидуальное задание.
Составить отчет.
4.3 Основні теоретичні відомості
Таблица 4.1 - Основные функции построения трёхмерных графиков
mesh |
- каркасная поверхность |
surf |
- каркасная поверхность, залитая цветом |
surfc, meshc |
- график поверхности с линиями уровня на плоскости ху |
plot3 |
- построение линий в трёхмерном пространстве |
colorbar |
- команда, которая выводит рядом с графиком столбик,устанавливающий соответствие между цветом и значением функции |
contour3 |
- поверхность, состоящая из линий уровня |
Высокоуровневая графическая подсистема MATLABа автоматически реализует трёхмерную графику без специальных усилий со стороны пользователя. Пусть в точке с координатами x1,y1 вычислено значение функции z=f(x,y) и оно равно z1. В некоторой другой точке (то есть при другом значении аргументов) x2,y2 вычисляют значение функции z2. Продолжая этот процесс, получают массив (набор) точек (x1,y1,z1), (x2,y2,z2), … (xN,yN,zN) в количестве N штук, расположенных в трёхмерном пространстве. Специальные функции системы MATLAB проводят через эти точки гладкие поверхности и отображают их проекции на плоский дисплей компьютера.
Чаще всего точки аргументов расположены в области определения функции регулярно в виде прямоугольной сетки (то есть матрицы). Такая сетка точек порождает две матрицы одной и той же структуры: первая матрица содержит значения первых координат этих точек (x - координат), а вторая матрица содержит значения вторых координат (y - координат). Обозначим первую матрицу как X, а вторую - как Y. Есть ещё и третья матрица - матрица значений функции z=f(x,y)при этих аргументах. Эту матрицу обозначим буквой Z.
В системе MATLAB имеется специальная функция meshgrid для получения двумерных массивов X и Y по одномерным массивам x, y.(см.рис.4.1)
Рис.4.1 - Характеристика формирования двумерных массивов из одномерных
Пример 1: Пусть по оси x задан диапазон значений в виде вектора
u = -2 : 0.1 : 2
а по оси y этот диапазон есть
v = -1 : 0.1 : 1
Для получения матриц X и Y, представляющих первые и вторые координаты получающейся прямоугольной сетки точек используем функцию meshgrid:
[ X , Y ] = meshgrid( u, v )
Как мы видим, эта функция получает на входе два одномерных массива (вектора), представляющие массивы точек на осях координат, и возвращает сразу два искомых двумерных массива. На прямоугольной сетке точек вычисляем значения функции, например функции exp:
Z = exp( - X.^2 - Y.^2 )
Применяя простейшую функцию построения графика функции двух переменных в системе MATLAB
plot3( X , Y , Z )
где X, Y и Z - матрицы одинаковых размеров, получаем следующее изображение трёхмерного графика этой функции, представленное на рис.4.6:
Рис.4.2 - График в виде набора линий в пространстве(функция plot3)
Из этого рис.4.2 видно, что функция plot3 строит график в виде набора линий в пространстве, каждая из которых является сечением трёхмерной поверхности плоскостями, параллельными плоскости yOz.
По-другому можно сказать, что каждая линия получается из отрезков прямых, соединяющих набор точек, координаты которых берутся из одинаковых столбцов матриц X, Y и Z. То есть, первая линия соответствует первым столбцам матриц X, Y Z; вторая линия - вторым столбцам этих матриц и так далее.
Пример 2: Для построения трёхмерных линий, задаваемых параметрически, применяется другая форма вызова функции plot3:
plot3( x, y, z )
где x, y и z являются одномерными массивами координат точек, которые и нужно последовательно соединить отрезками прямых. Например, следующий фрагмент кода
t = 0 : pi/50 : 10*pi ;
x = sin( t );
y = cos( t );
plot3( x , y , t );
grid on
даст график функции вида винтовой линии (см.рис.4.3)
Рис.4.3 - Винтовая линия (функция plot3)
Помимо этой простейшей функции система MATLAB располагает ещё рядом функций, позволяющих добиваться большей реалистичности в изображении трёхмерных графиков.
Пример 3: Применить функции mesh, surf.
Функция mesh(X,Y,Z) соединяет вычисленные соседние точки поверхности графика отрезками прямых и показывает в графическом окне системы MATLAB плоскую проекцию такого объёмного "каркасно-ребристого" ( по-английски зовётся wireframe mesh) тела. Вместо ранее показанного при помощи функции plot3 графика функции
Z(X,Y)=exp( - X.^2 - Y.^2 )
можно получить изображение, приведенное на рис.4.4
Рис.4.4 - Каракасно-ребристый вид изображения (функция mesh( X, Y, Z))
Для лучшего восприятия "объёмности" изображения разные рёбра автоматически окрашиваются в разные цвета. Кроме того (в отличие от функции plot3) осуществляется удаление невидимых линий. Если вы считаете, что изображённое ребристое тело является прозрачным и не должно скрывать задних линий, то можно ввести команду hidden off , после чего такие линии появятся на изображении.
Более плотного изображения поверхности можно добиться, если вместо функции mesh применить функцию surf( X, Y, Z ).
Рис.4.5 - Плотный непрозрачный вид сетчатой поверхности (функция surf( X, Y, Z )
В результате получается следующее изображение(см.рис. 4.5 ) представляющее плотную (непрозрачную) сетчатую поверхность, причём отдельные ячейки (грани) этой сетчатой поверхности (плоские четырёхугольники) автоматически окрашиваются в разные цвета.
Пример 4: Применить функции meshc, surfc, colorbar, colormap
Функции meshc, surfc строят каркасную поверхность или залитую цветом каркасную поверхность и размещают на плоскости ху линии уровня функции (линии постоянства значений функции). Команда colorbar позволяет установить соответствие между цветом и значением функции:
[x,y] = meshgrid([-2:.2:2]);
Z = x.*exp(-x.^2-y.^2);
surfс(x,y,Z)
colorbar
Рис. 4.7 – Соответствие цвета и значений функции
Фнкция colormap позволяет устанавливать цветовую палитру графического окна. Цветовые палитры, доступные в MatLab, смотрите в help colormap. Следующий пример демонтрирует, как подготовить график выше приведенной функции для печати на монохромном принтере, используя палитру gray.
surfс(x,y,Z);
colorbar;
colormap(‘gray’)
Для восстановления первоначального значения палитры следует применить команду
colormap(‘default’).
Оформление трёхмерных графиков
Многие приёмы оформления трёхмерных графиков совпадают с теми, что были рассмотрены при изучении плоских графиков функций одного переменного. В частности, для масштабирования удобно использовать функцию axis, которая в трёхмерном случае принимает уже три пары скалярных аргументов:
axis( [ xmin, xmax, ymin, ymax, zmin, zmax ] )
По-прежнему можно использовать функции text, xlabel, ylabel, zlabel, title, а также можно наносить отметки на осях координат с помощью функции set. Можно также с помощью функции subplot разместить в одном графическом окне несколько трёхмерных графиков.
Наконец, для трёхмерных графиков существует возможность изменять точку обзора графика, то есть положение условной камеры. Положение камеры опеределяется углом азимута (часто обозначают az) и углом возвышения (часто обозначают el). Изменение первого угла означает вращение плоскости xOy вокруг оси Oz против часовой стрелки. Угол возвышения есть угол между направлением на камеру и плоскостью xOy.
Когда выполняются функции mesh или surf, то по умолчанию устанавливаются значения az = -37.5°, el = 30°. Эти значения в любой момент времени можно изменить функцией
view( [ az , el ] )
где названия аргументов говорят сами за себя. В частности, если после построения показанного выше графика функции
