
МатЛаб основы математического анализа / Теория / ОМА_Олейник / КПрОМА Практикум 2
.pdfПрактикум 2. Матрицы и работа с ними в пакете MATLAB.
Цель работы – знакомство с понятием матрицы и операциями над матрицами, обучение созданию массивов (матриц) и действиям с ними в пакете МATLAB.
Продолжительность работы - 2 часа.
Оборудование – работа выполняется в компьютерном классе с использованием пакета MATLAB.
Порядок выполнения
1.Знакомство со справочным материалом по математике
2.Знакомство со справочным материалом по пакету MATLAB.
3.Изучение примеров.
4.Самостоятельное выполнение упражнений. При выполнении упражнений в случае сообщения системы об ошибке рекомендуется самостоятельно найти ошибку и исправить команду; однако, если многократные попытки устранить
ошибку не привели к успеху, то можно и нужно проконсультироваться с преподавателем.
P.S. Отчитываться перед преподавателем о выполнении упражнений не требуется. Однако, следует учесть, что контрольная работа по модулю состоит из аналогов упражнений.
Справочный материал по математике
1. Понятие матрицы
Матрицей размерности n m называется прямоугольная таблица из чисел, состоящая из n строк и m столбцов. Традиционно в математике эту таблицу заключают
в круглые скобки. Например, |
1 |
2 |
3 |
4 |
- матрица размерности 2 4 . |
||
A = |
0 |
1 |
3 |
2 |
|
||
|
|
|
|
Если матрица имеет размер 1 m , т.е. состоит только из одной строки, то ее называют вектором-строкой. Например, B = (1 3 −1) - матрица размерности 1 3 , т.е. вектор-строка.
Если матрица имеет размер n 1, т.е. состоит только из одного столбца, то ее
называют вектором-столбцом. Например, |
|
−1 |
- матрица размерности 2 1, т.е. |
C = |
|
||
|
|
2,1 |
|
вектор-столбец.
Если матрица имеет размер 1 1, т.е. состоит из одного столбца и одной строки, то ее называют скаляром. Например, D = (9) - матрица размерности 1 1, т.е. скаляр.
2. Действия над матрицами
Матрицу A любой размерности можно транспонировать – создать новую матрицу AT , сделав строки матрицы A столбцами с теми же номерами.
Матрицы A и B одинаковой размерности можно складывать: суммой A + B называется матрица той же размерности, каждый элемент которой равен сумме соответственных элементов матриц A и B .
1
Матрицу A можно умножать на число: произведением A матрицы A на числоназывается матрица, получающаяся из матрицы A умножением всех ее элементов на .
Если число столбцов матрицы A совпадает с числом строк матрицы B , то матрицу A можно умножать на матрицу B : произведением A B матрицы A на матрицу B называется матрица C , число строк которой совпадает с числом строк матрицы A , число столбцов – с числом столбцов матрицы B , а элемент, стоящий в i -ой строке и j -м столбце, равен сумме произведений соответственных элементов i -ой строки матрицы A на элементы j -ого столбца матрицы B .
Справочный материал по пакету MATLAB
1. Создание одномерных массивов (векторов)
(1) Для задания вектора-строки (т.е. матрицы размера 1 m ) используются квадратные скобки, в которых числовые данные отделяются друг от друга пробелами или запятыми:
>> B=[1 3 -1] B =
1 |
3 |
-1 |
>> B=[1, 3, -1] |
|
|
B = |
|
|
1 |
3 |
-1 |
(2)Для задания вектора-столбца (т.е. матрицы размера n 1) используются квадратные скобки, в которых числовые данные отделяются друг от друга точкой с запятой:
>> C=[-1;2.1] C =
-1.0000 2.1000
(3)Элементами матриц могут быть любые выражения, допустимые в MATLAB. >> S=[-1+2*3 sqrt(2) abs(-3)]
S =
5.0000 1.4142 3.0000
(4)Далее мы будем часто использовать векторы-строки, элементы которых образуют арифметическую прогрессию. Рассмотрим два способа их задания.
1-й способ
имя_переменной = [m1:d:m2] или |
имя_переменной = m1:d:m2 |
Здесь m1 – первый элемент, d – |
число, которое прибавляется к каждому |
следующему элементу (разность арифметической прогрессии), m2 – последний элемент.
>> v=1:2:7 v =
1 3 5 7
Если введены только два числа m1:m2, то значение шага по умолчанию берется равным 1.
2-й способ
2
имя_переменной = linspace(k1,k2,n)
Здесь k1 – первый элемент, k2 – последний элемент, n – число элементов (MATLAB сам подсчитывает необходимый шаг).
>> v= linspace(1,7,4) v =
1 3 5 7
Если введены только два числа k1 и k2, то число элементов по умолчанию берется равным 100.
2. Создание двумерных массивов (матриц)
(1) Матрицу (двумерный массив) можно задать, комбинируя два типа разделителя (пробел или запятую для элементов строк и точку с запятой для элементов столбцов):
Имя_переменной = [элементы 1-й строки; элементы 2-й строки; …; элементы последней строки]
>> A=[1 2 3 4;0 1 3 2] |
|
|
|
A = |
|
|
|
1 |
2 |
3 |
4 |
0 |
1 |
3 |
2 |
>> B=[1:4;0 1 3 sqrt(4)] |
|
|
|
B = |
|
|
|
1 |
2 |
3 |
4 |
0 |
1 |
3 |
2 |
(3) В MATLAB все числовые данные представляются в виде матриц. Поэтому любое число по умолчанию рассматривается как матрица размера 1 1.
>>n=3
n = 3
>>m=[3] m =
3
>>whos A n m
Name |
Size |
Bytes Class Attributes |
A |
2x4 |
64 double |
m |
1x1 |
8 double |
n |
1x1 |
8 double |
3. Обращение к элементам массива и их изменения
(1) Для доступа к отдельным элементам матриц указываются их индексы – номер строки и номер столбца, в которых этот элемент размещен.
>> A=[1 2 3 4;0 1 3 2] |
|
|
|
A = |
|
|
|
1 |
2 |
3 |
4 |
0 |
1 |
3 |
2 |
>> x=A(2,4) |
|
|
|
x = |
|
|
|
2
(2) Для доступа к отдельному элементу вектор-строки или вектор-столбца можно указать только один индекс.
3
>> B=[1 2 4] B =
1 |
2 |
4 |
>>x=B(3)
x =
4
>>x=B(1,3)
x =
4
(3) Можно обратиться сразу к некоторому диапазону элементов массива
A(:,s) |
|
Обращение ко всем элементам, стоящим в s-м столбце |
|
|
|
A(s,:) |
|
Обращение ко всем элементам, стоящим в s-й строке |
|
|
|
A(:,s:q) |
|
Обращение ко всем элементам, стоящим в столбцах с s по q |
|
|
|
A(s:q,:) |
|
Обращение ко всем элементам, стоящим в строках с s по q |
|
|
|
A(s:q,t:h) |
|
Обращение к элементам в строках с s по q и в столбцах с t по h |
|
|
|
>> A=[4 5 6;7 8 9;10 11 12] |
||
A = |
|
|
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
>>B=A(:,2) B =
5
8
11
>>C=A(2:3,1:2) C =
7 8
10 11
4. Изменение массивов (1) Транспонирование
Операция транспонирования матрицы A реализуется командой A ’:
>>A=[1 2 3;4 5 6]
A = |
|
|
1 |
2 |
3 |
4 |
5 |
6 |
>> A' |
|
|
ans = |
|
|
14
25
36
(2)Добавление строк и столбцов к массивам
Рассмотрим примеры:
>> clear
4
A = |
|
|
|
1 |
2 |
3 |
|
4 |
5 |
6 |
|
>> B=[A;7 8 9] |
|
||
B = |
|
|
|
1 |
2 |
3 |
|
4 |
5 |
6 |
|
7 |
8 |
9 |
|
>> C=[A;B] |
|
||
C = |
|
|
|
1 |
2 |
3 |
|
4 |
5 |
6 |
|
1 |
2 |
3 |
|
4 |
5 |
6 |
|
7 |
8 |
9 |
|
>> G=[A A(:,2)] |
|||
G = |
|
|
|
1 |
2 |
3 |
2 |
4 |
5 |
6 |
5 |
(3) Удаление строк и столбцов из массивов
Элемент или диапазон элементов может быть удален из массива путем присвоения пустого множества этим элементам ([]):
>> V=[1 2 3 4;5 6 7 8; 9 10 11 12] V =
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
>> V(:,2)=[] |
|
||
V = |
|
|
|
1 |
3 |
4 |
|
5 |
7 |
8 |
|
9 |
11 |
12 |
|
5. Некоторые встроенные функции для анализа матриц
Функция |
Описание |
|
|
Пример |
|
|
|
|
|
|
|
|
|
length (A) |
Возвращает число элементов вектора A |
>> clear |
|
|
|
|
|
|
>> A=[1 2 3 1 7] |
|
|||
|
|
A = |
|
|
|
|
|
|
1 |
2 |
3 |
1 |
7 |
|
|
>> length(A) |
|
|
||
|
|
ans = |
|
|
|
|
|
|
5 |
|
|
|
|
|
|
|
|
|
||
size (A) |
Возвращает вектор-строку [m,n], где m – |
>> size(A) |
|
|
||
|
число строк, n – число столбцов матрицы A. |
ans = |
|
|
|
|
|
|
1 |
5 |
|
|
|
|
|
|
|
|
|
|
5
mean(A) |
|
Возвращает среднее арифметическое |
>> mean(A) |
|
|
|||
|
|
элементов вектора A. |
ans = |
|
|
|
|
|
|
|
|
|
2.8000 |
|
|
|
|
|
|
|
|
|
|
|
|
|
max(A) |
|
Если A – вектор, то возвращает самый |
>> max(A) |
|
|
|
||
|
|
большой элемент в A. Если A – матрица, то |
ans = |
|
|
|
|
|
|
|
возвращает вектор строку из самых |
7 |
|
|
|
|
|
|
|
больших элементов каждого столбца. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
min(A) |
|
Если A – вектор, то возвращает самый |
>> min(A) |
|
|
|
||
|
|
маленький элемент в A. Если A – матрица, |
ans = |
|
|
|
|
|
|
|
то возвращает вектор строку из самых |
1 |
|
|
|
|
|
|
|
маленьких элементов каждого столбца. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sum(A) |
|
Если A – вектор, то возвращает сумму его |
>> sum(A) |
|
|
|
||
|
|
элементов. |
ans = |
|
|
|
|
|
|
|
|
|
14 |
|
|
|
|
|
|
|
|
|
|
|
|
|
prod(A) |
|
Если A – вектор, то возвращает |
>> prod(A) |
|
|
|
||
|
|
произведение его элементов. |
ans = |
|
|
|
|
|
|
|
|
|
42 |
|
|
|
|
|
|
|
|
|
|
|
|
|
sort(A) |
|
Если A – вектор, то возвращает элементы |
>> sort(A) |
|
|
|
||
|
|
вектора в порядке возрастания. |
ans = |
|
|
|
|
|
|
|
|
|
1 |
1 |
2 |
3 |
7 |
|
|
|
|
|
||||
6. Поэлементное умножение и деление массивов одинаковой размерности |
|
|||||||
|
|
|
|
|
|
|||
Функция |
|
Описание |
|
Пример |
|
|||
|
|
|
|
|
|
|||
A.*B |
|
Умножение каждого элемента массива A |
>> A=[1 2;3 4] |
|
|
|||
поэлементное |
|
на соответствующий элемент массива В. |
A = |
|
|
|
|
|
умножение |
|
|
1 |
2 |
|
|
|
|
|
|
|
|
3 |
4 |
|
|
|
|
|
|
|
>> B=[5 6;7 8] |
|
|
||
|
|
|
|
B = |
|
|
|
|
|
|
|
|
5 |
6 |
|
|
|
|
|
|
|
7 |
8 |
|
|
|
|
|
|
|
>> A.*B |
|
|
|
|
|
|
|
|
ans = |
|
|
|
|
|
|
|
|
5 |
12 |
|
|
|
|
|
|
|
21 |
32 |
|
|
|
|
|
|
|
|
|
|
||
A./B |
|
Деление каждого элемента массива A на |
>> A./B |
|
|
|
||
поэлементное |
|
соответствующий элемент массива В. |
ans = |
|
|
|
|
|
деление |
|
|
0.2000 |
0.3333 |
|
|||
|
|
|
|
0.4286 |
0.5000 |
|
||
|
|
|
|
|
|
|
||
7. Операции с массивами и скалярами |
|
|
|
|
|
|||
|
|
|
|
|
|
|||
Функция |
|
Описание |
|
Пример |
|
|||
|
|
|
|
|
|
|
||
A+c |
|
Прибавление ко всем элементам массива |
>> A+3 |
|
|
|
||
|
|
|
A числа c |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6
|
|
ans = |
|
|
|
|
4 |
5 |
|
|
|
6 |
7 |
|
|
|
|
|
|
A-c |
Вычитание из всех элементов массива A |
>> A-3 |
|
|
|
числа c |
ans = |
|
|
|
|
-2 |
-1 |
|
|
|
0 |
1 |
|
|
|
|
||
A.*c |
Умножение всех элементов массива A на |
>> A=[1 2;3 4]; |
||
или |
число c |
>> A.*3 |
|
|
A*c |
|
ans = |
|
|
|
|
3 |
6 |
|
|
|
9 |
12 |
|
|
|
>> 3*A |
|
|
|
|
ans = |
|
|
|
|
3 |
6 |
|
|
|
9 |
12 |
|
|
|
|
|
|
A./c |
Деление всех элементов массива A на |
>> A./3 |
|
|
или |
число c |
ans = |
|
|
A/c |
|
0.3333 |
0.6667 |
|
|
|
1.0000 |
1.3333 |
|
|
|
>> A/3 |
|
|
|
|
ans = |
|
|
|
|
0.3333 |
0.6667 |
|
|
|
1.0000 |
1.3333 |
|
|
|
|
|
|
A.^c |
Возведение в степень c всех элементов |
>> A.^2 |
|
|
поэлементное |
массива |
ans = |
|
|
возведение в |
|
1 |
4 |
|
степень |
|
9 |
16 |
|
|
|
|
|
|
8. Сложение, вычитание и умножение массивов по правилам линейной алгебры
Функция |
Описание |
|
Пример |
|
|
|
|
A+B |
Сложение матриц в соответствии с |
>> A=[1 2;3 4] |
|
|
правилами линейной алгебры (условие |
A = |
|
|
выполнения: размерность матриц должна |
1 |
2 |
|
совпадать) |
3 |
4 |
|
|
>> B=[5 6;7 8] |
|
|
|
B = |
|
|
|
5 |
6 |
|
|
7 |
8 |
|
|
>> A+B |
|
|
|
ans = |
|
|
|
6 |
8 |
|
|
|
|
7

