- •Основные понятия 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. Также для формирования арифметической прогрессии можно использовать
функцию linspace:
linspace (<нач. значение>,<кон. значение>,<кол. значений>)
Например, >>B=linspace(0,pi,5) B =
0 0.7854 1.5708 2.3562 3.1416
Для доступа к элементу вектора необходимо указать его имя и в круглых скобках номер элемента. Например, D(3). Для обращения к последнему элементу вектора, если неизвестна его длина, можно записать: D(length(D)) или D(end).
length – функция, определяющая размер вектора.
Задание матриц
При задании матриц данные строк записываются через пробел или через за-
пятую. Элементы разных строк разделяются знаком точка с запятой (;) или
записываются каждая с новой строки.
Зададим матрицу:
>>A=[1 2 3; 4 5 6;7 8 9]
A |
|
|
|
= |
|
|
|
1 |
2 |
|
3 |
4 |
5 |
|
6 |
7 |
8 |
|
9 |
ил |
|
|
|
и |
|
|
|
>> A=[1 |
2 |
3 |
|
|
4 |
5 |
6 |
|
7 |
8 |
9 |
|
|
|
] |
A = |
2 |
|
3 |
1 |
|
||
|
|
|
23
4 |
5 |
6 |
7 |
8 |
9 |
Как мы уже знаем, обращение к элементу матрицы будет иметь следующий
вид: <имя> (<индексы через запятую>), например, А(2,3).
Операции
Как уже говорилось, в ML можно не только выполнять обычные
арифметические операции над числами и вычислять значения функций, но и
производить операции над векторами и матрицами.
Для матриц Матлаб определяет операции: Сложение и вычитание матриц Умножение матрицы на число Умножение матрицы на матрицу Транспонирование, деление
Все арифметические операции являются “матричными” и
осуществляются по правилам матричной алгебры. При матричных операциях размеры матриц должны быть согласованы. При умножении матриц число столбцов первой матрицы должно быть равно числу строк второй.
Результат операций – матрица. (В ML возможно как выполнять операции поэлементной обработки, так и использовать операции, соответствующие правилам матричного исчисления.)
Кроме уже известных +, -, *, / и ^, в ML существуют операции
транспонирования (ʹ) и обратного деления (\).
Зададим исходные матрицы:
>> A=[1 2 3; 4 5 6]
A = |
|
|
1 |
2 |
3 |
4 |
5 |
6 |
>> B=[1 1 1; 1 1 1] |
||
B = |
|
|
1 |
1 |
1 |
1 |
1 |
1 |
Например, транспонирование
>> A'
24
ans =
14
25
36
>>C=B' C =
11
1 |
1 |
1 |
1 |
Если матрица содержит комплексные числа, то кроме транспонирования по
операции ʹ выполняется комплексное сопряжение элементов.
Сложение и вычитание (по правилам матричной алгебры – поэлементно)
>> |
|
|
% Размеры матриц должны |
|
E=A+B |
|
совпадать |
|
|
E = |
|
|
|
|
2 |
3 |
4 |
|
|
5 |
6 |
7 |
|
|
Умножение (по правилам матричной алгебры)
Умножение матриц. При умножении С=A*B должно выполняться условие: число столбцов матрицы A равно числу строк матрицы B:
A(n, m) * B(m, k) → C(n, k)
Элементы результирующей матрицы вычисляются по правилу: каждый элемент строки матрицы A умножается на соответствующий элемент столбца матрицы B, затем произведения складываются и получается один элемент матрицы С:
При использовании операций над матрицами (и векторами) необходимо соблюдать правила согласования их размеров. Например, можно перемножить матрицу A размера 2х3 на матрицу C размера 3х2, т.к. они согласованы по размеру, и получить в результате матрицу размера 2*2.
>> Y=A*C %Размеры матриц должны согласовываться
Y =
6 6
15 15
Если попытаться перемножить две матрицы в наших примерах, матрицу A
(размер 2х3) и матрицу B (размер 2х3), то будет выведено сообщение об ошибке:
>> X=A*B %размеры не согласованы
25
??? Error using ==> *
Inner matrix dimensions must agree.
Возведение в степень. Если возвести матрицу A в квадрат, то выдается
сообщение об ошибке.
>> Z=A^2 |
% A^2=A*A |
??? Error using ==> ^ Matrix must be square.
Матричное возведение в степень возможно только для квадратных мат-
риц.
Например,
>> Z=[1 2;3 4]
Z =
12
34
>>Z^2 ans =
710
15 22
Деление матрицы на матрицу невозможно.
При необходимости поэлементного выполнения операций над матрицами и векторами перед знаками операций ^, *, /, \ следует ставить точку: .^, .*, ./, .\
При поэлементном умножении матриц результат получается другой:
Например,
>> X=A.*B % Размеры матриц должны совпадать. У нас обе матрицы
одинакового размера 2х3.
X =
1 2 3
4 5 6
Поэлементное возведение в степень:
>> Z=A.^2
Z=
14 9
16 25 36
26
Транспонирование тоже бывает с точкой, тогда для комплексных чисел
оно выполняется без комплексного сопряжения.
Деление (правое и левое). В ML имеются две разновидности операции
деления матриц: правое (/) и левое (\).
Операция левого деления – это «обратное деление»
Правое (обычное) деление:
>> Z=A./B
Z =
1 |
2 |
3 |
4 |
5 |
6 |
Поэлементное обратное деление (.\) – деление 2-го операнда на первый.
Для наших матриц:
>> Z=B.\A
Z =
1 2 3
4 5 6
С помощью операции обратного деления решается система линейных
уравнений.
С векторами и матрицами – иначе. Пусть A – матрица, а Х – вектор. А * Х = В и Х * А= В – разные уравнения.
Для решения уравнения Х * А = В (вектор*матрица) используется обычное деление:
Х = B / A = В *А-1
Для решения уравнения А * Х = В (матрица*вектор) используется обратное деление:
Х = А \ В = А-1 * В
Операция обратного деления используется для решения системы линейных уравнений. Например:
2x1 + 3x2 = 11
3x1 – 4x2 = 8
A – матрица коэффициентов левой части. B – вектор правых частей. Решается уравнение вида A*X=B:
>>A=[2 3;3 -4];
>>B=[11 8 ];
27
Х=A\B' Х
=
4.0000
1.0000
Для проверки можно выполнить умножение A*X:
>> A*X ans =
11.0000
8.0000
В результате получили вектор правых частей, что доказывает правильность найденного решения.
Также возможно умножение и деление матрицы на число, результат –
матрица.
>> Z=2*A % Каждый элемент умножается на 2
Z = |
|
|
2 |
4 |
6 |
8 |
10 |
12 |
Операции отношения используются для поэлементного сравнения двух операндов (чисел, матриц, векторов одинакового размера). Результатом операции отношения может быть соответственно число, матрица или вектор, состоящие из элементов, обозначающих «истина» или «ложь». В ML это 1 и 0 соответственно:
>>A=[1 0 3; -2 5 -6];
>>B=[8 -9 1; 7 2 2];
>>A>B
ans = |
|
|
0 |
1 |
1 |
0 |
1 |
0 |
В результате получили матрицу, каждый элемент которой имеет значение
«истина» или «ложь»:
То же самое можно сказать о логических операциях. Логические операции могут использоваться для выполнения поэлементных логических операций над векторами и матрицами одинаковых размеров. К ним относятся логическое И (&),
логическое ИЛИ (|), логическое НЕ ( ).
28