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

Лекции - 2005 / lecture_4-5

.pdf
Скачиваний:
21
Добавлен:
03.10.2013
Размер:
193.47 Кб
Скачать

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

1

Лекция -(4,5)

Вектора, матрицы и программирование операций над ними.

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

понятие связанного вектора в n-мерном пространстве и обозначить как a =[a]

a1a2 = ..an

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

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

Характеристики и типы векторов

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

 

=

n

2

 

 

 

= 22 +32 = 3.61 пример

 

 

 

 

a

ai2

a

=

 

 

 

 

a

 

 

 

 

i=1

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

программы: Option base Option explicit Sub norma_m()

Dim n%,a!(),s!,i%

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: s=s+a(i)*a(i): next i

s=sqr(s): cells(2,3)=s End Sub

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

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

как 0 =

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

0.6

 

 

 

 

 

 

=1

 

 

 

 

 

 

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

=

 

 

 

 

a

 

 

 

 

 

 

0.8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

компоненты. a

= b a1

= b1 , a2

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

Операции над векторами.

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

→ → →

+bi

где i =

3

2

=

3

2

5

 

c = a+ b ci = ai

1,2,3,.., n a

= b

=

c

 

+

 

=

 

 

 

 

 

 

5

7

 

 

5

7

12

 

 

 

 

 

 

 

 

 

 

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

+ b

= b

+ a

 

→ →

 

 

 

 

 

 

 

 

 

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

+(b

+ c) = (a

+ b) + c

 

 

 

 

 

 

 

 

 

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

2

For i=1 to n: c(i)=a(i)+b(i): next i

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

 

 

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

 

 

2

= 2.3

2

 

4.6

c = λ

a ci =λ ai

λ = 2.3 a

=

3

c

3

=

6.9

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

λ (β

 

 

λ (a

+ b) =

λ a+λ

b (λ + β) a

= λ a

+ β a

 

a) = (λ

β) a

 

 

 

 

 

 

 

 

 

 

0 a = 0 1

a

= a (1) a

= −a

 

 

 

 

 

 

 

 

 

 

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

 

a

 

 

 

 

1

 

 

 

a2

 

a =

 

 

a

T

.

 

 

 

.

 

 

 

 

 

 

 

 

 

an

 

 

 

= [a a . . . . a a

 

] a

=

2 aT

= [2 3]

 

 

 

 

 

1 2

n1

n

 

 

 

 

 

 

 

 

 

3

 

Скалярное произведение векторов – это значение суммы произведений соответствующих компонент двух векторов.

 

→ →

 

n

bi

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

=

2

 

 

 

4

z = [23]

4

= 2 4 +3

5

= 23

z = (a, b) = aT b

= ai

a

 

b

=

 

 

 

 

 

 

 

i=1

 

 

 

 

 

 

 

3

 

 

 

 

5

 

 

5

 

 

 

s = 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

For i=1 to n: s=s+a(i)*b(i): next i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Scal=sqr(s)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Угол между векторами. Косинус угла cos(θ) =

 

 

 

aT b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

 

b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

= 0

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

1

1

z = [1 3

1

 

 

3 3 2 4 = 0

 

 

 

 

 

 

a

=

3

b =

3

2] 3 = −1 1 +

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

4

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

b1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

=

3

[1 3 2] b

=(1) b +3 b +(2) b

=0

 

задаем b =3 b

=5 получаем

 

 

a

 

 

 

 

 

 

 

 

 

2

 

1

2

 

 

3

 

 

 

 

 

 

1

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

b3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

=

 

 

 

 

 

 

 

 

 

 

 

 

 

(3) +15 +(2) b3 = 0 12 2 b3 = 0 b3 = 6 b

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

 

 

 

 

 

 

 

 

 

 

 

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

3

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

 

 

 

 

 

 

 

 

m

Вектора a(i) называются линейно зависимыми, если соотношение βi a(i) = 0

 

 

 

 

 

 

 

 

i=1

 

справедливо,

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

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

 

 

Пример:

 

 

 

 

 

 

 

 

 

 

2

 

1

 

β1 a(1) + β2 a(2) = 0

2

1

 

=

0

a(1) = ;

a(2) =

 

β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

 

 

 

a(1)