|
|
10 |
12 |
|
|
|
|
A-B |
Вычитание матриц в соответствии с |
>> A-B |
|
|
правилами линейной алгебры (условие |
ans = |
|
|
выполнения: размерность матриц должна |
-4 |
-4 |
|
совпадать) |
-4 |
-4 |
|
|
|
|
A*B |
Умножение матриц в соответствии с |
>> A*B |
|
|
правилами линейной алгебры (условие |
ans = |
|
|
выполнения: число столбцов первого |
19 |
22 |
|
множителя должно быть равно числу |
43 |
50 |
|
строк второго множителя) |
|
|
|
|
|
|
8. Вычисление значений математических функций одновременно для разных аргументов
Очень важная особенность функций в MATLAB - обработка аргументов, заданных
матрицами. |
|
|
|
|
|
|
|
|
|
|
|
|
Например, |
|
|
|
|
|
|
|
|
|
|
||
>> A=[1 3 4;6 1 0] |
|
|
|
|
|
|
|
|
|
|||
A = |
|
|
|
|
|
|
|
|
|
|
|
|
1 |
3 |
4 |
|
|
|
|
|
|
|
|
|
|
6 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
>> B=sin(A) |
|
|
|
|
|
|
|
|
|
|
||
B = |
|
|
|
|
|
|
|
|
|
|
|
|
0.84147 |
0.14112 |
-0.7568 |
|
|
|
|
|
|
||||
-0.27942 |
0.84147 |
0 |
|
|
|
|
|
|
|
|||
|
|
|
|
Примеры применений MATLAB |
||||||||
|
|
|
|
|
|
|
|
|
|
|
||
Пример |
1. |
Вычислить 1, 3, 5,..., 19 и найти среднее арифметическое |
полученных чисел.
Решение.
>>A=1:19;
>>B=sqrt(A);
>>mean(A) ans =
10
Пример 2. Найти сумму 13 + 33 +53 +... + 213 .
Решение.
>>B=1:2:21;
>>B1=B.^3;
>>sum(B1) ans =
29161
8

