- •§ 2.2. Командное окно системы matlab
- •§ 2.3. Рабочее пространство системы matlab
- •§ 2.4. Скаляры и массивы. Индексированные переменные
- •§ 2.5. Форматы представления вещественных чисел
- •§ 2.6. Арифметические выражения
- •2.6.1. Некоторая специфика использования вещественных данных
- •2.6.2. Некоторая специфика использования комплексных данных
- •2.6.3. Некоторые приемы работы с матрицами и векторами
- •2.6.4. Некоторые специфика выполнения арифметических и логических операций.
- •§ 2.7. Элементарные математические функции
- •Часть 2. Визуализация результатов вычислений
- •§ 2.8. Особенности графической подсистемы matlab
- •§ 2.9. Построение графиков функций одной переменной
- •2.9.1. Простые графики в декартовой системе координат.
- •2.9.2. Визуализация нескольких графиков.
- •2.9.3. Функция fplot.
- •2.9.4. Построение графиков в логарифмическом и полулогарифмическом масштабах.
- •2.9.5. Построение графиков в полярных координатах.
- •§ 2.10. Оформление графиков и графических окон
- •2.10.1. Выбор свойств линий.
- •2.10.2. Оформление осей координат.
- •2.10.3. Добавление надписей, заголовков и координатной сетки.
- •§ 2.11. Средства управления в графическом окне
- •§ 2.12. Общее знакомство с трехмерной графикой в matlab
- •2.12.1. Общий алгоритм визуализации функций двух переменных.
- •2.12.2. Построение трехмерных линий.
- •2.12.3. Построение поверхностей.
- •2.12.4. Задание дополнительных параметров трехмерных графиков.
- •2.12.5. Построение линий уровня.
- •2.12.6. Построение траектории точки, движущейся в пространстве.
- •2.12.7. Интерактивное редактирование графиков.
- •Часть 3. Вычисления с действительными и комплексными массивами чисел
- •§ 2.13. Операции отношения и логические операции над числами
- •2.13.1. Операции отношения.
- •2.13.2. Логические операции.
- •2.13.3. Приоритет операций.
- •§ 2.14. Формирование одномерных числовых массивов
- •2.14.1. Задание одномерных массивов и доступ к их элементам.
- •2.14.2. Об ускорении операций задания массива.
- •2.14.3. Об использовании операции формирования диапазона.
- •§ 2.15. Матрицы и векторы. Двумерные массивы чисел
- •2.15.1. Создание матриц и векторов.
- •2.15.2. Доступ к отдельным фрагментам матриц.
- •2.15.3. Удаление строк и столбцов матрицы.
- •2.15.4. Использование функций перестановки частей матриц.
- •2.15.5. Определение размеров и размерностей массивов.
- •2.15.6. Использование операций индексации.
- •2.15.7. Изменение размеров массива.
- •2.15.8. Специальные функции формирования массивов.
- •§ 2.16. Вычисления с массивами
- •2.16.1. Поэлементные и групповые операции над массивами.
- •2.16.2. Решение некоторых типовых задач линейной алгебры и аналитической геометрии.
- •2.16.3. Применение операций отношения и логических операций к массивам.
- •2.16.4. Некоторые функции для работы с массивами.
- •Часть 4. Стандартные средства решения некоторых типовых задач линейной алгебры и математического анализа
- •§ 2.17. Решение систем линейных алгебраических уравнений
- •§ 2.18. Решение некоторых задач линейной алгебры. Матричные функции
- •§ 2.19. Разреженные матрицы
- •§ 2.20. Решение нелинейных уравнений
- •§ 2.21. Поиск минимального значения функции
- •§ 2.22. Численное интегрирование
- •2.22.1. Использование метода трапеций.
- •2.22.2. Использование методов Симпсона и Гаусса-Лобатто.
- •2.22.3. Вычисление двойных интегралов.
- •§ 2.23. Операции над полиномами
- •2.23.1. Вычисление значения полинома.
- •2.23.2. Вычисление корней полинома.
- •2.23.3. Умножение и деление полиномов.
- •2.23.4. Дифференцирование и интегрирование полиномов.
- •§ 2.24. Интерполяция и аппроксимация данных
- •2.24.1. Полиномиальная аппроксимация.
- •2.24.2. Интерполяция сплайнами.
- •Часть 5. Символьные вычисления
- •§ 2.25. Создание символьных переменных, выражений и матриц
- •2.25.1. Создание символьных переменных.
- •2.25.2. Создание символьных выражений.
- •2.25.3. Создание символьных матриц.
- •§ 2.26. Символьные вычисления
- •2.26.1. Символьное дифференцирование.
- •2.26.2. Вычисление пределов.
- •2.26.3. Символьное интегрирование.
- •2.26.3. Вычисление суммы ряда. Разложение функций в ряды.
- •2.26.4. Упрощение выражений. Подстановки.
- •2.26.5. Управление точностью вычислений.
- •2.26.6. Операции над векторами. Операции над матрицами. Некоторые операции линейной алгебры.
- •2.26.7. Решение уравнений и систем уравнений.
- •§ 2.27. Визуализация результатов символьных вычислений
- •2.27.1. Построение двумерных графиков.
- •2.27.2. Построение трехмерных графиков.
- •Часть 6. Основы программирования на m-языке
- •§ 2.28. Основные понятия программирования в системе matlab
- •2.28.1. Назначение языка программирования matlab.
- •2.28.2. Основные средства программирования.
- •2.28.3. Основные типы данных.
- •2.28.4. Виды программирования.
- •2.28.5. Двойственность операторов, команд и функций.
- •2.28.6. Некоторые ограничения.
- •§ 2.29. Создание и использование m-файлов
- •2.29.1. Понятие об m-файлах.
- •2.29.2. Типы m-файлов.
- •2.29.3. Создание файл-программ.
- •2.29.4. Создание файл-функций.
- •2.29.5. Глобализация переменных и функций.
- •2.29.6. Синтаксический контроль программ.
- •§ 2.30. Управляющие структуры
- •2.30.1. Понятие об управляющих структурах.
- •2.30.2. Операторы цикла.
- •2.30.3. Операторы ветвления.
- •2.30.4. Прочие операторы.
- •§ 2.31. Работа с файлами
- •2.31.1. Общие замечания.
- •2.31.2. Подготовка файла к работе.
- •2.31.3. Завершение работы с файлами.
- •2.31.4. Контроль за исчерпанием данных.
- •2.31.5. Чтение из текстового файла.
- •2.31.6. Анализ ошибок в файловых операциях.
- •§ 2.32. Форматный ввод-вывод данных
- •2.32.1. Форматные преобразования (sprintf, sscanf).
- •2.32.2. Форматные преобразования при работе с файлами (fprintf, fscanf).
- •§ 2.33. Рекурсивные файл-функции. Производительность файл-функций
- •2.33.1. Понятие о рекурсивных файл-функциях.
- •2.33.2. Оценка производительности файл-функции.
- •§ 2.34. Файл-функции с переменным числом входных параметров и выходных значений
- •§ 2.35. Диалоговые программы
- •2.35.1. Ввод числовых и символьных данных.
- •2.35.2. Вывод результатов вычислений.
- •§ 2.36. Анимационные эффекты
- •§ 2.37. Контроль входных и выходных параметров файл-функции
- •§ 2.38. Отладка программы
- •2.38.1. Понятие о способах отладки программы.
- •2.38.2. Рекомендации по созданию и отладке программ.
- •Часть 7. Создание программ с визуальным интерфейсом
- •§ 2.39. Понятие о графическом интерфейсе пользователя (gui)
- •2.39.1. Предварительные замечания.
- •2.39.2. Основные команды для создания gui.
- •§ 2.40. Общие сведения о визуальной среде guide
- •§ 2.41. Программирование событий в matlab
- •§ 2.42. Свойства основных компонентов в matlab
- •§ 2.43. Диалоговые окна в matlab
- •§ 2.44. Динамическое создание компонентов
- •§ 2.45. Создание меню
- •§ 2.46. Некоторые рекомендации по созданию приложений с графическим интерфейсом пользователя
2.12.3. Построение поверхностей.
Помимо этой простейшей команды система MATLAB располагает еще рядом функций, позволяющих добиваться большей реалистичности при визуализации трехмерных графиков. Это, в частности, функции mesh (применяется для построения каркасной поверхности (или иначе проволочного каркаса (wire frame)), который образуется путем соединения точек поверхности с ближайшими соседями отрезками прямых), surf (применяется для построения каркасной поверхности, каждая клетка которой закрашивается определенным цветом, что позволяет значительно улучшить восприятие поверхности) и surfl, порождающие графические объекты типа surface. Каждая такая функция допускает множество разных вариантов вызова, отличающихся наборами входных параметров, и возвращает указатель на созданный объект.
Рассмотрим в качестве важного характерного
примера задачу отображения функции
при
и
.
Для ее решения воспользуемся последовательно
функциями plot3,
mesh,
surf
и surfl
(соответствующие результаты представлены
на рис. 2.12.2-2.12.5):
>> x=-2:0.1:2;
>> y=-1:0.1:1;
>> [X,Y]=meshgrid(x,y);
>> Z=exp(-X.^2-Y.^2);
>> plot3(X,Y,Z);
>> hmesh=mesh(X,Y,Z)
>> figure
>> mesh(X,Y,Z);
>> figure
>> surf(X,Y,Z);
>> figure
>> surfl(X,Y,Z);
Как видно из текста представленной программы, дескриптор объекта surface, возвращенный функцией mesh, был занесен в переменную hmesh. Для получения информации о типе графического объекта может быть использована команда get:
>> get(hmesh,'Type')
ans =
surface
Поясним, что разные ребра для лучшего восприятия «объемности изображения» автоматически окрашиваются в разные цвета. Эти цвета соответствуют значениям функции (по умолчанию более высоким (большим по величине) значениям функции соответствуют оттенки красного цвета, а более низким (меньшим по величине) – синего). В общем случае действует следующий алгоритм выбора цвета для вершин, ребер и граней поверхности. Все отображаемые элементы упорядочиваются по возрастанию координаты z характерной точки (для вершины – это табличная точка, для ребра – аппликата середины, для грани – аппликата точки пересечения диагоналей). Затем им присваиваются так называемые индексы цвета (одинаковым значениям z присваивается один и тот же индекс) и по этом индексу выбираются компоненты цвета из массива colormap, установленного в данный момент графического окна (объект типа Figure). Если пользователя не уст-
Рис. 2.12.2. Визуализация поверхности с использованием функции plot3.
Рис. 2.12.3. Визуализация поверхности с использованием функции mesh.
Рис. 2.12.4. Визуализация поверхности с использованием функции surf.
Рис. 2.12.5. Визуализация поверхности с использованием функции surfl.
раивает выбор цвета по высоте аппликаты, при создании поверхности можно в список аргументов добавить еще один массив той же размерности, что и X, Y, Z, который сформирует свойства CData и изменит способ окраски элементов поверхности.
При использовании функций mesh, surf и surfl, в отличие от функции plot3, осуществляется удаление невидимых линий поверхности. При необходимости отобразить невидимые ребра (сделать отображаемую поверхность «прозрачной») следует выполнить команду
>> hidden off
Возможно, что при отображении очень простых фигур типа пирамид или параллелепипедов невидимые линии могут оказаться полезными, однако на насыщенном изображении их присутствие лишь затрудняет восприятие. Для выключения режима отображения невидимых ребер (отмены режима «прозрачности) необходимо выполнить команду
>> hidden on
При использовании функции surf линии (ребра между гранями) поверхности отображаются черным цветом, а цвет каждой клетки зависит от значения функции (высоты) в некоторой характерной точке этой клетки.
С помощью команды shading способ закраски может быть изменен. Данная команда допускает использование следующих трех режимов:
flat – отображение линий поверхности (ребер) скрыто;
interp – отображение линий поверхности скрыто (создается видимость сплошной поверхности), цвета между соседними элементами поверхности сглажены;
faceted – возвращение к виду поверхности, заданному по умолчанию.
Таким образом у пользователя имеется возможность отобразить каждый участок поверхности, ограниченный четырьмя точками, своим цветом и отобразить между ними черные ребра (если иное не задано в свойствах объекта при вызове функции surf).
Если к имени функции mesh
добавить букву c,
то можно построить каркасную поверхность
с линиями уровня функции,
спроектированными на плоскость
.
При использовании функции meshc
для решения задачи из предыдущего
примера будем иметь (рис. 2.12.6):
>> x=-2:0.1:2;
>> y=-1:0.1:1;
>> [X,Y]=meshgrid(x,y);
>> Z=exp(-X.^2-Y.^2);
>> meshc(X,Y,Z);
>> axis square;
Поясним, что команда (функция) axis square, задающая одинаковые размеры вдоль соответствующих осей координат (рис. 2.12.6).
Аналогично, если вместо функции surf применить функцию surfc, то можно построить закрашенную поверхность с линиями уровня, спроектированными на плоскость (рис. 2.12.7).
Рис. 2.12.6. Визуализация поверхности с использованием функции meshc.
Рис. 2.12.7. Визуализация поверхности с использованием функции surf.
>> x=-2:0.1:2;
>> y=-1:0.1:1;
>> [X,Y]=meshgrid(x,y);
>> Z=exp(-X.^2-Y.^2);
>> surfc(X,Y,Z);