1

 

+ 2

β1 a(1)

+ β

 

1

 

+ 2

0

=

; a(2) =

 

2

a(2) = 0 β1

+ β2

 

 

=

 

2

1

 

 

 

 

2

1

0

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

 

 

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

 

 

β1 2

β2 1 = 0

β2 4 β2 1 = 0

 

= 0

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

матрицы и программирование операций над нами.

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

=

a

a

a

 

 

a

 

11

12

13

 

 

1m

 

A =[A]= a21

a22

a23

a2m

 

 

 

 

 

 

 

 

 

 

an2

an3

 

 

 

an1

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

m

A

=

∑∑ai2, j каноническая (Эвклидова)

 

1

i=1

j=1

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

4

 

 

 

 

=

 

 

 

 

m

ai, j

 

i =1,2,3, …., n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A

 

 

= max

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

j=1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

=

 

 

 

 

n

ai, j

 

 

j=1,2,3, …., m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A

 

 

= max

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j

i=1

 

 

 

 

 

 

a11

 

a12

...

 

a1m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

определитель detA= a

a21

a22

...

 

a2m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

... ... ... ...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

an1

 

an2

...

 

anm

 

 

 

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

 

 

 

 

 

 

 

Транспонирование матрицы

 

 

 

 

 

 

 

 

 

 

 

=T

 

 

a

 

a

21

 

a

31

 

 

a

n1

 

 

 

 

 

 

 

 

 

 

 

11

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A

=[A]T = a12

 

a22

 

a32

 

an2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a2m a3m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a1m

 

 

anm

 

 

 

Сложение и вычитание

 

 

 

 

 

 

 

 

 

=

=

 

=

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

for i=1 to n for j=1 to m

c(i,j)=a(i,j)+b(i,j) next j

next i

Умножение матрицы на константу

=

=

 

 

 

j=1,2,3,…,m

 

 

C = β A ; cij=β*aij , где i=1,2,3,…..,n

 

 

 

=

=

=

 

=

=

=

=

свойства: β ( A

+ B ) = β * A

+ β * B ;

(α + β) * A

=α * A

+ β * A ;

==

β*(α * A ) = (β *α)* A

Способ записи циклического алгоритма с использованием параметра цикла

i:=1

i=1 шаг 1 до n

группа операторов

группа операторов

i:= i+1

i<=n

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

5

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

=

=

=

=

=

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C = A* B

B * A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

=

 

=

 

=

; ограничения накладываемые на матрицы:

C nm =

A nk * B km

Количество столбцов матрицы

=

 

 

 

 

 

 

=

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

=

 

 

 

 

 

 

 

 

Элемент cij

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

 

 

=

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

матрицы B

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i=1 шаг 1 до n

 

 

 

 

 

 

cij

= ail *blj

фрагмент программы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

l=1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

for i=1 to n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j=1 шаг 1 до m

 

 

 

 

 

for j=1 to m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s=0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

for l=1 to k

 

 

 

 

 

 

 

 

 

 

 

 

 

s:=0

 

 

 

 

 

 

 

 

 

s=s+a(i,l)*b(l,j)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

next l

 

 

 

 

 

 

 

 

 

 

 

 

 

l=1 шаг 1 до k

 

 

 

 

 

 

 

c(i,j)=s

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

next j

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

next I

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s:=s+ail*blj

 

 

 

 

 

 

 

 

2 1 0

1

0

1

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

=

5 1

2 5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

= 1

2

1

* 3

1

0

1 = 8 4

2 6

 

cij:=s

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

2

1

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

=

Обратной матрицей называется квадратная матрица размерностью n на n - Ann1 . Результатом умножение обратной матрицы на исходную, как справа, так и слева

=

=

= =

=

является единичная матрица. A

1* A

= A* A

1= E

Метод Гаусса-Жордана.

Алгоритм.

Строим расширенную матрицу, дописав к исходной матрице справа единичную

 

=

 

=

 

преобразуем расширенную так, чтобы на месте исходной получилась

 

 

A

 

E

n n

 

n n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

единичная, то на месте единичной получится обратная

 

=

 

=

 

 

En n

 

Ann1

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

6

=

 

 

справа к

1. Строим расширенную матрицу С размерностью n на 2*n, как исходная,

