Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Калинкин.Лекции / 04-Матричные операции

.pdf
Скачиваний:
23
Добавлен:
07.01.2014
Размер:
218.92 Кб
Скачать

(С) ИиКМ РХТУ январь 2007г. Калинкин Владимир Николаевич

1

ВЕКТОРЫ И МАТРИЦЫ

Определение вектора

С упорядоченной последовательностью действительных чисел a1,a2,a3,…,an-1,an можно связать понятие связанного вектора в n-мерном пространстве и обозначить как:

 

a

1

 

 

 

 

_

a2

 

a =a =[a]=

 

 

 

.

 

 

 

.

 

 

 

 

 

 

 

an

 

или понятие точки A(a1,a2,a3,…,an). Числа a1,a2,a3,…,an называются координатами

точки A или элементами вектора a , а количество элементов в векторе называется размерностью этого вектора. Положение элемента ai определяется индексом i, где

i = 1,2,· ··,n. Компоненты вектора записываются в виде столбца.

Типы и характеристики векторов

Нулевой вектор – вектор, все компоненты которого равны нулю и обозначается

как:

0 0 0 = ..0

Единичный вектор – вектор, длина которого равна единице:

0.6

+0.82

=1

a

=

; l = 0.62

 

0.8

 

 

Транспонированный вектор – вектор, компоненты которого располагаются в виде строки:

T

=[a

a

 

.... a

 

a

 

]

= 2

=[2 3]

a

2

n1

n

Пример. a

aT

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

Два вектора с одинаковой размерностью равны тогда, когда равны их соответ-

ствующие компоненты.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

= b

 

 

a1 = b1,a2 = b2,.....,an = bn , где i =1,2,3,...,n

 

(С) ИиКМ РХТУ январь 2007г. Калинкин Владимир Николаевич

2

Определение матрицы

Совокупность чисел расположенных в прямоугольной таблице, состоящей из n строк и m столбцов, называется матрицей и обозначается как:

=

a

11

a

a

13

 

 

a

1m

 

 

12

 

 

 

 

 

A =[A]= a21 a22

a23

a2m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

an2

 

 

 

 

 

 

 

 

an1

an3 anm

Положение элемента aij в матрице определяется двумя индексами (i и j), где i определяет номер строки (1i n) , а j – номер столбца (1j m) .

Типы матриц

Вектор строка – матрица, состоящая из одной строки n=1

Вектор столбец – матрица, состоящая из одного столбца m=1

Квадратная матрица – матрица, у которой n равно m

Верхне треугольная – матрица, у которой aij=0 при i>j

Нижне треугольная – матрица, у которой aij=0 при i<j

Диагональная – матрица, у которой aij =0 приi j

Единичная – матрица, у которой aij

1 приi = j

 

 

=

 

 

 

 

 

 

0 приi j

 

 

 

=

=

 

 

 

 

Равенство матриц A = B т.е. aij=bij,

где i=1,2,3,…,n

j=1,2,3,…,m

 

 

Характеристики и операции

 

Норма (длина) вектора

 

 

 

 

 

n

Пример.

2

+32 =3.61

a =

ai2

a

=

a = 22

 

i=1

 

 

3

 

 

(С) ИиКМ РХТУ январь 2007г. Калинкин Владимир Николаевич

3

Алгоритм и программа для вычисления нормы вектора

Блок-схема

Исполняемая процедура (main)

Начало

n, a

s:=0

i:=1 шаг 1 до n

s :=s +ai2

s := s

Option base 1

Sub NormaVectora()

Dim n As Integer, a() As Single Dim s As Single, i As Integer n = Cells(2, 1)

Redim a(n) For i= 1 to n

a(i) = Cells(i + 3, 1) Next i

s = 0

For i = 1 to n

s = s + a(i) * a(i) Next i

s = Sqr(s) Cells(2, 3) = s End Sub

s

Конец

Вызываемая функция

Вызов функции

Function NVec(Nrow%, a!()) As Single

 

Dim s As Single

В исполняемой процедуре

Dim i As Integer

NormaVectora заменяем под-

s = 0

черкнутые строки на строку:

For i = 1 to Nrow

Cells(2, 3) = NVec(n,a)

s = s + a(i) * a(i)

 

Next i

 

