- •Лабораторная работа 1
- •Матрицы и векторы
- •Задание
- •Пояснения и примеры http://helpiks.Org/7-65390.Html Задание векторов и матриц. Деление (правое и левое) http://helpiks.Org/7-65391.Html Создание новых векторов и матриц на основе имеющихся.
- •Создание новых векторов и матриц на основе имеющихся.
- •5. Умножение и деление матриц
- •6. Степени матрицы
- •8. Операции с матрицами
- •9 Специальные матрицы
5. Умножение и деление матриц
5.1 Стандартное умножение
A =
34 12 3 5 1 2 4 6 8 11 9 8 7 2 3 9 9 9 7 6 0 1 3 5 6 |
|
E =
43 65 87 12 32
|
>> A*E
ans =
2595
1316
1636
2031
578
5.2. Поэлементное умножение и деление
УМНОЖЕНИЕ:
>> A(:,2).*E
ans =
516
260
696
108
32
ДЕЛЕНИЕ
A = 34 12 3 5 1 2 4 6 8 11 9 8 7 2 3 9 9 9 7 6 0 1 3 5 6
|
|
E = 43 65 87 12 32
|
деление
ans =
0.0698
0.0923
0.0805
0.7500
0.0938
>> A(:,2).\E % поэлементное обратное деление
ans =
3.5833
16.2500
10.8750
1.3333
32.0000
A =
34 12 3 5 1 2 4 6 8 11 9 8 7 2 3 9 9 9 7 6 0 1 3 5 6
|
D =
34 23 21 65 34
|
умножение
ans =
68 92 126 520 374
>> A(2,:)./D % поэлементное обычное деление
ans =
0.0588 0.1739 0.2857 0.1231 0.3235
>> A(3,:).\D % поэлементное обратное деление
ans =
3.7778 2.8750 3.0000 32.5000 11.3333
6. Степени матрицы
6.1 Стандартная степень
>> A^2
ans =
1252 526 243 312 211
202 171 177 165 178
403 217 151 152 148
468 285 225 214 213
74 79 90 79 86
6.2. Поэлементное возведение в степень
>> A.^2
ans =
1156 144 9 25 1
4 16 36 64 121
81 64 49 4 9
81 81 81 49 36
0 1 9 25 36
>> D.^(1/2)
ans =
5.8310 4.7958 4.5826 8.0623 5.8310
>> E.^(-1/2)
ans =
0.1525
0.1240
0.1072
0.2887
0.1768
7. Ввод матриц в виде арифметических выражений.
>> g=[(-1)^(1/2) exp(-2) sqrt(-10)]
g =
0.0000 + 1.0000i 0.1353 0 + 3.1623i
8. Операции с матрицами
8.1 Транспонирование
A'
ans =
34 2 9 9 0
12 4 8 9 1
3 6 7 9 3
5 8 2 7 5
1 11 3 6 6
8.2 Обращение матриц
>> s=inv(A)
s =
0.0382 -0.2373 0.1901 -0.1704 0.5040
-0.0223 0.8506 -0.5179 0.4132 -1.7100
-0.0310 -0.7730 0.5403 -0.2512 1.4035
0.0107 -0.0155 -0.4045 0.3676 -0.1387
0.0103 0.2577 0.1532 -0.2496 -0.1345
>> s*A
ans =
1.0000 0 0 0 -0.0000
-0.0000 1.0000 0 0 0
0 0.0000 1.0000 0 -0.0000
0 -0.0000 0.0000 1.0000 -0.0000
0 0.0000 0.0000 -0.0000 1.0000
8.3 Определение собственных чисел
>> eig(A) % eigenvalues–собственные значения матрицы_А
ans =
40.4154
15.9036
0.4913 + 2.5786i
0.4913 - 2.5786i
0.6984
8.4 Вычисление определителя матрицы
>> det(A)
ans =
3093
8.5 Построение характеристического полинома и определение корней
>> p=poly(A)
p =
1.0e+003 *
0.0010 -0.0580 0.7450 -1.5120 5.1410 -3.0930
>> roots(p)
ans =
40.4154
15.9036
0.4913 + 2.5786i
0.4913 - 2.5786i
0.6984
Перестановки элементов матриц
Для перестановок элементов матриц служат следующие функции: В = fiiplr(A) — зеркально переставляет столбцы матрицы А относительно верти-кальной оси; flipud(A) –зеркально переставляет столбцы матрицы А относи-тельно горизонтальной оси
> fliplr(A)
ans =
1 5 3 12 34
11 8 6 4 2
3 2 7 8 9
6 7 9 9 9
6 5 3 1 0
>> flipud(A)
ans =
0 1 3 5 6
9 9 9 7 6
9 8 7 2 3
2 4 6 8 11
34 12 3 5 1
8.7. Вычисление произведений
Несколько простых функций служат для перемножения элементов массивов:
prod(A) — возвращает произведение элементов массива, если А — вектор, или вектор-строку, содержащую произведения элементов каждого столбца, если А — матрица; prod (A, dim) — возвращает матрицу (массив размерности два) с произведением элементов массива А по столбцам (dim=l), по стро-кам(dim=2), по иным размерностям в зависимости от значения скаляра dim.
>> prod(A)
ans =
0 3456 3402 2800 1188
>> prod(B)
ans =
3564 2925 1848 1127 32
>> prod(C)
ans =
810810 1210880 834372
>> prod(A,1)
ans =
0 3456 3402 2800 1188
>> prod(A,2)
ans =
6120
4224
3024
30618
0
cumprod(A) — возвращает произведение с накоплением. Если А — вектор, cumprod(A) возвращает вектор, содержащий произведения с накоплением элементов вектора А. Если А — матрица, cumprod(A) возвращает матрицу того же размера, что и А, содержащую произведения с накоплением для каждого столбца матрицы А (Первая строка без изменений, во второй строке произведение первых двух элементов каждого столбца, в третьей строке элементы второй строки матрицы-результата умножаются на элементы третьей строки матрицы входного аргумента по столбцам и т. д.); cumprod(A,dim) — возвращает произведение с накоплением элементов по строкам или столбцам матрицы в зависимости от значения скаляра dim.
>> cumprod(A,1)
ans =
34 12 3 5 1
68 48 18 40 11
612 384 126 80 33
5508 3456 1134 560 198
0 3456 3402 2800 1188
>> cumprod(A,2)
ans =
34 408 1224 6120 6120
2 8 48 384 4224
9 72 504 1008 3024
9 81 729 5103 30618
0 0 0 0 0
cross(U, V) — возвращает векторное произведение векторов U и V в трехмерном пространстве, т. е. W=UV. U и V — обязательно векторы с тремя элементами; cross(U,V,dim) — возвращает векторное произведение U и V по размерности, определенной скаляром dim. U и V — многомерные мас-сивы, которые должны иметь одну и ту же размерность, причем размер век-торов в каждой размерности size(U,dim) и size(V,dim) должен быть равен 3.
>> a=[2 3 5]
a =
2 3 5
>> b=[7 8 9]
b =
7 8 9
>> cross(a,b)
ans =
-13 17 -5
8.8. Суммирование элементов
sum(A) — возвращает сумму элементов массива, если А — вектор, или век-тор-строку, содержащую сумму элементов каждого столбца, если А — мат-рица; sum(A,dim) — возвращает сумму элементов массива по столбцам (dim=1), строкам (dim=2) или иным размерностям в зависимости от значения скаляра dim.
>> a=magic(4)
a =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
>> b=sum(a)
b =
34 34 34 34
> sum(A,1)
ans =
54 34 28 27 27
>> sum(A,2)
ans =
55
31
29
40
15
>> sum(D,1)
ans =
34 23 21 65 34
>> sum(D,2)
ans =
177
cumsum(A) — выполняет суммирование с накоплением. Если А — вектор, cumsum(A) возвращает вектор, содержащий результаты суммирования с накоплением элементов вектора А. Если А — матрица, cumsum(A) возвращает матрицу того же размера, что и А, содержащую суммирование с накоплением для каждого столбца матрицы А;
cumsum(a)
ans =
16 2 3 13
21 13 13 21
30 20 19 33
34 34 34 34
>> cumsum(a,1)
ans =
16 2 3 13
21 13 13 21
30 20 19 33
34 34 34 34
>> cumsum(a,2)
ans =
16 18 21 34
5 16 26 34
9 16 22 34
4 18 33 34
8.9. Функции формирования матриц
Для создания матриц, состоящих из других матриц, используются следую-щие функции: repmat (А, m, n) — возвращает матрицу В, состоящую из mn копий матрицы А (т. е. в матрице mn каждый элемент заменяется на копию матрицы А); repmat(А,n) — формирует матрицу, состоящую из nn копий матрицы А; repmat(A,[m, n]) — дает тот же результат, что и repmat(A,m,n); repmat(A,[m n р...]) — возвращает многомерный массив (mnp...), состоящий из копий многомерного массива или матрицы А; repmat (A, m, n) — когда А — скаляр, возвращает матрицу размера mn со значениями элементов, заданных А, Это делается намного быстрее, чем A*ones(m,n).
>> repmat(A,2,1)
ans =
34 12 3 5 1
2 4 6 8 11
9 8 7 2 3
9 9 9 7 6
0 1 3 5 6
34 12 3 5 1
2 4 6 8 11
9 8 7 2 3
9 9 9 7 6
0 1 3 5 6
>> repmat(D,1,2)
ans =
34 23 21 65 34 34 23 21 65 34
>> repmat(D,2,1)
ans =
34 23 21 65 34
34 23 21 65 34
>> repmat(E,2,2)
ans =
43 43
65 65
87 87
12 12
32 32
43 43
65 65
87 87
12 12
32 32
>> repmat(A,2)
ans =
34 12 3 5 1 34 12 3 5 1
2 4 6 8 11 2 4 6 8 11
9 8 7 2 3 9 8 7 2 3
9 9 9 7 6 9 9 9 7 6
0 1 3 5 6 0 1 3 5 6
34 12 3 5 1 34 12 3 5 1
2 4 6 8 11 2 4 6 8 11
9 8 7 2 3 9 8 7 2 3
9 9 9 7 6 9 9 9 7 6
0 1 3 5 6 0 1 3 5 6
reshape(A,m,n) — возвращает матрицу В размерностью mn, сформирован-ную из А путем последовательной выборки по столбцам. Если число элемен-тов А не равно m n, то выдается сообщение об ошибке;
reshape(A,m,n,p,...) или В = reshape(A,[m, n, р...]) — возвращает N-мерный массив с элементами из А, но имеющий размер m n p.... Произведение mn p... должно быть равно значению prod(size(A)).
reshape(A, size) — возвращает N-мерный массив с элементами из А, но перестроенный к размеру, заданному с помощью вектора size.
B =
4 5 6 7 8
99 65 44 23 1
9 9 7 7 4
>> size(B)
ans =
3 5
>> reshape(B,5,3)
ans =
4 9 23
99 6 7
9 44 8
5 7 1
65 7 4
>> size(D)
ans =
1 5
>> reshape(D,5,1)
ans =
34
23
21
65
34
Поворот матриц
Следующая функция обеспечивает поворот матрицы (по расположению эле-ментов): rot90(A) — осуществляет поворот матрицы А на 90° против часовой стрелки; rot90(A,k) — осуществляет поворот матрицы А на величину 90*k градусов, где k — целое число.
Пример:
a =
1 2 3 4
7 6 5 4
98 65 34 12
33 22 44 55
>> rot90(a)
ans =
4 4 12 55
3 5 34 44
2 6 65 22
1 7 98 33
>> rot90(a,2)
ans =
55 44 22 33
12 34 65 98
4 5 6 7
4 3 2 1
8.10 Матричные функции
ехрm(Х) — матричная экспонента – возвращает ехp от матрицы X. Комплексный результат получается, если X имеет неположительные собственные значения.
Пример:
f =
32 23 12
2 3 6
7 5 3
>> expm(f)
ans =
1.0e+015 *
9.0387 6.7798 4.3986
0.8865 0.6649 0.4314
1.9967 1.4977 0.9717
>> b=[i 2i -1; 2+i -3i 1/i; 2-3i 1+4i i]
b =
0 + 1.0000i 0 + 2.0000i -1.0000
2.0000 + 1.0000i 0 - 3.0000i 0 - 1.0000i
2.0000 - 3.0000i 1.0000 + 4.0000i 0 + 1.0000i
>> expm(b)
ans =
-0.6417 + 0.2870i 0.4812 - 0.6678i 0.1580 - 0.8727i
-0.0003 - 1.2086i -0.9349 - 2.3955i -1.1866 - 0.4947i
3.0891 + 3.0731i 4.3875 + 1.5792i 1.0155 - 1.6050i
>> sqrtm(A)
ans =
Columns 1 through 4
5.7728 + 0.0000i 1.6108 + 0.0000i 0.1321 + 0.0000i 0.4209 - 0.0000i
0.0376 + 0.0000i 1.0538 - 0.0000i 0.8133 - 0.0000i 1.4589 - 0.0000i
1.1039 + 0.0000i 1.8432 + 0.0000i 2.3899 + 0.0000i -0.1565 + 0.0000i
0.9206 - 0.0000i 1.4836 + 0.0000i 1.7187 + 0.0000i 1.9924 - 0.0000i
-0.1679 - 0.0000i -0.2815 - 0.0000i 0.2316 - 0.0000i 1.2368 + 0.0000i
Column 5
-0.4830 - 0.0000i
2.9651 + 0.0000i
-0.3782 - 0.0000i
0.6043 - 0.0000i
2.4686 + 0.0000i
>> logm(A)
ans =
3.4843 1.0961 -0.1282 0.1991 -0.9378
-0.0474 -0.1816 0.6040 0.8641 3.7342
0.5936 2.1095 1.5684 -0.3561 -1.6653
0.3599 1.0586 1.5375 1.0579 0.1376
-0.1802 -0.6858 -0.1722 1.2779 2.1079
>> log(D)
ans =
3.5264 3.1355 3.0445 4.1744 3.5264
>> sqrt(E)
ans =
6.5574
8.0623
9.3274
3.4641
5.6569
> size(A)
ans =
5 5
>> size(A,1)
ans =
5
>> size(A,2)
ans =
5
>> size(B)
ans =
3 5
>> size(B,1)
ans =
3
>> size(B,2)
ans =
5
>> [M,N]=size(B)
M =
3
N =
5