=

 

 

=

 

=

 

.

 

 

которой дописывается единичная матрица той же размерности. C n 2n =

 

A

 

E

n n

 

 

 

n n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Задаем номеру ведущей строки k=1

2. Все элементы k-ой строки делим на элемент ckk, т.е. ckj = ckj ; j=k, k+1, k+2,

ckk

k+3,….,2*n; т.е. ckk=1

3. Преобразуем все строки кроме k–ой, i=1,2,3,….,n ik так, чтобы элементы cik=0. Для этого из из каждого элемента i-ой строки вычитаем соответствующие элемент k-ой строки умноженные на элемент cik, т.е. cij=cij-ckj*cik ; j= k, k+1,k+2,….., 2*n

4.Проверяем, если k<n, то k=k+1 выполняем пункт 2, иначе выводим полученную обратную матрицу, расположенную на месте единичной.

начало

ввод n,[A]

Вывод

[C]

формирование

матрицы [C]

конец

k=1 шаг 1 до n

s:=ckk

j=k шаг 1 до 2n

i=1 шаг 1 до n

ckj:=ckj/s

i=k

s:=cik

j=k шаг 1 до 2n cij=cij-s*ckj

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

7

Option Explicit

Option Base 1

Sub GausGord()

Dim a!(3, 3), b!(3, 3), c!(3, 6) Dim i%, j%, k%, n%, s!

n = Cells(1, 1)

For i = 1 To n: For j = 1 To n: a(i, j) = Cells(i + 1, j): Next j: Next i For i = 1 To n: For j = 1 To 2 * n

If j > n Then

If i = j - n Then c(i, j) = 1 Else c(i, j) = 0 Else

c(i, j) = a(i, j) End If

Next j: Next i For k = 1 To n

s = c(k, k): For j = k To 2 * n: c(k, j) = c(k, j) / s: Next j For i = 1 To n

If i <> k Then s = c(i, k)

For j = k To 2 * n: c(i, j) = c(i, j) - c(k, j) * s: Next j End If

Next i

Next k

For i = 1 To n: For j = 1 To 2 * n: Cells(i + 1, j + n + 1) = c(i, j): Next j: Next i End Sub

Пример решения.

 

2,00

1,00

1,00

 

 

2,00

1,00

1,00

1,00

0,00

0,00

k=1

 

 

 

[A] =

1,00

2,00

1,00

 

[C] =

1,00

2,00

1,00

0,00

1,00

0,00

 

 

 

 

 

1,00

1,00

2,00

 

 

1,00

1,00

2,00

0,00

0,00

1,00

 

 

 

 

1,00

0,50

0,50

 

0,00

0,00

 

i=2,3

 

1,00

0,50

0,50

 

0,50

0,00

0,00

 

k=2

0,50

 

 

 

 

1,00

2,00

1,00

0,00

1,00

0,00

1,00

 

 

0,00

1,50

0,50

 

-0,50

1,00

0,00

 

 

1,00

1,00

2,00

0,00

0,00

1,00

1,00

 

 

0,00

0,50

1,50

 

-0,50

0,00

1,00

 

 

1,00

0,50

0,50

 

0,00

0,00

 

i=1,3

 

0,00

0,33

 

-0,33

0,00

 

k=3

0,50

0,50

 

1,00

 

0,67

 

0,00

1,00

0,33

-0,33

0,67

0,00

 

 

 

0,00

1,00

0,33

 

-0,33

0,67

0,00

 

 

0,00

0,50

1,50

-0,50

0,00

1,00

0,50

 

 

0,00

0,00

1,33

 

-0,33 -0,33 1,00

 

 

1,00

0,00

0,33

 

-0,33

0,00

 

i=1,2

 

0,00

0,00

 

-0,25 -0,25

 

 

0,67

0,33

 

1,00

 

0,75

 

 

0,00

1,00

0,33

-0,33

0,67

0,00

0,33

 

 

0,00

1,00

0,00

 

-0,25

0,75

-0,25

 

 

0,00

0,00

1,00

-0,25 -0,25

0,75

 

 

 

0,00

0,00

1,00

 

-0,25 -0,25

0,75

 

 

Соседние файлы в папке Лекции - 2005