Листинг 53.
>> А=[1 0 -3;0 1 2;-2 0 -1]
А =
1 0 -3
0 1 2
2 0 -1
>> X=sqrtm(A)
1.5302 -0.0000 -1.4186
-0.3535 1.0000 0.9457
0.9457 -0.0000 0.5845
>> Х*Х %Проверка Х*Х-А
ans =
1.0000 -0.0000 -3.0000
-0.0000 1.0000 2.0000
2.0000 -0.0000 -1.0000
>> C=sqrt(А}%Извлечение квадратного корня из каждого элемента матрицы А
С =
1.0000 0 0 + 1.732i
0 1.0000 1.4142
1.4142 0 0 + l.OOOOi
>> С*С
ans =
1.0000 + 2.4495i 0 -1.7321 + 1.73211
2.0000 1.0000 1.4142 + 1.41421
1.4142 + 1.41421 0 -1.0000 + 2.4495i
■ expm(A) и logm(А)-взаимообратные матричные функции, первая вычисляет матричную экспоненту еА, а вторая выполняет логарифмирование по основанию е;
Листинг 54.
>> A=[10 0;-1 2 0;2 1 -1];
А =
1 0 0
-1 2 0
2 1 -1
>> В=ехрm(А)
В =
2.7183 0 0
-4.6708 7.3891 0
1.1852 2.3404 0.3679
>> logm(B)
ans =
1.0000 0.0000 -0.0000
-1.0000 2.0000 -0.0000
2.0000 1.0000 -1.0000
3.Функции, реализующие численные алгоритмы решения задач линейной алгебры:
det (А) - вычисляет определитель квадратной матрицы А;
Листинг 55.
>> А=[32;4 3];
>> det(А)%Определитель матрицы
ans =
■ trace (A)- вычисляет след матрицы А, то есть сумму элементов главной диагонали;
Листинг 56.
>> А=[1 2 3;4 -2 1;7 0 -1]
А =
1 2 3
4 -2 1
7 0 -1
>> trace(A}%След матрицы А
ans =
-2
>>sum(diag(A))%Сумма элементов главной диагонали, то же что и trace(A)
ans =
-2
>> sum(diag(A,-1)} %Сумма элементов первой диагонали (ниже главной)
ans =
>> sum(diag(A,2)) %Сумма элементов второй диагонали (выше главной)
ans =
>> trace(rot90{A)) %Сумма элементов побочной диагонали,
>> %получена как след матрицы А, развернутой на 90 градусов
ans =
■ norm(A [, р]) - возвращает различные виды норм матрицы А в зависимости от р; если аргумент р=1, 2, inf, fro не задан, то вычисляется вторая норма матрицы А;
Листинг 57.
>> А=[-1 2 0 ;2 1 -1 ;2 1 3];
>> norm (А,1)
ans =%Первая норма матрицы А
>> norm(A,2)%Вторая норма матрицы А
ans =
3.8042
» norm(A)%To же, что и norm(A,2)
ans =
3.8042
>> norm{A,inf)%Бесконечная норма матрицы А
ans =
>> norm(A,'fro')%Евклидова норма матрицы А
ans =
■ cond(A[,p]) - возвращает число обусловленности матрицы А, основанное на норме р;
Листинг 58.
>> А=[5 7 6 5; 7 10 8 7;6 8 10 9;5 7 9 10];
>> cond(A)%Число обусловленности матрицы
ans =
2.9841е+003
>>cond(A,2)%Число обусловленности для второй нормы, аналогично cond(M)
ans =
2.9841е+003
■ rcond(A) - вычисляет величину, обратную значению числа обусловленности матрицы А относительно первой нормы; если полученная величина близка к единице, то матрица хорошо обусловлена, если к приближается к нулю, то обусловлена плохо;
Листинг 59.
А=[5 7 6 5; 7 10 8 7;6 8 10 9;5 7 9 10];
>> rcond(A)
ans =
2.2282е-004
■ inv(A) - возвращает матрицу, обратную А;
Листинг 60.
>>А=[2 1 -5 1;1 -3 0 -6;0 2 -1 2;1 4 -7 6];
>> Р=inv(А}%Матрица, обратная А
Р =
1.3333 -0.6667 0.3333 -1.0000
-0.0741 0.2593 1.1481 -0.1111
0.3704 -0.2963 0.2593 -0.4444
0.2593 -0.4074 -0.5185 -0.1111
>> А*Р %Проверка А*Р-Е
ans =
1.0000 -0.0000 -0.0000 0.0000
0 1.0000 0.0000 0.0000
0.0000 -0.0000 1.0000 -0.0000
0.0000 -0.0000 -0.0000 1.0000
■ eig (A) - возвращает вектор собственных значений матрицы А; вызов функции в формате [М, D] = eig (А) даст матрицу М, столбцы которой – собственные векторы матрицы А, и диагональную матрицу D, содержащую собственные значения матрицы А; функция eig (А, В), где А и В - квадратные матрицы, выдает вектор обобщенных собственных значений;