Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лабы ИСНР-ф.doc
Скачиваний:
32
Добавлен:
11.09.2019
Размер:
1.62 Mб
Скачать

Лабораторная работа № 3 Вычисления с векторами и матрицами

Цель работы: изучить основные операции над векторами и матрицами

Введение

Рассмотрим на примерах основные функции линейной алгебры, реализованные в MATLAB. Это вычисление определителя и собственных чисел, сингулярных чисел и т.д.

Для вычисления определителя (детерминанта) квадратной матрицы служит функция det(A), где А – матрица размерностью n×n:

>> A=[10 20 30;5 15 25;8 4 2]

A =

10 20 30

5 15 25

8 4 2

>> det(A)

ans =

100

Для вычисления ранга матрицы (количество сингулярных чисел матрицы, не являющихся пренебрежимо малыми) предусмотрена функция

>> rank(A)

ans =

3

Для вычисления нормы матрицы (скалярная оценка величины элементов матрицы) предусмотрен оператор

>> norm(A)

ans =

47.9607

Для определения суммы элементов главной диагонали матрицы – следа матрицы- предусмотрен оператор

>> trace(A)

ans =

27

Транспонирование матрицы реализуется с помощью символа ’ :

>> B=A'

B =

10 5 8

20 15 4

30 25 2

Обратную матрицу Z = А-1 = I/A, где I – единичная матрица, получают с помощью функции

>> Z=inv(A)

Z =

-0.7000 0.8000 0.5000

1.9000 -2.2000 -1.0000

-1.0000 1.2000 0.5000

Для создания единичной матрицы используются следующие операторы:

>> eye(4)

ans =

1 0 0 0

0 1 0 0

0 0 1 0

0 0 0 1

>> eye(2,4)

ans =

1 0 0 0

0 1 0 0

>> eye(size(A))

ans =

1 0 0

0 1 0

0 0 1

Матрица с единичными элементами создается с помощью операторов

>> ones(4)

ans =

1 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

>> ones(2,4)

ans =

1 1 1 1

1 1 1 1

>> ones(size(A))

ans =

1 1 1

1 1 1

1 1 1

Образование матрицы с нулевыми элементами возможно с помощью оператора

>> zeros(4)

ans =

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

>> zeros(2,4)

ans =

0 0 0 0

0 0 0 0

>> zeros(size(A))

ans =

0 0 0

0 0 0

0 0 0

Матрицу с заданной диагональю из элементов вектора R можно создать с помощью оператора diag (R) :

>> R=[1 2 3 4]

R = 1 2 3 4

>> RB=diag(R)

RB =

1 0 0 0

0 2 0 0

0 0 3 0

0 0 0 4

Элементы вектора R могут находится или в k-ой верхней (k>0) или в

k- нижней (k<0) диагонали от главной диагонали. Это можно выполнить с помощью оператора diag(R,k):

>> Z=diag(R,2)

Z =

0 0 1 0 0 0

0 0 0 2 0 0

0 0 0 0 3 0

0 0 0 0 0 4

0 0 0 0 0 0

0 0 0 0 0 0

>> Z=diag(R,-2)

Z =

0 0 0 0 0 0

0 0 0 0 0 0

1 0 0 0 0 0

0 2 0 0 0 0

0 0 3 0 0 0

0 0 0 4 0 0

Для вычисления собственных чисел матрицы необходимо использовать функцию eig( )

>> C=eig(A)

C =

34.1199

-6.6812

-0.4387

С помощью этого оператора можно получить матрицу собственных векторов F, если изменить формат вызова:

>> [F,C]=eig(A)

F =

-0.7893 -0.3733 0.2792

-0.5536 -0.6626 -0.8410

-0.2655 0.6493 0.4635

C =

34.1199 0 0

0 -6.6812 0

0 0 -0.4387

C помощью оператора svd( ) можно вычислить сингулярные числа матрицы:

>> S=svd(A)

S =

47.9607

7.6617

0.2721

Вычисление отношения самого большого сингулярного числа к наименьшему (числа обусловленности матрицы) можно выполнить с помощью команды

>> cond(A)

ans =

176.2352

47.9607/0.2721 =176.2613

С помощью этой же функции можно выполнить сингулярное разложение матрицы, применив формат вызова

>> [Q,S,T]=svd(A)

Q =

-0.7799 0.1186 -0.6145

