Вычислительная Математика / lecture_4
.pdf(С) ИиКМ РХТУ январь 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 |
n−1 |
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 определяет номер строки (1≤i ≤ n) , а j – номер столбца (1≤ j ≤ 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) =λ A+λ B |
|
||
= |
= |
= |
|
(λ +β) A =λ A+βA |
|
==
λ(βA) =(λβ) A
=→
A = 00
= = |
|
1 A = A |
|
= |
= |
(−1) A |
= −A |
Транспонирование вектора – это изменения представления вектора. Представление в виде столбца на строку.
|
a1 |
|
|
|
|
|
|
|
|
|
|
→ |
a2 |
|
→ |
=[a1 a2 .... an−1 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 1+β2 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 |
|
|
|
|
|
|
|
|
|
|