- •Введение
- •Лабораторная работа ип1 Знакомство с Matlab
- •1. Рабочая среда Matlab
- •2. Данные Matlab
- •Типы данных
- •Числовые константы
- •Символьные константы
- •Переменные
- •3. Выражения
- •3.1. Арифметические выражения
- •3.2. Логические выражения
- •3.3. Порядок вычисления выражений
- •4. Сообщения об ошибках и исправление ошибок
- •5. Завершение вычислений
- •6. Завершение работы с системой
- •7. Резюме
- •8. Контрольные вопросы
- •9. Индивидуальные задания
- •Лабораторная работа ип2 работа с матрицами в matlab
- •1. Общие сведения
- •2. Одномерные массивы – векторы
- •3. Двумерные массивы – матрицы
- •4. Использование двоеточия
- •4.1. Автозаполнение
- •4.2. Индексация
- •5. Поэлементные и матричные операции
- •6. Стандартные функции для работы с матрицами
- •7. Логическое индексирование
- •8. Контрольные вопросы
- •9. Индивидуальные задания
- •10. Упражнения
- •2. Диалоговый ввод/вывод
- •3. Управление последовательностью исполнения операторов
- •3.1. Оператор условия if
- •3.2. Оператор переключения
- •3.3. Оператор цикла с определенным числом повторений
- •3.4. Оператор цикла с неопределенным числом повторений
- •4. Контрольные вопросы
- •5. Индивидуальные задания
- •Лабораторная работа ип4 визуализация данных в matlab
- •1. Общие сведения
- •2. Построение таблицы значений функции
- •3. Двумерная графика
- •3.1. Общие правила построения графиков
- •3.2. Оформление графиков
- •3.3. Построение графиков
- •3.4. Управление свойствами графиков
- •4. Трехмерная графика
- •4.1. Общие принципы построения трехмерных графиков
- •4.2. Построение трехмерных графиков
- •4.3. Управление свойствами трехмерных графиков
- •5. Контрольные вопросы
- •6. Индивидуальные задания
- •Лабораторная работа ип5 файл-функции
- •2. Описание m-функции
- •3. Обращение к m-функции
- •4. Параметры-функции
- •5. Разновидности m-функций
- •5.1. Подфункции
- •5.2. Вложенные функции
- •6. Контрольные вопросы
- •7. Индивидуальные задания
- •2. Аппроксимация
- •2.1. Моделирование полиномом по методу
- •2.2. Аппроксимация произвольной функцией
- •3. Интерполяция
- •3.1. Кусочная интерполяция
- •3.2. Кубические сплайны
- •3.3. Интерполяция произвольной нелинейной функцией
- •4. Контрольные вопросы
- •5. Индивидуальные задания
- •Лабораторная работа ип7 Вычисление функций разложением в ряд
- •1. Общие сведения
- •2. Индивидуальное задание
- •Лабораторная работа ип8 Решение нелинейных уравнений в среде Matlab
- •1. Общие сведения
- •2. Поиск корней полиномов
- •3. Решение одного нелинейного уравнения
- •4. Решение систем нелинейных уравнений
- •5. Контрольные вопросы
- •6. Индивидуальные задания
- •Лабораторная работа ип9 обмен данными с текстовым файлом
- •1. Общие сведения
- •2. Открытие файла
- •3. Запись в текстовый файл
- •3.1. Запись строковых значений
- •3.2. Запись числовых значений
- •4. Чтение из текстового файла
- •4.1. Последовательное чтение строк
- •4.2. Последовательное чтение нескольких символов
- •4.3. Чтение чисел из текстового файла
- •4.4. Альтернативный доступ к текстовому файлу
- •5. Закрытие файла
- •6. Контрольные вопросы
- •7. Индивидуальные задания
- •Заключение
- •Список рекомендуемой литературы
- •Программирование в matlab
- •428015 Чебоксары, Московский просп., 15
4. Трехмерная графика
Трехмерная графика предназначена для построения на плоскости графиков функций двух переменных (двух аргументов) . Список функций, используемых в двумерной графике, может быть выведен в Command Window по команде
help graph3d.
4.1. Общие принципы построения трехмерных графиков
При построении в трехмерном пространстве графиков функций двух переменных соблюдаются следующие общие правила:
1) если z – вектор, то будем иметь один график функции z аргументов х и у;
2) если z – матрица, то будем иметь графики функций, заданных столбцами матрицы z, аргументов х и у;
3) перед построением трехмерных графиков необходимо выполнить формирование сетки на плоскости ХОУ по заданным значениям аргументов функции х и у. Сетка формируется из вспомогательных матриц Х и У по известным векторам х и у. Х – матрица, строки которой – копии вектора х, У – матрица, столбцы которой – копии вектора у. Матрицы Х и У должны иметь одинаковые размеры: число строк каждой из них должно быть равно длине вектора у, а столбцов – длине вектора х. Для формирования сетки удобнее всего использовать специальную функцию
[X, Y]=meshgrid(x,y);
Если область определения и шаг значений переменных х и у одинаковы, то допускается короткий формат
[X, Y]=meshgrid(x);
Задавая шаг сетки, следует помнить, что при построении сетчатых графиков выполняется линейная интерполяция. Ранее, при обсуждении правил построения двумерных графиков, был приведен пример последствий неверно заданного размера (большого) шага (см. рис. 4.4). Аналогичные неприятности могут возникнуть и при 3D-рисовании графиков.
4.2. Построение трехмерных графиков
Matlab предоставляет пользователю большое разнообразие функций построения трехмерных графиков (поверхностей). Основные из низ приведены в табл. 4.5. Сетчатые поверхности (каркасные графики) отображаются с автоматическим нанесением сеток. Для функций возможно применение параметров Linespec и PropertyName управления свойствами графиков (см. разд. 3.4).
Таблица 4.5
Функция |
Формат использования |
Назначение |
plot3 |
plot3(x,y,z) x, y – матрицы, формирующие сетку; z – вектор или матрица значений функции в узлах сетки |
Трехмерный график в виде двумерных линий |
mesh |
mesh(x,y,z) |
Трехмерный сетчатый график |
meshс |
meshс(x,y,z) |
Трехмерный сетчатый график с горизонталями (проекциями сечения поверхности на плоскость ХОУ) |
meshz |
meshz(x,y,z) |
Трехмерный сетчатый график с вертикальными плоскостями ("занавесками") |
surf |
surf(x,y,z) |
Трехмерный сетчатый график с окрашиванием поверхности |
surfl |
surfl(x,y,z,'light') параметр 'light' указывает на подсветку (может отсутствовать) |
Трехмерный сетчатый график с окрашиванием поверхности и подсветкой |
surfс |
surfс(x,y,z) |
Трехмерный сетчатый график с окрашиванием поверхности и горизонталями |
contour3 |
contour3(x,y,z,n) n – количество линий уровня (может выбираться автоматически) |
Трехмерный график в виде линий уровня (контурных линий) |
Пример: пусть требуется построить график функции двух переменных для . Реализуем построения в режиме прямых вычислений.
В окне Command Window выполним следующую последовательность команд:
>> [X,Y]=meshgrid(-2.5:0.1:2.5);
>> Z=(X.^2-3).^2+(Y.^2-3).^2;
>> plot3(X,Y,Z)
>> grid, title('График функции y=(х1^2-3)^2+(x2^2-3)^2')
>> xlabel('x1'), ylabel('x2')
>> zlabel('y(x1,x2)')
Результат – трехмерный график в виде двумерных линий приведен на рис. 4.8, а. На рис. 4.8, б показан график той же самой функции, построенный функцией meshc.
а б
Рис. 4.8. Использование функций трехмерной графики:
а – plot3; б – meshc
Сетчатая поверхность (рис. 4.8, б) является более информативной: ячейки сетки деформируются в соответствии с изгибами поверхности и цвет позволяет судить о значениях функции – бóльшие значения окрашены в теплые цвета (красная гамма), меньшие – в холодные (синяя гамма). Кроме того, снизу показаны проекции сечений поверхности на плоскость ХОУ. Недостатком изображений на рис. 4.8 является то, что затруднительно определить значения функции и аргументов. Выход может быть найден при помощи контурных графиков (табл. 4.6).
Например, для функции из предыдущего примера можно получить дополнительную информацию, рассчитав линии уровня и построив их на плоскости.
Таблица 4.6
Функция |
Формат использования |
Назначение |
contour |
contour(x,y,z,n) |
Рисование n линий уровня (n может не задаваться) |
contourf |
contourf(x,y,z,n) |
Рисование n линий уровня с заливкой промежутков между ними цветами, соответствующими значениям исследуемой функции |
clabel |
clabel(cs,h) cs – матрица с информацией о линиях уровня; h – указатели, которые можно получить как [cs, h]=contour(x,y,z) |
Рисование линий уровня с указанием для каждой значения функции |
>> [cs, h]=contour(X,Y,Z);
>> clabel(cs,h)
>> grid
>> title('Линии уровня функции у=(х1^2-3)^2+(х2^2-3)^2')
>> xlabel('x1'), ylabel('x2')
Результат показан на рис. 4.9 (число линий уровня определяется по умолчанию).
Рис. 4.9. Маркированные линии уровня