- •Основные понятия 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
- •Преобразование символьных выражений
- •Построение графиков символьных функций
- •Решение уравнений и систем
- •Решение дифференциальных уравнений и систем
- •Вычисление пределов
- •Определение производной
- •Вычисление интеграла
Вектора и матрицы можно использовать как аргументы элементарных математических функций. Например, sin(X). Результатом будет вектор или матрица, элементы которого будут равны значению sin соответствующего
элемента исходного вектора или матрицы. Элементарные функции от матриц
вычисляются поэлементно.
>> F=log(A)
F = |
|
|
0 |
0.69 |
1.09 |
3186
>>E=2*sin(A.^2)
E =
1.6829 -1.5136 0.8242 -0.5758 -0.2647 -1.9836
Таким образом, над матрицами возможны поэлементные операции и матричные, соответствующими правилам матричного исчисления. При поэлементном умножении и делении, матрицы должны быть одинаковых размеров. При матричных операциях их размеры должны быть согласованы. Результат операций – матрица.
Операции над векторами – то же самое
Поскольку вектор в Матлабе рассматривается как матрица из одной строки
или одного |
столбца, то над векторами возможны те же операции, |
что и над |
|||||||
матрицами, |
и для их |
выполнения также |
необходимо |
согласование |
размеров |
||||
векторов. |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
Векторное исчисление |
предусматривает следующие |
операции над |
||||||
|
|
|
|
|
|
||||
векторами: |
сложение |
и вычитание |
|
векторов |
одинакового |
размера, |
транспонирование векторов, умножение и деление вектора на число, вектора на
вектор (одинакового размера, если один из них вектор–столбец, другой – вектор–
строка или наоборот), скалярное и векторное произведение векторов. (векторное
произведение выполняется для векторов длиной 3)
Операция + и - определена только для сложения/ вычитания одинаковых векторов (можно суммировать или вычитать вектор - строки или вектор –
столбцы одинаковой длины).
29
Зададим 2 вектора:
>>X=[1 2 3]; %Исходные данные
>>Y=[4 5 6];
>>X+Y
ans =
5 7 9
Транспонирование
>>X'
ans = 1 2 3
Умножение вектора на число осуществляется обычной операцией *
>>b=5;
>>X*b
ans =
5 10 15
>> b*X
ans =
5 10 15
Деление вектора на число производится операцией обычного деления (/).
Деление числа на вектор невозможно.
>> X/b
ans =
0.2000 0.4000 0.6000
При делении числа на векторошибка
>> b/X
??? Error using ==> mldivide Matrix dimensions must agree.
Произведение 2-х векторов в математике можно вычислить только если
они имеют одинаковую длину. Если один вектор-строка, а другой вектор-
столбец, то результат – число;
Скалярное произведение
30
>> X*Y' % Скалярное произведение векторов - сумма произведений
элементов с одинаковыми номерами (X1*Y1+X2*Y2+…)
ans = 32
Для вычисления скалярного произведение векторов X и Y можно
воспользоваться функцией sum.
>> sum(X.*Y)
ans = 32
При умножении вектора-столбца на вектор-строку результат – матрица
>> X'*Y
ans = |
|
|
4 |
5 |
6 |
8 |
10 |
12 |
12 |
15 |
18 |
Умножение вектора-строки на вектор-строку приводит к ошибке
>> X*Y
??? Error using ==> *
Inner matrix dimensions must agree.
Для векторов из 3-х элементов можно вычислить векторное произведение.
>> cross(X,Y)
ans =
-3 6 -3
Поэлементные операции
Все поэлементные операции выполняются только над векторами
одинакового размера.
Выполнение операции Х^2 невозможно, т.к. Х^2=Х*Х, а умножать можно только строку на столбец или столбец на строку.
Возведение в степень возможно только поэлементное Х.^2
>> X.^2
ans =
1 4 9
Результатом поэлементного умножения векторов является вектор из произведения соответствующих элементов исходных векторов.
31
>>A=[1 2 3];
>>B=[5 6 7];
>>A.*B
ans =
5 12 21
При попытке использовать обычное умножение – ошибка.
>> A*B
??? Error using ==> mtimes
Inner matrix dimensions must agree.
При умножении вектора на число:
>> A.*2 ans =
2 4 6
Деление (./)
>>A=[10 20 30];
>>B=[5 4 6];
>>A./B
ans =
2 5 5
Обратное деление (второго вектора на первый)
>>A=[10 20 30];
>>B=[5 4 6];
>>A.\B
ans =
0.5000 0.2000 0.2000
Возведение в степень
Возведем каждый элемент вектора в квадрат
>>B=[5 4 6];
>>B.^2
ans =
25 16 36
В данном случае каждый элемент исходного вектора возводится в квадрат. Выполнение команды B ^ 2 (без точки перед возведением в степень) невозможно,
так как это противоречит правилам матричной алгебры. На экране будет:
??? Error using ==> mpower
Inputs must be a scalar and a square matrix.
Сложение и вычитание Эти операции не требуют точки перед знаком операции.
>>B=[5 4 6];
>>B+2
ans =
7 6 8
>>B=[5 4 6];
>>A=[1 2 3];
>> B-A ans =
4 2 3
Пример. Получить таблицу значений функции 1-sin(x)^2 для x,
изменяющегося от -1 до 1 с шагом 0.5.
Для этого необходимо задать два вектора: вектор изменения значений
аргумента (создается вектор с нижней границей -1, шагом изменения значения 0.5
и верхней границей изменения 1) и вектор значений функции.
32
>>A=-1:0.5:1 |
|
|
|
|
>>B=1-sin(A).^2 |
|
|
|
|
A = |
|
|
|
|
-1.0000 |
-0.5000 |
0 |
0.5000 |
1.0000 |
B = |
|
|
|
|
0.2919 |
0.7702 |
1.0000 |
0.7702 |
0.2919 |
Остается организовать вывод в виде 2 столбцов.
Для красивого вывода в виде таблицы: disp(' A B')
for
i=1:length(A)
disp(sprintf('%5.2f %.4f',A(i),B(i)))
end
Получим |
|
A |
B |
-1.00 |
0.2919 |
-0.50 |
0.7702 |
0.001.0000
0.500.7702
1.000.2919
Далее будет рассмотрен вариант построения таблицы с использованием
операций с векторами и матрицами (без циклов).
33