Визуализация функций двух переменных

Программа MATLAB обладает широкими возможностями по построению трехмерных поверхностей и фигур. Эти возможности настолько разнообразны и сложны, что для их описания не хватило бы целой книги.

Аналогично процессу построения графика функции одной переменной, создание графиков функций двух переменных включает следующие основные этапы.

1.Задание массивов значений аргумента (в частности, формирование массивов, хранящих информацию о координатах узлов сетки на области определения функции).

2.Вычисление массива соответствующих значений функции.

3.Вызов специальной функции для вывода графика на экран.

4.Отображение на графике дополнительной информации (название графика, заголовки осей, соответствие цветов значениям функции, изменение палитры цветов и т.д.).

Трехмерным аналогом функции plot является функция plot3, которая позволяет создавать трехмерные линии. Если имеются три вектора х, у и z одинаковой длины, то в результате задания функции

plot3(x,y,z)

программа MATLAB построит трехмерную линию, координаты которой соответствуют элементам векторов х, у и z, и выполнит ее проектирование на плоскости, отобразив соответствующий график.

Если в качестве входных аргументов функции plot3 задать не векторы, а матрицы X, Y и Z одинаковых размеров, то данная функция отобразит целый набор линий в пространстве, количество которых будет соответствовать числу столбцов матриц.

Рассмотрим пример. Ввод следующих команд приводит к построению семейства линий, заданных функцией двух переменных . В данном коде реализован следующий алгоритм.

Сначала с помощью векторов х и у задается прямоугольная область определения, на которой нужно построить график функции z(x,y). Диапазон значений по оси х задан вектором х=-3:0.1:3, а диапазон значений по оси у — вектором у=-4:0.1:4.

Если разбить область определения равномерной сеткой (в данном случае с шагом 0,1), то для построения графика достаточно будет вычислить значения функции z(x,y) в узлах данной сетки, после чего можно будет вызвать графическую функцию для вывода изображения на экран.

С помощью специальной функции meshgrid на основе векторов х и у MATLAB формирует два двухмерных массива X и Y, в которые записывается информация о координатах узлов сетки. Массив X содержит одинаковые строки, в которых заданы координаты х, а массив Y содержит одинаковые столбцы с координатами у. Значения функции в каждом из узлов сетки записываются в массив Z, размерность которого равна размерности массивов X и Y.

1. Построить трехмерный график

>> x=-3:0.1:3;

y=-4:0.1:4;

[x,y]=meshgrid(x,y);

z=x.^2./9+y.^2./16;

plot3(x,y,z)

>>

 

2. Построить трехмерный график

>> x=-4:0.1:4;

>> y=-3:0.1:3;

>> [x,y]=meshgrid(x,y);

>> z=x.^2./16-y.^2./9;

>> plot3(x,y,z)

Обратите внимание, что в выражении, которым задается вычисление массива z, используются поэлементные матричные операции.

Для построения каркасной поверхности используется функция mesh (x,y,z). Цвет линий поверхности соответствует значениям функции. MATLAB рисует только видимую часть поверхности..

Команды hidden off делает каркасную поверхность «прозрачной», добавив скрытую часть. Команда hidden on убирает невидимую часть поверхности, возвращая графику прежний вид.

Функция surf (x,y,z) строит каркасную поверхность графика и заливает каждую клетку поверхности определенным цветом, зависящим от значения функции в точках соответствующим узлам клетки. В пределах каждой клетки цвет постоянный.

Команда shading flat убирает каркасные линии. Команда shading interp плавно заливает поверхность цветом, зависящим от значений функции. При помощи shading faceted возвращаемся к каркасной поверхности.

Команда colorbar выводит рядом с графиком столбик, устанавливающий соответствие между цветом и значением функции Эту команду можно применять в сочетании со всеми функциями, строящими трехмерные поверхности.

Команда meshc или surfc строят каркасную поверхность или залитую цветом каркасную поверхность и размещают на плоскости ху линии уровня функции (линии постоянства значений функции).

Команда contour3 (x,y,z, levels) строит поверхность состоящую из линий уровня. Её можно использовать и с тремя аргументами. При этом число линий уровня выбирается автоматически. Задание вектора удобно, когда нужно исследовать поведение функции в некоторой области её значений (срез функции).