Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_1 оту.doc
Скачиваний:
3
Добавлен:
12.11.2019
Размер:
3.98 Mб
Скачать
  1. Функции, реализующие численные алгоритмы решения задач линейной алгебры:

det (А) - вычисляет определитель квадратной матрицы А;

Листинг 55.

>> А=[3 2;4 3];

>> det(А)%Определитель матрицы

ans =

1

■ 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 =

4

>> sum(diag(A,2)) %Сумма элементов второй диагонали (выше главной)

ans =

3

>> trace(rot90{A)) %Сумма элементов побочной диагонали,

>> %получена как след матрицы А, развернутой на 90 градусов

ans =

8

■ norm(A [, р]) - возвращает различные виды норм матрицы А в зависи­мости от р; если аргумент р=1, 2, inf, fro не задан, то вычисляется вто­рая норма матрицы А;

Листинг 57.

>> А=[-1 2 0 ;2 1 -1 ;2 1 3];

>> norm (А,1)

ans =%Первая норма матрицы А

5

>> norm(A,2)%Вторая норма матрицы А

ans =

3.8042

» norm(A)%To же, что и norm(A,2)

ans =

>> norm{A,inf)%Бесконечная норма матрицы А

ans =

6

>> norm(A,'fro')%Евклидова норма матрицы А

ans =

5

■ 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 (А, В), где А и В - квадратные матрицы, выдает вектор обобщенных собственных значений;

Листинг 61.

>> А=[3 -2;-4 1]

>> eig(A)%Собственные значения матрицы А

ans =

5

-1

>> [M,D]=eig(A)

М = %Первый столбец - собственный вектор для 5,

второй - для -1

0.7071 0.4472

-0.7071 0.8944

D = %Собственные значения матрицы А

5 0

0 -1

>> %Проверка A*M=M*D

>> M*D

ans =

3.5355 -0.4472

-3.5355 -0.8944

>> А*М

ans =

3.5355 -0.4472

-3.5355 -0.8944

■ poly (A) - возвращает вектор-строку коэффициентов характеристическо­го полинома матрицы А;

Листинг 62.

>> А=[3 -2;-4 1];

>> poly(А)

ans =

1 -4 -5

■ linsolve(A, b) - возвращает решение системы линейных уравнений А* х= b, вызов в формате linsolve(A, b, options) позволяет задать метод решения уравнения; если задать функцию в виде [х, r]=linsolve(A,b) , то она вернет х - решение системы и r - ранг матрицы А;

Листинг 63.

>> A=[1 2 3; -2 -4 -6]

A=

  1. 2 3

-2 -4 -6

>> b=[5;6]

b=

5

6

>>x=linsolve(A,b)%Решение системы Ах=b

>>%Предупреждение: ранг меньше размерности!

Warning: Rank deficient, rank = 1, tol = 4.4686e-015.

X=

0

0

-0.4667

>> A*x %Найденное решение не верно, т.к. Ах не равно b

ans=

-1.4000

2.8000

>> [x,r]=linsolve(A,b)

X= %Решение системы

0

0

-0.4667

r=%Ранг матрицы A

1

>>%