-0.6145 -0.3318 0.7158

-0.1190 0.9359 0.3316

S =

47.9607 0 0

0 7.6617 0

0 0 0.2721

T =

-0.2465 0.9155 0.3180

-0.5273 0.1486 -0.8366

-0.8131 -0.3739 0.4461

Элементами матриц Q и T являются ортонормированные собственные векторы, соответствующие собственным значениям матриц А*А’ и А’* A, соответственно.

В MATLAB предусмотрены поэлементные операции над матрицами, которые рассмотрим на примерах:

>> A=[10 20 30;5 15 25;8 4 2]

A =

10 20 30

5 15 25

8 4 2

>> B=[8 4 2;5 15 25;10 20 30]

B =

8 4 2

5 15 25

10 20 30

вычитание

>> A-B

ans =

2 16 28

0 0 0

-2 -16 -28

>> minus(A,B)

ans =

2 16 28

0 0 0

-2 -16 -28

сложение

>> A+B

ans =

18 24 32

10 30 50

18 24 32

>> plus(A,B)

ans =

18 24 32

10 30 50

18 24 32

умножение

>> A.*B

ans =

80 80 60

25 225 625

80 80 60

>> times(A,B)

ans =

80 80 60

25 225 625

80 80 60

возведение в степень

>> A.^2

ans =

100 400 900

25 225 625

64 16 4

>> power(A,2)

ans =

100 400 900

25 225 625

64 16 4

деление элементов матрицы слева направо

>> A./B

ans =

1.2500 5.0000 15.0000

1.0000 1.0000 1.0000

0.8000 0.2000 0.0667

деление элементов матрицы справа на лево

>> A.\B

ans =

0.8000 0.2000 0.0667

1.0000 1.0000 1.0000

1.2500 5.0000 15.0000

В MATLAB предусмотрены и матричные функции:

матричное умножение

>> A*B

ans =

480 940 1420

365 745 1135

104 132 176

>> mtimes(A,B)

ans =

480 940 1420

365 745 1135

104 132 176

деление матриц слева направо

> A/B

ans =

0 0 1

0 1 0

1 0 0

>> mrdivide(A,B)

ans =

0 0 1

0 1 0

1 0 0

обратное деление матриц

>> A\B

ans =

3.4000 19.2000 33.6000

-5.8000 -45.4000 -81.2000

3.0000 24.0000 43.0000

>> mldivide(A,B)

ans =

3.4000 19.2000 33.6000

-5.8000 -45.4000 -81.2000

3.0000 24.0000 43.0000

возведение матрицы в степень

>> A^2

ans =

440 620 860

325 425 575

116 228 344

>> mpower(A,2)

ans =

440 620 860

325 425 575

116 228 344

матричная экспонента ехр(А)

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

A =

2 7 4

1 6 2

5 3 1

>> Q=expm(A)

Q =

1.0e+004 *

0.5315 1.3965 0.5555

0.3558 0.9361 0.3721

0.4209 1.1051 0.4398

логарифмирование матрицы

>> A=logm(Q)

A =

2.0000 7.0000 4.0000

1.0000 6.0000 2.0000

5.0000 3.0000 1.0000

извлечение квадратного корня

>> sqrtm(A)

ans =

1.2192 + 0.7445i 1.6531 - 0.3939i 1.0267 - 0.6072i

0.1833 + 0.1900i 2.2970 - 0.1005i 0.4814 - 0.1550i

1.3760 - 1.1901i 0.5370 + 0.6296i 0.9466 + 0.9707i

Порядок выполнения работы

1. Ввести матрицы

2. Для матрицы А вычислить её основные параметры.

3. Для матриц А и В выполнить все математические операции (поэлементные и матричные).

Вопросы для самопроверки

1. Чем отличаются матричные функции от обычных функций?

2. С помощью каких операторов можно вычислить детерминант, собственные числа и ранг матрицы?

3. Какие функции предусмотрены для работы с разряжёнными матрицами?

4. Как получить диагональную, единичную и обратную матрицы?

Литература

1. С. В. Поршнев MATLAB 7. Основы работы и программирования. Учебник – М.: ООО <<Бином-Пресс>>, 2006г. -320 с.: ил.

2. Курбатов Е.А. MATLAB 7. Самоучитель. – М.: Издательский дом “Вильямс”, 2006. – 256 с.: ил.