NVec = sqr(s)

 

End Function

 

(С) ИиКМ РХТУ январь 2007г. Калинкин Владимир Николаевич

4

Норма матрицы (Эвклидова).

=

n m

A =

∑∑ai2, j

 

i=1 j=1

Программа для вычисления нормы матрицы

Исполняемая процедура (main)

Вызываемая функция

Option base 1

Function NormM(Nrow%, Ncol%, A!())

Sub NormaMatrix()

Dim i As Integer, j As Integer

Dim n%, m%, a!()

Dim s As Single

Dim i As Integer, j As Integer, _

s = 0

s As Single

For i = 1 to Nrow

n=Cells(2, 1)

For j = 1 to Ncol

m= Cells(2, 2)

s = s + A(i, j)^2

Redim a(n,m)

Next j

For i = 1 to n

Next i

For j = 1 to m

NormM = sqr(s)

a(i, j) = Cells(3 + i, j)

End Function

Next j

 

Next i

Вызов функции

s = 0

в исполняемой процедуре

For i = 1 to n

For j = 1 to m

NormaMatrix заменяем подчеркну-

s = s + a(i,j)^2

тые строки на строку:

Next j

 

Cells(2, 3) = NormM (n,m,a)

Next i

 

Cells(2, 3) = Sqr(s)

 

End Sub

 

Сложение и вычитание векторов. Складывать или вычитать можно только вектора с одинаковой размерностью. Результатом операции сложения (вычитания) является вектор, компоненты которого равны сумме (разности) соответствующих компонент двух других векторов.

→ → →

3

2

5

 

c = a ± b

ci =ai ±bi , i =1,2,3,..,n Пример. a

=

b

=

c

=

 

 

 

5

 

7

 

12

(С) ИиКМ РХТУ январь 2007г. Калинкин Владимир Николаевич

5

свойство операции сложения (вычитания):

 

коммутативность

→ → →

+b = b + aa

ассоциативность

→ →

 

a

+( b

+ c ) =

( a

+ b) + c

 

 

Программа для вычисления суммы векторов

Исполняемая процедура (main)

Вызываемая процедура

Option base 1

 

Sub AddV(Nrow%, a!()), b!(), r())

Sub AddVector()

Dim i As Integer

Dim n%, a!(), b!(), c!()

For i = 1 to Nrow

Dim i As Integer

r(i) = a(i) + b(i)

n=Cells(2,1)

 

 

next i

Redim a(n), b(n), c(n)

End Sub

For i = 1 to n

 

 

 

a(i)=Cells(3 + i, 1)

 

b(i)=Cells(3 + i, 2)

Вызов процедуры

Next i

 

 

 

 

For i= 1 to n

 

 

Call AddV(n,a,b,c)

c(i) = a(i) + b(i)

 

Next i

 

 

 

 

For i= 1 to n

Cells(3 + i, 3)=c(i)

Next i

End Sub

Сложение и вычитание матриц. Складывать или вычитать можно только матрицы с одинаковой размерностью. Результатом операции сложения (вычитания) является матрица, элементы которой равны сумме (разности) соответствующих элементов двух других матриц.

=

= =

C

= A ± B ; cij =aij ± bij, i =1,2,3,...,n; j =1,2,3,...,m

свойство операции сложения (вычитания):

коммутативность

=

=

= =

 

A+ B

= B+A ;

ассоциативность

=

=

=

= = =

A+(B+C) =

(A+B) +C

(С) ИиКМ РХТУ январь 2007г. Калинкин Владимир Николаевич

6

Программа для вычисления суммы матриц

 

Вызываемая процедура

Sub AddM(Nrow As Integer, Ncol As Integer, _

A() As Single, B() As Single, C() As Single)

Dim i As Integer

Dim j As Integer

For i = 1 to Nrow

For j = 1 to Ncol

C(i, j) = A(i, j) + B(i, j)

Next j

Next i

End Sub

Умножение вектора на константу. Результатом умножения является вектор, компоненты которого равны произведению соответствующих компонент исходного вектора на константу.

 

 

 

 

 

 

 

 

 

 

 

 

 

c

a

ci ai , i =1,2,3,...,n

Пример.

 

2

= 2.3

2

4.6

λ = 2.3 a

