- •Основные понятия Matlab
- •ВЫЧИСЛЕНИЯ
- •Особенности ввода команд и данных
- •Элементы данных в ML
- •Переменные в ML
- •Выражения
- •ОПЕРАЦИИ
- •Простейшие арифметические операции (АО)
- •Операции отношения
- •Логические операции
- •Приоритет элементарных операций в ML
- •Основные математические функции MatLab
- •Ввод и вывод информации. Операторы ввода/вывода
- •<имя переменной>= input(<текст>)
- •Для этого используют несколько способов.
- •disp(strcat('x=', num2str(x)))
- •y=sprintf('x=%3.1f ', x)
- •%[флаг][ширина поля вывода][точность] тип (спецификатор) формата
- •x=<значение>; y=<значение>; z=<значение>;
- •>> sprintf('x=%4.2f; y=%5.3f; z=%d;',x,y,z)
- •Условный оператор
- •МНОЖЕСТВЕННЫЙ ВЫБОР
- •Определенные циклы
- •Неопределенные циклы
- •ЗАДАНИЕ И ОБРАБОТКА ВЕКТОРОВ И МАТРИЦ
- •Способы задания векторов
- •<имя пер.>=[<значение1> <значение2> ….<значениеN>]
- •<имя пер.>=<нач. значение>:<шаг>:<конечное значение>
- •linspace (<нач. значение>,<кон. значение>,<кол. значений>)
- •Задание матриц
- •Операции
- •Операции над векторами – то же самое
- •Поэлементные операции
- •ОСОБЫЕ МАТРИЦЫ
- •Матрица случайных чисел:
- •Автоматическое заполнение матриц. Формирование матрицы блоками
- •>> X=[eye(4), 3*ones(4); 5*ones(4),9*eye(4)]
- •Дополнительно из задач
- •Применение функций обработки данных к векторам и матрицам
- •>> help datafun
- •Функции для векторов
- •Для матриц
- •Сумма элементов в столбцах матрицы:
- •Сумма элементов в строках матрицы:
- •Сумма элементов вектора:
- •Получение из матрицы вектора
- •Произведение элементов матрицы по столбцам:
- •Произведение элементов матрицы по строкам:
- •Максимальное значение в каждом столбце:
- •Максимальное значение в каждой строке:
- •Максимум во всей матрице
- •Наименьшее значение:
- •Среднее значение
- •Среднее арифметическое в столбцах. Результат – вектор-строка из средних арифметических в каждом столбце:
- •В строках
- •Сортировка.
- •по убыванию:
- •по убыванию
- •’’Зеркальное’’ отображение матрицы относительно вертикальной оси:
- •’’Зеркальное’’ отображение матрицы относительно горизонтальной оси:
- •Примеры использования
- •среднего и суммы:
- •Для матрицы:
- •Найти наибольшее значение среди элементов <8
- •Для матрицы
- •Сумму элементов побочной диагонали
- •Сумму элементов главной диагонали
- •Нормы матрицы
- •>> max_stolb=max(sum(abs(В)))
- •Найти среднее арифметическое в каждом столбце
- •Пр. Удалить максимальный элемент в векторе
- •Пр. Вставить значение 100 в вектор после элемента с номером k=3
- •Пр. В матрице поменять местами столбцы с минимальным и максимальным элементами.
- •[m_min,jmin]=min(min(b));
- •[m_max,jmax]=max(max(b));
- •buf=b(:, jmin);
- •Пр. Поменять порядок следования элементов в векторе
- •Еще полезные функции all, any и find и их использование
- •Для вектора
- •Получить индексы элементов, равных 2
- •Графика ML
- •Построение простейших графиков функций одной переменной Графики параметрических и кусочно-заданных функций
- •Plot(x, y, ‘<тип маркера, обозначение цвета и тип линий>’)
- •Отображение нескольких кривых на одном графике (в одних осях)
- •hold off
- •Вывод нескольких графиков в одном графическом окне
- •subplot(m, n, p),
- •Изменение масштаба графика
- •Диаграммы
- •Трехмерные графики
- •Т=-2:0.01:2; % задали вектор значений аргумента
- •Построение поверхности в 3-мерном пространстве
- •% Поверхность z=f(x,y)
- •Решение типовых математических задач
- •Файлы функций
- •function [рез.1, рез.2…рез.N] = <имя функции> (пар.1, пар.2,…пар.N)
- •[y1, y2,…,yn]=<имя функции>(<список вх. факт. параметров>)
- •<имя функции>(<список входных фактических параметров>)
- •function <имя функции> (пар.1, пар.2,…пар.n)
- •Отличия файла-функции от скрипт-файла
- •Примеры
- •function y=mysin(x)
- •Пример функции с 3 выходными параметрами
- •Использование функций для задач вычислительной математики
- •Построение графика функций
- •Действия с полиномами (многочленами)
- •Решение системы линейных уравнений.
- •Численное интегрирование
- •[i, n]=quadl (fun, a, b, tol, trace),
- •Решение уравнений
- •Нахождение минимума функции на заданном отрезке
- •Функция eval
- •Файл меню
- •while k~=6
- •Символьные вычисления в ML
- •Преобразование символьных выражений
- •Построение графиков символьных функций
- •Решение уравнений и систем
- •Решение дифференциальных уравнений и систем
- •Вычисление пределов
- •Определение производной
- •Вычисление интеграла
этих матриц дает координаты узлов сетки, определяющей прямоугольную
область, на которой строится 3-мерный график.
3)Затем вычисляются значения функции в узлах, которые записываются в матрицу Z. Её размер будет равен произведению количества значений первого вектора на количество значений второго.
4)Для вычерчивания каркасных поверхностей в трехмерном пространстве существуют несколько функций, основные: meshи surf.
Команда mesh(Z) строит прозрачную сетчатую поверхность, а
команда surf(Z) –непрозрачную (сплошную) поверхность, где Z – матрица,
значения элементов которой определяют соответствующие координаты на
графике.
При использовании этих функций цветом указывается уровень точки
по оси Oz: от самого малого значения (синего) до самого большого (красно-
го) и производится удаление «невидимых» линий. Это позволяет лучше визуально оценивать структуру трехмерного графика по сравнению с
функцией plot3().
Построим поверхность (седлообразную) по формуле: z=x2-y2 для х, y
=(-2,2).
Вектора х =y = -2:0.1:2
C помощью функции meshgrid cформируем матрицы X и Y: [X, Y]=
meshgrid (x,y)
Вектора можно задать в отдельных переменных, например, x и y (x =-2: 0.1: 2; y =-2 : 0.1 :2;) или значения векторов указать прямо внутри команды, записав [X, Y]= meshgrid(-2:0.1:2,-2:0.1:2).
В случае, когда оба вектора одинаковые, то можно записать:
[X, Y]= meshgrid(x). Запишем такую последовательность команд в скриптфайл:
% Поверхность z=f(x,y)
% z=x^2-y^2
[X,Y]=meshgrid (-2:0.1:2,-
4
2:0.1:2); Z=X.^2-Y.^2;
mesh(X,Y,Z)
Получаем картинку с сетчатой цветной поверхностью. Линии на разных участках графика окрашены в разные цвета в зависимости от
значений функции. По умолчанию оттенки красного цвета соответствуют большим значениям функции, а синего – меньшим.
На основе исходных векторов x и y формируются две матрицы, в
которые записываются координаты узлов сетки. Матрица X содержит одинаковые строки, в которых заданы координаты X. Матрица Y содержит одинаковые столбцы, в которых заданы координаты Y. Наложение матриц X
и Y позволяет получить пары (xi и yj), для которых в дальнейшем вычисляется значение функции Z. Значения функции в узлах сетки записываются в матрицу Z, размерность которой равна размерности матриц
X и Y.
С использованием функции mesh графики получаются наглядными.
Вместо команды mesh можно использовать команду plot3, но тогда поверхность получается менее красивой.
Можно сделать “прозрачной” каркасную поверхность, отобразив ее скрытые части, применив команду hidden off (видна задняя стенка). Отмена
– hidden on.
5
[X,Y]=meshgrid (-2:0.1:2,-2:0.1:2); Z=X.^2-
Y.^2;
figure(1)
mesh(X,Y,Z)
figure(2)
mesh(X,Y,Z)
hidden off % делает прозрачной прверхность
Можно использовать команду surf, и тогда картинка еще более красочная.
[X,Y]=meshgrid (-2:0.1:2,-2:0.1:2); Z=X.^2-
Y.^2;
surf(X,Y,Z)
Для дополнительного оформления трёхмерных графиков можно использовать функции meshz и meshc, а
также функцию surfc. Использование функции meshz позволяет построить
"график с пьедесталом или, как еще говорят, с подложкой". Функции с суффиксом c помимо трёхмерного графика
строят ещё и линии уровня (линии под графиком). График, построенный функцией meshz (с подложкой):
В системе ML существуют множество вариантов настройки графиков.
Они могут выполняться с помощью опций интерфейса, либо с помощью команд. Все трехмерные графики, которые мы строили, можно было видеть только из одной точки обзора, т.е. позиции, с которой мы видим трехмерное изображение.
В ML можно изменять точку обзора. Эта точка характеризуется двумя параметрами: азимутом (Az) и углом возвышения (El). Азимут определяет угол поворота вокруг оси z и отсчитывается от оси, противоположной y, в
направлении против часовой стрелки. Угол возвышения – это угол между отрезком, направленным из начала координат в точку обзора, и
плоскостью xOy. Когда выполняются функции mesh или surf, то по умолчанию устанавливаются значения az = -37.5°, el = 30°.
Точку обзора можно менять командой view (Az,El) или, что более просто, используя специальную кнопку на панели инструментов графического окна Figure – Rotate 3D. Например, выведем нашу поверхность в 2-х вертикальных окнах с разными значениями азимутального угла и угла возвышения (полярного).
X,Y]=meshgrid (-2:0.1:2,-2:0.1:2); Z=X.^2-Y.^2; subplot(2,1,1);
surf(X,Y,Z); view([0 30]);
title('угол 0- 30') subplot(2,1,2); surf(X,Y,Z);
view([60 40]); title('угол 60-40')
Контуринг:
ezcontour('-5*x/(x^2+y^2+1)',[-3 3 -3 3])
По умолчанию: –2π < x < 2π, –2π < y <
2π
quiver - График полей градиента или скоростей;
[px, py] = gradient(F) вычисляет конечные разности функции F(x, y), заданной на двумерной сетке и представляющей собой массив чисел.
Contour - двумерные линии уровня для массива данных Z
peaks это функция двух переменных, полученная путем перевода и масштабирования гауссовских распределений, что полезно для демонстрацииmesh, surf, pcolor, contour, and so on.
bar3h чертит 3D горизонтальные диаграммы.
8