Файл: М.А. Тынкевич Система Matlab Справочное пособие к курсу Численные методы анализа.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 01.06.2024
Просмотров: 124
Скачиваний: 0
16
Отметим также и некоторые полезные конструкции: cross(X,Y) – векторное произведение (X,Y-трехмерные векторы):
X×Y= [ (X2Y3-X3Y2), (X3Y1-X1Y3), (X1Y2-X2Y1)] ; kron(X,Y) – тензорное произведение (произведение Кронекера):
X11Y X12Y ... X1nY
X21Y X22Y ... X2nY... ... ... ...
Xm1Y Xm2Y ... XmnY
meshgrid(X,Y), meshgrid(X,Y,Z) –формирование двумерной
(трехмерной) сетки (обычно используется при реализации графики): [x,y]=meshgrid(-2:0.1:2, -10:0.5:10)
Ряд других функций, связанных с обработкой массивов, рассмотрен ниже.
5. Решение основных задач линейной алгебры
При реализации многих задач, связанных с матричной алгеброй, полезными могут оказаться функции для оценок основных характеристик:
det(A) – определитель квадратной матрицы; rank(A) – ранг матрицы;
trace(A) – след матрицы (сумма элементов главной диагонали);
» A=[1 2 3; 5 4 3; 3 4 3] |
» det(A) |
» rank(A) |
» trace(A) |
|||
A = |
1 |
2 |
3 |
ans =12 |
ans = 3 |
ans = 8 |
|
5 |
4 |
3 |
|
|
|
|
3 |
4 |
3 |
|
|
|
Выше среди операций системы мы уже упоминали операцию
транспонирования матрицы :
» A=[ 1 2 3 ; 23 11 0] |
» B=A’ |
|
||
A = |
|
|
B = 1 |
23 |
1 |
2 |
3 |
2 |
11 |
23 |
11 |
0 |
3 |
0 |
и возведения в степень (матричного умножения на себя или инверсии):
» A=[1 2 3; 5 4 3; 3 4 3] |
» D=A^(-1) |
» A^0 |
|
|
|||
A = |
|
|
D = |
|
ans = |
|
|
1 |
2 |
3 |
-0.0000 |
0.5000 -0.5000 |
1 |
0 |
0 |
5 |
4 |
3 |
-0.5000 -0.5000 1.0000 |
0 |
1 |
0 |
|
3 |
4 |
3 |
0.6667 |
0.1667 -0.5000 |
0 |
0 |
1 |
17
При решении многих задач (например, при оценке сходимости методов) используется понятие нормы вектора (матрицы). В рассматриваемой системе для поиска нормы предлагается функции norm(A) и norm(A, k) .
Если А – вектор, то норма определяется (по умолчанию k=2)
A = k ∑k Ai k ; i=1
при k=inf и k=-inf соответственно ║A║= max(|Ai|) и ║A║= min(|Ai|);
» v=[3 4 -10] |
» norm(v) |
» norm(v,2) |
» norm(v,inf) |
» norm(v,-inf) |
v = 3 4 -10 |
ans = 11.1803 |
ans = 11.1803 |
ans = 10 |
ans = 3 |
|
» norm(v,1) |
» norm(v,-1) |
» norm(v,3) |
» norm(v,’fro’) |
|
ans = 17 |
ans = 1.4634 |
ans = 10.2946 |
ans = 11.1803 |
Если А – матрица, то норма определяется только для k=1, 2, inf и fro (по умолчанию k=2):
|
|
|
|
|
|
|
|
|
m |
k=1 - |
|
|
|
A |
|
|
|
= maxj |
∑| Aij | ; |
|
|
|
|
||||||
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
i=1 |
k=2 - A =max(svd(A)) - максимальное из сингулярных чисел
матрицы (значений квадратных корней из собственных чисел матрицы А′А);
|
|
A |
|
|
|
|
= max ∑n |
| Aij |; k=’fro’ - A = |
∑n |
Bii , B=A’*A: |
||||||
|
k=inf - |
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
i |
j=1 |
|
|
|
i =1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|||||
A = 1 |
2 |
3 |
|
|
|
|
|
» norm(A,1) |
» norm(A) |
» norm(A,inf) |
» norm(A,’fro’) |
|||||
5 |
4 |
3 |
|
|
|
|
|
|
ans = |
|
|
ans = |
ans = |
|
|
ans = |
3 |
4 |
3 |
|
|
10 |
|
|
9.6871 |
12 |
|
|
9.8995 |
Для задачи решения системы линейных алгебраических урав-
нений, одной из популярнейших в вычислительной математике, предусмотрены даже “элементарные” операции для подобной задачи.
Так для решения системы AX=B (A –матрица коэффициентов размерности m×n, B- матрица правых частей размерности n×k, Х – матрица из k векторов-столбцов решений) можно использовать команду обратного деления “\”. Например, для решения системы
x1+2 x2+3 x3 = 3 (или 3) 5 x1+4 x2+3 x3 = 9 (или 9) 3 x1+4 x2+3 x3 = 6 (или 7)
задаем (построчно) матрицу коэффициентов и векторов правой части
» A=[1 2 3; 5 4 3; 3 4 3] |
» B=[3 3; 9 9; 6 7] |
|||
A = 1 |
2 |
3 |
B = 3 |
3 |
5 |
4 |
3 |
9 |
9 |
3 |
4 |
3 |
6 |
7 |
|
18 |
|
|
и выполнить |
|
|
|
» X=A\B |
X =1.5000 |
1.0000 |
|
|
0.0000 |
1.0000 |
|
|
0.5000 |
0 |
|
При решении системы XA=B можно воспользоваться операцией |
|||
обычного деления. Так решение той же системы |
|
||
»X=B’/A’ |
X = 1.5000 |
-0.0000 |
0.5000 |
|
1.0000 |
1.0000 |
0 |
(обратите внимание на строчное представление решений).
Под кажущейся простотой решения скрывается достаточно серьезный анализ структуры матрицы и использование лучшего по точности и быстродействию алгоритма (метод Гаусса, разложение Холецкого и др.)
Для прямоугольной матрицы А (m≠n) решение строится по минимуму квадрата ошибки (используется QR-разложение на основе преобразований Хаусхолдера) и не сопровождается сообщениями о множественности решений или переопределенности системы:
одно уравнение с 3 неизвестными : |
три уравнения с 2 неизвестными: |
» a=[1 2 3]; |
» c=[1 2; 3 7; 2 5]; |
» b=6; |
» d=[3; 10 ; 9]; |
» x=a\b |
» x=c\d |
x = 0 |
x = -5.00000000000002 |
0 |
3.66666666666667 |
2 |
|
Естественно, что квадратная матрица коэффициентов должна быть невырожденной (определитель отличен от нуля) и в противном случае выдается сообщение Matrix is singular to working precision и
элементы решения принимают значения inf (не определено). Особого упоминания заслуживает обращение (инверсия)
матрицы, для которого предусмотрена операция возведения в степень –1 и функция inv(A):
» A=[1 2 3; 5 4 3; 3 4 3] |
» C=inv(A) |
» D=A^(-1) |
||||
A = |
|
|
C = |
|
D = |
|
1 |
2 |
3 |
-0.0000 |
0.5000 -0.5000 |
-0.0000 |
0.5000 -0.5000 |
5 |
4 |
3 |
-0.5000 -0.5000 1.0000 |
-0.5000 -0.5000 1.0000 |
||
3 |
4 |
3 |
0.6667 |
0.1667 -0.5000 |
0.6667 |
0.1667 -0.5000 |
Напомним, что обращение матрицы может оказаться полезным при решении системы AX=B в виде X=A-1B:
» B=[3 3; 9 9; 6 7] |
» X=inv(A)*B |
|
|
B = 3 |
3 |
X = 1.5000 |
1.0000 |
9 |
9 |
0 |
1.0000 |
6 |
7 |
0.5000 |
0.0000 |
19
При решении линейных систем и других задач интересно представление матрицы разложением на матрицы упрощенной структуры.
[L,U]=lu(A) – дает т.н. LU-разложение произвольной квадрат-
ной матицы в виде произведения нижней и верхней треугольных мат-
риц A=LU (в матрице L возможны перестановки); такое представление позволяет, в частности, решение системы АХ=В свести к двум простым системам LZ=B, UX=Z .
[L,U,P]=lu(A) – дает LU-разложение c выводом матрицы перестановок Р такой, что PA=LU.
A = |
|
|
» [L,U]=lu(A) |
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
2 |
3 |
L = |
|
|
|
U = |
|
|
|
|
|
|
|
|
|
5 |
4 |
3 |
0.2000 |
0.7500 |
1.0000 |
|
5.0000 |
4.0000 |
3.0000 |
|
|
|
|
|||
3 |
4 |
3 |
1.0000 |
0 |
0 |
|
|
0 |
1.6000 |
1.2000 |
|
|
|
|
||
|
|
|
0.6000 |
1.0000 |
0 |
|
|
0 |
|
0 |
1.5000 |
|
|
|
|
|
|
|
|
» [L,U,P]=lu(A) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
L = |
|
|
U = |
|
|
|
|
|
P = |
|
|
||
|
|
|
1.0000 |
0 |
0 |
5.0000 4.0000 |
3.0000 |
|
0 |
1 |
0 |
|||||
|
|
|
0.6000 |
1.0000 |
0 |
0 |
1.6000 |
1.2000 |
|
0 |
0 |
1 |
||||
|
|
|
0.2000 |
0.7500 |
1.0000 |
0 |
|
0 |
1.5000 |
|
1 |
0 |
0 |
R=chol(A), [R,p] =chol(A) - дает разложение Холецкого для положительно определенной симметрической матрицы A=R′R, где R – верхняя треугольная матрица. Если матрица А не является положительно определенной, то в первом варианте возникает сообщение об ошибке и во втором R – матрица порядка q=p-1:
C = |
|
|
» R=chol(С) |
» [R,p]=chol(С) |
||
1 |
2 |
3 |
??? Error using ==> chol |
R = |
1 |
2 |
2 |
5 |
5 |
Matrix must be positive definite |
|
0 |
1 |
3 |
5 |
7 |
|
p = |
3 |
|
В приведенном примере лишь первые два главных минора положительны (det(С)= -3) и, соответственно, q=2 и R′R дает второй главный минор матрицы С.
[Q,R]=qr(A), [Q,R,P]=qr(A), [Q,R]=qr(A,0) находит QR-
разложение для прямоугольной матрицы размерности m×n: [Q,R]=qr(A) – в виде A=QR произведения унитарной матрицы Q
(Q*Q'=E) и верхней треугольной матрицы R :
C = |
|
|
» [Q,R]=qr(С) |
|
|
|
1 |
2 |
3 |
Q = -0.2672 -0.0514 -0.9622 |
R = -3.7416 -7.2160 -9.0868 |
||
2 |
5 |
5 |
-0.5345 -0.8229 0.1924 |
0 -1.3887 -0.3086 |
||
3 |
5 |
7 |
-0.8017 0.5657 0.1924 |
0 |
0 -0.5773 |
|
t = |
|
|
» [Q,R]=qr(t) |
|
R = |
|
1 |
3 |
5 |
Q = -0.1961 |
-0.9805 |
-5.0990 -3.5301 -1.9611 |
|
5 |
3 |
1 |
-0.9805 |
0.1961 |
0 -2.3534 |
-4.7068 |