=

 

c

 

 

=

 

 

 

 

 

 

3

 

 

 

3

 

6.9

Свойства операции:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

λ ( a

+ b ) a

b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(λ +β) a

a

a

 

 

 

 

 

 

 

 

 

→ →

λ(β a ) =(λβ) a

a = 00

→ →

1 a = a

→ →

(1) a = − a

Умножение матрицы на константу. Результатом умножения является матрица, элементы которой равны произведению соответствующих элементов исходной матрицы на константу.

= =

C A; ci, j ai, j , i =1,2,3,...,n; j =1,2,3,...,m

Свойства операции:

(С) ИиКМ РХТУ январь 2007г. Калинкин Владимир Николаевич

7

= =

=

=

 

λ (A+B) AB

 

=

=

=

 

(λ +β) A AA

 

==

λ(βA) =(λβ) A

=

A = 00

= =

 

1 A = A

=

=

(1) A

= −A

Транспонирование вектора – это изменения представления вектора. Представление в виде столбца на строку.

 

a1

 

 

 

 

 

 

 

 

 

 

a2

 

=[a1 a2 .... an1 an ]

a

 

 

a

T

= .

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

an

 

 

 

 

2

Пример. a

=

aT =[2 3]

 

3

 

Транспонирование матрицы – это замена строк матрицы соответствующими столбцами т.е. a'j,i =ai, j , гдеi =1,2,3,...,n; j =1,2,3,...,m

=T

a

11

a

12

a

 

a

T

a

11

a

21

a

31

 

a

n1

 

 

 

13

 

1m

 

 

 

 

 

 

 

A

=[A]T = a21 a22

a23

a2m

 

= a12

a22

a32

an2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

an2

 

 

 

 

 

 

a2m

 

 

 

 

 

 

 

an1

an3 anm

a1m

a3m anm

Программа для вычисления транспонированной матрицы

Вызываемая процедура

Sub TranM(Nrow As Integer, Ncol As Integer, _

A() As Single, At() As Single)

Dim I As Integer, j As Integer

For i = 1 to Nrow

For j = 1 to Ncol

At(j,i)=A(i,j)

Next j

Next i

End Sub

(С) ИиКМ РХТУ январь 2007г. Калинкин Владимир Николаевич

Скалярное произведение векторов – это значение суммы произведений со-8

ответствующих компонент двух векторов.

 

 

 

 

 

→ →

n

 

 

 

z =( a , b) =aT b =

ai bi , i =1,2,3,...,n

 

 

 

 

 

 

i=1

2

4

z =[2

4

= 2 4 +3 5 = 23

Пример. a

=

b

=

3]

 

3

 

5

 

5

 

Вызываемая функция

Function Scal(Nrow As Integer, a() As Single, b() As Single) Dim i As Integer, s As Single

s = 0

For i = 1 to Nrow s = s + a(i) * b(i)

Next i

Scal = s

End Function

 

 

 

 

Угол между векторами. Косинус угла

cos(θ) =

 

aT

b

 

 

 

 

 

 

 

 

 

 

a

b

 

 

 

 

 

 

 

 

Вызываемая функция ( обращается к функциям Scal и NVect )

Function Cost(n As Integer, a() As Single, b() As Single)

Cost = Scal(n,a,b)/(NVec(n,a) * NVec(n,b))

End Function

Ортогональность векторов cos(θ) =0 т.е. aT b =0

Могут возникнуть две задачи:

Проверка ортогональности двух векторов даны вектора

1

1

1

= −1 1 +3 3 2 4 =0

a

=

3

 

b

= 3

z =[1 3 2] 3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

4

4

 

Эти вектора ортогональны.

(С) ИиКМ РХТУ январь 2007г. Калинкин Владимир Николаевич

9

Найти вектор ортогональный данному.

 

1

 

b1

 

 

 

 

= 3

 

[1 3 2] b

 

 

=(1) b +3 b

 

+(2) b =0

a

2

2

 

 

 

 

 

1

3

 

 

 

 

 

 

 

 

 

 

2

b3

 

 

 

 

задаем b1 =3 b2 =5

 

3

=

 

 

получаем (3) +15 +(2) b3 =0 12 2 b3 =0 b3 =6 b