Пример 3. Провести несколько вычислительных экспериментов на сравнение среднего арифметического нескольких положительных чисел со средним геометрическим этих чисел.
Справка. Пусть a1, a2 ,...., an 0 . |
|
|
|
|
|
|
|
|
|||||
|
a1 + a2 + ... + an |
- среднее арифметическое чисел a , a |
|
,...., a |
|
. |
|||||||
|
|
|
|
|
2 |
n |
|||||||
|
|
n |
|
|
1 |
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- среднее геометрическое чисел a , a |
|
|
|
. |
|
|||
|
n a a .... a |
n |
2 |
,...., a |
n |
|
|||||||
1 2 |
1 |
|
|
|
|
|
|
Решение.
Создаем скрипт-файл для вычисления среднего арифметического и среднего геометрического по известным данным:
%сравнение среднего арифметического и среднего геометрического n чисел
X=mean(A);
l=length(A); Y=nthroot (prod(A),l);
Z=[Z X-Y] %вектор разности среднего арифметического и среднего геометрического
Сохраняем скрипт-файл под именем Ex_2_3.
В командном окне последовательно определяем различные наборы положительных чисел в форме вектор-строки и вызываем скрипт-файл:
>>A=1:25;
>>B=linspace(4,20,25);
>>Z=[];
>>Ex_2_3
Z =
2.8229
>>A=A+B;
>>Ex_2_3 Z =
2.8229 3.5569
>>A=A.*B;
>>Ex_2_3
Z =
2.8229 3.5569 123.9076
>>A=sqrt(A);
>>Ex_2_3
Z =
2.8229 3.5569 123.9076 2.0050
>>A=[A B];
>>Ex_2_3 Z =
2.8229 3.5569 123.9076 2.0050 1.7341
>>A(:)=1;
>>Ex_2_3
9

