русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Построение графиков функций двух переменных в Matlab

Построение графика функции двух переменных в MatLab на прямоугольной области определения переменных включает два предварительных этапа:

1. Разбиение области определения прямоугольной сеткой.
2. Вычисление значений функции в точках пересечения линий сетки и запись их в матрицу.

Построим график функции  z(x, у)= х2 + у2  на области определения в виде квадрата  х є [0, 1], є [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)
X =
0  0.2000  0.4000  0.6000  0.8000  1.0000
0  0.2000  0.4000  0.6000  0.8000  1.0000
0  0.2000  0.4000  0.6000  0.8000  1.0000
0  0.2000  0.4000  0.6000  0.8000  1.0000
0  0.2000  0.4000  0.6000  0.8000  1.0000
0  0.2000  0.4000  0.6000  0.8000  1.0000
y =
0       0       0       0       0       0
0.2000  0.2000  0.2000  0.2000  0.2000  0.2000
0.4000  0.4000  0.4000  0.4000  0.4000  0.4000
0.6000  0.6000  0.6000  0.6000  0.6000  0.6000
0.8000  0.8000  0.8000  0.8000  0.8000  0.8000
1.0000  1.0000  1.0000  1.0000  1.0000  1.0000

» Z = X.^2+Y.^2

Z =
0  0.0400  0.1600  0.3600  0.6400  1.0000
0.0400  0.0800  0.2000  0.4000  0.6800  1.0400
0.1600  0.2000  0.3200  0.5200  0.8000  1.1600
0.3600  0.4000  0.5200  0.7200  1.0000  1.3600
0.6400  0.6800  0.8000  1.0000  1.2800  1.6400
1.0000  1.0400  1.1600  1.3600  1.6400  2.0000

» mesh(X,Y,Z)

Какие недостатки имеет построенный график? И как их устранить? Построенный график и новый привести в электронном отчете по лабораторной работе.

MatLab позволяет наносить на график дополнительную информацию, в частности, соответствие цветов значениям функции. Сетка генерируется при помощи команды meshgrid, вызываемой с двумя аргументами. Аргументами являются векторы, элементы которых соответствуют сетке на прямоугольной области построения функции. Можно использовать один аргумент, если область построения функции - квадрат. Для вычисления функции следует использовать поэлементные операции.
Рассмотрим основные возможности, предоставляемые MatLab для визуализации функций двух переменных, на примере построения графика функции

Пример построения графика функции в матлаб

на прямоугольной области определения  х є [-1,1],   y є [0, 1].

Подготовим матрицы с координатами узлов сетки и значениями функции:

» [X, Y] = meshgrid(-1:0.05:1, 0:0.05:1);
» Z = 4*sin(2*pi*X).*cos(1.5*pi*Y).*(1-Х.^2).*Y.*(1-Y);

Для построения каркасной поверхности используется функция mesh, вызываемая с тремя аргументами:

» mesh(X,Y,Z)

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

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

» surf(X,Y,Z)

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

При помощи shading faceted можно вернуться к поверхности с каркасными линиями.

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

» surf(X,Y,Z)
» colorbar

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

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

» surfc(X,Y,Z)
» colorbar

MatLab позволяет построить поверхность, состоящую из линий уровня, при помощи функции contour3. Эту функцию можно использовать так же, как и описанные выше mesh, surf, meshc и surfc с тремя аргументами. При этом число линий уровня выбирается автоматически. Имеется возможность задать четвертым аргументом в contour3 либо число линий уровня, либо вектор, элементы которого равны значениям функции, отображаемым в виде линий уровня. Задание вектора (четвертого аргумента levels) удобно, когда требуется исследовать поведение функции в некоторой области ее значений (срез функции). Постройте, например поверхность, состоящую из линий уровня, соответствующих значениям функции от  0  до  0.5  с  шагом  0.01:

» levels = [0:0.01:0.5];
» contour3(X, Y, Z, levels)
» colorbar

Просмотров: 21104

Вернуться воглавление


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.