>> А=[2 -1 1,-3 2 -5;1 3 -21;

>> Ь=[0;1;4];

>> x=linsolve(A,b)%Решение линейной системы

х =

0.4643

1.6786

0.7500

>> А*х %Решение верно

ans =

0.0000

1.0000

4.0000

■ rref (А) - осуществляет приведение матрицы А к треугольной форме, ис­пользуя метод исключения Гаусса;

Листинг 64.

>> A=[3 -2 1 5;6 -4 2 7;9 -6 3 12]

А=

3 -2 1 5

6 -4 2 7

9 -6 3 12

>> rref(A)

ans =

1.0000 -0.6667 0.3333 0

0 0 0 1.0000

0 0 0 0

■ chol (A) - возвращает разложение по Холецкому для положительно оп­ределенной симметрической матрицы А;

Листинг 65.

>> А=[10 1 1;2 10 1;2 2 10];

>> chol(А)%Разложение по Холецкому

ans -

3.1623 0.3162 0.3162

0 3.1464 0.2860

0 0 3.1334

>> А-[1 2;1 1];%Матрица не симметрическая

>> chol(A)

??? Error using --> chol Matrix must be positive definite.

>>%Матрица содержит отрицательные элементы

>> Z=[3,1,-1,2;г-5,1,3,-4;;2,0,1,-1;1,-5, 3,-3];

>> chol(Z)

??? Error using ==> chol

Matrix must be positive definite.

■ lu(А) – выполняет LU-разложение, функция [L, U, P] =lu(A) возвращает три матрицы: L - нижняя треугольная, U - верхняя треугольная и Р - мат­рица перестановок, причем P*A=L*U; функции lu (А) без параметров воз­вращает одну матрицу, которая, в свою очередь, является комбинацией матриц L и U;

Листинг 66.

>> А= [З -2 1; 5 6 -4; 2 7 9];

>> [L U, P]=lu(A)

>> %Нижняя треугольная матрица

L =

1.0000 0 0

0.6000 1.0000 0

0.4000 -0.8214 1.0000

>> %Верхняя треугольная матрица

U =

5.0000 6.0000 -4.0000

0 -5.6000 3.4000

0 0 13.3929

>> %Матрица перестановок

Р =

  1. 1 0

  2. 0 0 0 0 1

>> %Проверка: L*U-P*A

>> L*U ans -

5.0000 6.0000 -4.0000

3.0000 -2.0000 1.0000

2.0000 7.0000 9.0000

>> Р*А

ans =

5 6 -4

3 -2 1

2 7 9

>> %Комбинация из матриц L и U

>> lu(A)

ans =

5.0000 6.0000 -4.0000

0.6000 -5.6000 3.4000

0.4000 -0.8214 13.3929

>> %Выделение матрицы L

>> triu(lu(A))

ans =

5.0000 б.0000 -4.0000

0 -5.6000 3.4000

0 0 13.3929

» %Формирование матрицы U

>> U=tril(lu(A),-l)+eye(3)

U =

1.0000 0 0

0.6000 1.0000 0

0.4000 -0.8214 1.0000

■ qr (А)-выполняет QR-разложение, команда [Q, R, P]=qr(A) возвраща­ет три матрицы: ортогональную Q, верхнюю треугольную R и матрицу пе­рестановок Р, причем A*P=Q*R;

Листинг 67

>> А=[3 -2 1;5 6 -4; 2 7 9];

>> [Q, R,P]=qr(A)

Q =

-0.1010 0.2745 -0.9563

0.4041 -0.8670 -0.2915

-0.9091 -0.4158 -0.0233

R =

-9.8995 -3.7376 -0.1010

0 -8.6620 -4.3434

0 0 -4.3732

Р =

0 0 1

0 1 0

1 0 0

>> A*P-Q*R

ans =

1.0е-014 *

0.0999 0.2220 0.0888

-0.0444 -0.0888 -0.1776

0 0 -0.0444

■ svd (А) - возвращает вектор сингулярных чисел матрицы, при использова­нии в формате [U, S, V] = svd(A) выполняет сингулярное разложение матрицы А; выдает три матрицы: U - сформирована из ортонормирован-ных собственных векторов, отвечающих наибольшим собственным значе­ниям матрицы А * АT, V - состоит из ортонормированных собственных век­торов матрицы А * АT, S - диагональная матрица из сингулярных чисел (неотрицательных значений квадратных корней из собственных значений матрицы А * АT), матрицы удовлетворяют условию A= U* S*VT.

Листинг 68.

>> А=[3 -2 1;5 6 -4; 2 7 9];

>> svd(А)

ans =

11.7553

8.5347

3.7377

>> U,S,V]=svd(A)

U =

0.0058 0.0207 0.9998

0.2529 -0.9673 0.0186

0.9675 0.2527 -0.0108

S =

11.7553 0 0

0 8.5347 0

0 0 3.7377

V =

0.2736 -0.5002 0.8215

0.7042 -0.4776 -0.5253

0.6551 0.7223 0.2215

Описанные здесь векторные и матричные функции MATLAB дозволяют решать широкий круг задач линейной алгебры.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]