5

 

 

 

 

 

 

6

Линейная зависимость векторов

 

(i)

 

 

 

 

 

 

 

 

 

 

 

m

(i)

Вектора a

называются линейно зависимыми, если соотношение βi a

= 0

справедливо, хотя бы при одном множителе βi

 

 

i=1

 

 

отличным от нуля.

 

 

Пример:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(1)

2

(2)

1

 

(1)

 

(2)

 

2

1

0

 

 

a

= ; a

=

 

β1 a

 

2 a

= 0

β1 2

=

 

 

 

 

4

 

2

 

 

 

 

 

 

 

4

2

0

 

 

β1 2 2 1 =0 β2 = −2 β1

 

 

 

 

 

 

 

 

 

 

β1 4 2 2 =0 β1 4 −β1 4 =0 β1 0 =0 при любомβ1

 

 

 

 

(1)

1

(2)

+ 2

 

(1)

(2)

 

1

+ 2

0

 

a

= ; a

=

 

β1 a

2 a

=0

β1 2

=

 

 

2

 

1

 

 

 

 

 

 

 

2

1

0

 

β1 12 2 =0 β1 = −2 β2

 

 

 

 

 

 

 

 

 

 

β1 2 −β2 1 =0

−β2 4 −β2 1 =0 β2 (5) =0 толькоприβ2 =0

 

 

 

Если m>n, то вектора линейно зависимы, где m - количество векторов, а n – размерностью пространства.

Умножение матриц.

= = =

= = =

= =

C = A B B A Cnm = Ank Bkm

 

 

=

Количество столбцов матрицы A должно равняться количеству строк матрицы

=

 

=

B . Элемент cij

вычисляется как скалярное произведение i-й строки матрицы A и j-

 

=

k

го столбца матрицы B :

cij = ail blj

l=1

(С) ИиКМ РХТУ январь 2007г. Калинкин Владимир Николаевич

10

Вызываемая процедура

 

Sub MultM((NrowA as Integer, NcolA As Integer, NcolB As Integer, _

A() As Single, B() As Single, C() As Single) Dim i As Integer, j As Integer, l as Single

Dim s As Single For i = 1 to NrowA

For j = 1 to NcolA s = 0

For l = 1 to NcolB: s = s + A(i, l) + B(l, j): Next l C(i, j)=s

Next j

Next i

End Sub

 

 

=

 

=

=

 

 

 

 

 

Пример. Вычислить матрицу C =

A B.

 

 

 

 

 

 

=

2

1

 

0

=

1

0

1

2

 

 

 

 

0

 

 

A =

 

2

 

1

;

B =

3 1

1

 

 

1

 

 

 

 

2

1

 

 

 

 

 

 

 

 

 

1

2

=

2 1 0

1

0

1

2

5 1

2 5

 

 

 

 

 

C = 1 2 1

 

3

1

0

1

= 8 4

2 6

 

 

 

 

 

 

2

1

 

 

 

 

 

 

 

 

1

2

 

 

 

Пример. Вычислить значение матричного выражения R. Сохраните промежуточные вычисления. Составите программу для вычисления R, используя язык программирования VBA. Проведите расчёт по программе и сравните результаты. Операция sled([матрица]) – произведение диагональных элементов матрицы.

 

 

 

 

 

 

R =

 

 

 

=

 

= →

 

= →

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A B c

+A d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

=

2

1 1

= 1

2

 

2

 

3

 

 

 

 

 

 

A

=

 

;

B

= 3

1 ;

c =

;

d =

1

 

 

 

 

 

 

 

 

1

3 2

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

1

 

 

 

 

 

2

 

 

 

 

 

 

 

 

=

= =

2 1

 

1

1

2

9

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RM = A B = 1 3 2

3 1

= 18 7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

1

 

 

 

 

 

 

 

 

 

 

=

= →

 

9

6

2

36

 

=

 

= →

2

1 1

 

3

9

 

 

 

 

 

 

RV = RM c

= 18

7

3

= 57

 

RV1 = A d =

1

3

 

2

 

1

= 10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

=

=

=

 

9

36

45

R =

2

 

 

452 +672

=80.709

RV1

= RV1+RV =

+

=

 

 

rv1i =

 

 

 

10

57

67

 

 

i=1