Построение графиков функций двух переменных в Matlab
Построение графика функции двух переменных в MatLab на прямоугольной области определения переменных включает два предварительных этапа:
Построим график функции z(x, у)=х2 + у2 на области определения в виде квадрата х є [0, 1], y є [0, 1]. Необходимо разбить квадрат равномерной сеткой (например, с шагом 0.2) и вычислить значения функций в узлах, обозначенных точками. Удобно использовать два двумерных массива х и у, размерностью шесть на шесть для хранения информации о координатах узлов. Массив х состоит из одинаковых строк, в которых записаны координаты x1, х2, ..., х6, а массив у содержит одинаковые столбцы с y1, у2, ..., у6. Значения функции в узлах сетки запишем в массив z такой же размерности (6 х 6), причем для вычисления матрицы Z используем выражение для функции, но с поэлементными матричными операциями. Тогда, например z(3,4) как раз будет равно значению функции z(x,y)в точке (х3, у4). Для генерации массивов сетки х и у по координатам узлов в MatLab предусмотрена функция meshgrid, для построения графика в виде каркасной поверхности - функция mesh. Следующие операторы приводят к появлению на экране окна с графиком функции (точка с запятой в конце операторов не ставится для того, чтобы проконтролировать генерацию массивов): » [X, У] = meshgrid(0:0.2:1,0:0.2:1) » Z = X.^2+Y.^2 Z = » mesh(X,Y,Z) Какие недостатки имеет построенный график? И как их устранить? Построенный график и новый привести в электронном отчете по лабораторной работе. MatLab позволяет наносить на график дополнительную информацию, в частности, соответствие цветов значениям функции. Сетка генерируется при помощи команды meshgrid, вызываемой с двумя аргументами. Аргументами являются векторы, элементы которых соответствуют сетке на прямоугольной области построения функции. Можно использовать один аргумент, если область построения функции - квадрат. Для вычисления функции следует использовать поэлементные операции. на прямоугольной области определения х є [-1,1], y є [0, 1]. Подготовим матрицы с координатами узлов сетки и значениями функции: » [X, Y] = meshgrid(-1:0.05:1, 0:0.05:1); Для построения каркасной поверхности используется функция mesh, вызываемая с тремя аргументами: » mesh(X,Y,Z) Цвет линий поверхности соответствует значениям функции. MatLab рисует только видимую часть поверхности. Функция surf строит каркасную поверхность графика функции и заливает каждую клетку поверхности определенным цветом, зависящим от значений функции в точках, соответствующих углам клетки. В пределах каждой клетки цвет постоянный. Посмотрите результаты выполнения команды » surf(X,Y,Z) Команда shading flat позволяет убирать каркасные линии. Для получения поверхности, плавно залитой цветом, зависящим от значений функции, предназначена команда shading interp. При помощи shading faceted можно вернуться к поверхности с каркасными линиями. Трехмерные графики, получаемые с помощью описанных выше команд, удобны для получения представления о форме поверхности, однако по ним трудно судить о значениях функции. В MatLab определена команда colorbar, которая выводит рядом с графиком столбик, устанавливающий соответствие между цветом и значением функции. Постройте при помощи surf график поверхности и дополните его информацией о цвете. » surf(X,Y,Z) Команду colorbar можно применять в сочетании со всеми функциями, строящими трехмерные объекты. Пользуясь цветной поверхностью, трудно сделать вывод о значении функции в той или иной точке плоскости xy. Команды meshc или surfc позволяют получить более точное представление о поведении функции. Эти команды строят каркасную поверхность или залитую цветом каркасную поверхность и размещают на плоскости xyлинии уровня функции (линии постоянства значений функции): » surfc(X,Y,Z) MatLab позволяет построить поверхность, состоящую из линий уровня, при помощи функции contour3. Эту функцию можно использовать так же, как и описанные выше mesh, surf, meshc и surfc с тремя аргументами. При этом число линий уровня выбирается автоматически. Имеется возможность задать четвертым аргументом в contour3 либо число линий уровня, либо вектор, элементы которого равны значениям функции, отображаемым в виде линий уровня. Задание вектора (четвертого аргумента levels) удобно, когда требуется исследовать поведение функции в некоторой области ее значений (срез функции). Постройте, например поверхность, состоящую из линий уровня, соответствующих значениям функции от 0 до 0.5 с шагом 0.01: » levels = [0:0.01:0.5]; |