Z =
2.8229 |
3.5569 |
123.9076 |
2.0050 |
1.7341 |
0 |
Вывод. Для всех рассмотренных наборов положительных чисел разность их среднего арифметического и среднего геометрического оказалась неотрицательной. Это позволяет выдвинуть гипотезу: для любых положительных чисел выполняется неравенство:
a1 + a2 + ... + an |
|
|
|
|
|
. |
|
n a a |
2 |
.... a |
n |
||||
|
|||||||
n |
1 |
|
|
||||
|
|
|
|
|
|
Важно! Отталкиваясь от результатов вычислительного эксперимента, можно лишь предположить, что среднее арифметическое больше либо равно среднему геометрического. Утверждать, что это так, исходя только из результатов вычислительного эксперимента, нельзя.
Упражнения
Упражнение 1.
|
1 |
5 |
9 |
13 |
|
1 |
2 |
3 |
4 |
|
|
|
2 |
6 |
10 |
14 |
|
|
|||||
Создайте в командном окне матрицы A = |
, |
B = 1 |
2 |
3 |
4 |
|
и |
||||
3 |
7 |
11 |
15 |
|
|
|
|
|
|
|
|
|
2 |
3 |
4 |
|
|
||||||
|
|
|
|
|
|
|
|||||
4 |
8 |
12 |
16 |
1 |
|
|
|||||
|
|
|
|
|
|
|
|
0
вектор-столбец С = −1 .
0
а) |
Одной командой замените две последние строки матрицы A на первые две |
|||||||||||||
строки матрицы B . |
|
|
|
|
|
|
|
|
|
|
|
|
||
б) Одной командой замените третий столбец матрицы B столбцом С . |
|
|
|
|
|
|||||||||
в) |
Одной командой создайте новую матрицу D размера |
|
7 4 , добавив снизу к |
|||||||||||
четырем строкам матрицы A три строки матрицы B . |
|
|
|
|
|
|
|
|
|
|
|
|||
г) |
Последние три элемента второй строки матрицы |
B |
|
замените на первые три |
||||||||||
элемента последней строки матрицы A . |
|
|
|
|
|
|
|
|
|
|
|
|
||
д) Одной командой утройте все элементы второго столбца матрицы D . |
|
|
|
|
||||||||||
Упражнение 2. |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
2 |
1 |
3 |
|
|
1 |
2 |
3 |
4 |
|
|
Создайте в командном окне матрицы |
, |
|
2 |
3 |
4 |
|
и |
|||||||
A = |
4 |
1 |
2 |
|
B = 1 |
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
1 |
2 |
3 |
4 |
|
|
−1 0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
С = |
4 |
. |
|
|
|
|
|
|
|
|
|
|
|
|
2 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
а) Укажите пары матриц, которые можно поэлементно сложить, вычесть, умножить. Проделайте в командном окне соответствующие действия.
10