Сторінка
3

Структуровані типи даних.Операції над двомірними масивами

l a21 a22 = l a21 l a22 .

Безпосередніми наслідками вказаних визначень є співвідношення:

1) 1 • А = А • 1 = А ;

2) 0 • А = А • 0 = 0 ;

3) a • О = О • a = О ;

4) a (b А) = (a b) А = (А a) b = А (a b);

5) А + (В +С) = (А+ В) + С;

6) А + В = В + А;

7) (a + b) А = a А + b А;

8) a (А + В) = a А + a В;

9) А + О = О + А = А;

10) А + (-1)А = О;

Тут А, В, С - матриці одного порядку, a, b - числа, О - нульова матриця (всі її елементи дорівнюють нулеві). Перевірка вказаних властивостей не викликає ускладнень.

Елемент ci j матриці С, яка є добутком матриці В на матрицю А, дорівнює сумі добутків елементів і-того рядка матриці В на відповідний елемент j-того стовпця матриці А, тобто

k

ci j =åbi lal j (i=1,2, ,m; j=1,2, ,n).

l=1

Властивості добутку матриць:

1) (А В) С = А (В С);

2) А (В + С) = А В + А С;

3) (А + В) С = А С + В С;

4) А Е = Е А = А;

5) (А В)*= В*А*;

Тут А, В, С - довільні матриці, для яких вказані рівності мають сенс.

Доведемо першу рівність - асоціативність множення матриць.

Позначимо D = A B, F = B C, G = D C, H = A F. Потрібно довести, що G =H. Оскільки множення вказаних вище матриць можливе, то А буде порядку m´n, В - порядку n´k, С - порядку k´l. З означення множення дістанемо, що D - порядку m´k, F - порядку n´l, G i H - матриці одного порядку m´l.

Зафіксуємо довільні i, j і доведемо, що gij = hij.Маємо

k k k

gij = å dia caj = å å aib bba caj ;

a=1 a=1 b=1

n n k

hij = å aibfbj =å aib å bba caj .

b=1 b=1 a=1

Позначивши tab = aib bba caj, отримаємо

k n n k

gij = å å tab , hij = å å tab .

a=1 b=1 b=1 a=1

Кожна із вказаних сум дорівнює сумі всіх елементів деякої матриці (tab ), обчисленій двома різними способами. Отже, hij = gij, що й потрібно довести.

Інші властивості добутку доводяться аналогіччно, тільки простіше.

Оберненою називається матриця А-1, така що якщо її помножити на матрицю до якої вона обернена, то в результаті отримаємо одиничну матрицю. А*А-1=Е

Знайти матрицю, обернену до квадратної матриці М= аi k ,можна за допомогою операцій над розширеною матрицею А:

m11 . . . . m1n 1 . . . . 0

A= . . . . . . . . . . . . . . . .

mn1 . . . . mnn 0 . . . . 1

Якщо ліву частину матриці А звести елементарними перетвореннями до одиничної, то в правій частині дістанемо матрицю, обернену до М.

До елементарних перетворень належать:

1)Переставлення двох рядків матриці А (або двох однойменних стовпців в лівій і правій частинах матриці А);

2)Множення рядка на відмінне від нуля число( або однойменних стовпців в лівій і правій частинах матриці А);

3)Заміна рядка сумою цього і будь-якого іншого рядка (або та ж сама сума однойменних стовпців в лівій і правій частинах матриці А);

Ділення двох матриць.

Дію ділення можна замінити дією множення на обернену матрицю

A B = A * В-1

PROGRAM povorot; {Поворот матриці }

USES CRT;

CONST

N=3;

TYPE

S=ARRAY[1 N,1 N]OF REAL;

SS=ARRAY[1 N,1 N]OF REAL;

VAR

S1:S;S2:SS;M,i,j:INTEGER;

BEGIN

FOR i:=1 TO N DO

BEGIN

FOR j:=1 TO N DO

BEGIN

READ(S1[i,j]); {Ввід матриці}

END;

END;

WRITE('Vvedit kut povorotu');

READ(M); {Ввід кута повороту}

CASE M OF

90:BEGIN {Поворот матриці на 90°}

FOR i:=1 TO N DO

FOR j:=1 TO N DO

S2[I,J]:=S1[N-J+1,I];

FOR i:=1 TO N DO

FOR j:=1 TO N DO

WRITELN(S2[i,j]);

END;

180: BEGIN {Поворот матриці на 180°}

FOR I:=1 TO N DO

FOR J:=1 TO N DO

S2[I,J]:=S1[N-I+1,N-J+1];

FOR I:=1 TO N DO

FOR J:=1 TO N DO

WRITELN(S2[I,J]);

END;

270: BEGIN {Поворот матриці на 270°}

FOR I:=1 TO N DO

FOR J:=1 TO N DO

S2[I,J]:=S1[J,N-I+1];

FOR I:=1 TO N DO

FOR J:=1 TO N DO

WRITELN(S2[I,J]); {Вивід результату}

END; END;

END.

Program Suma; {Сума двох матриць}

Const dim1=20;

dim2=40;{dim2=2*dim1}

Type ar1=array[1 dim1,1 dim2] of real;

ar2=array[1 dim1,1 dim2] of real;

ar3=array[1 dim1,1 dim2] of real;

Var i,j,n,m:integer;

A:ar1;

B:ar2;

C:ar3;

Begin

write('Введіть розмірність матриці М');

readln(n,m); {Ввід розмірності матриць }

write('Введіть матрицю М');

For i:=1 to n do

For j:=1 to m do

read(A[i,j]); {Ввід першої матриці}

write('Введіть матрицю М');

For i:=1 to n do

For j:=1 to m do

read(B[i,j]); {Ввід другої матриці}

For i:=1 to n do

For j:=1 to m do

C[i,j]:=A[i,j]+B[i,j]; {Обчислення суми матриць}

For i:=1 to n do

For j:=1 to m do

writeln(C[i,j]); {Вивід результату}

End.

Результати:

n=2,m=3

1 -4 5 6 -1 0 7 -5 5

0 3 8 6 0 -9 6 3 -1

Program Rizn; {Знаходження різниці двох матриць}

Const dim1=20;

dim2=40;

Type ar1=array[1 dim1,1 dim2] of real;

ar2=array[1 dim1,1 dim2] of real;

ar3=array[1 dim1,1 dim2] of real;

Var i,j,n,m:integer;

A:ar1;

B:ar2;

C:ar3;

Begin

write('Введіть розмірність матриці М');

readln(n,m); {Ввід розмірності матриць}

write('Введіть матрицю М');

For i:=1 to n do

For j:=1 to m do

Перейти на сторінку номер:
 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15 
 16  17  18  19  20  21 


Інші реферати на тему «Інформатика»: