WWW.REFERATCENTRAL.ORG.UA - Я ТУТ НАВЧАЮСЬ

... відкритий, безкоштовний архів рефератів, курсових, дипломних робіт

ГоловнаІнформатика, Компютерні науки → Структуровані типи даних. Операції над двомірними масивами - Курсова робота

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

;
2) 0 o А = А o 0 = 0 ;
3) o О = О o = О ;
4) ( А) = ( ) А = (А ) = А ( );
5) А + (В +С) = (А+ В) + С;
6) А + В = В + А;
7) ( + ) А = А + А;
8) (А + В) = А + В;
9) А + О = О + А = А;
10) А + (-1)А = О;
Тут А, В, С - матриці одного порядку, , - числа, О - нульова матриця (всі її елементи дорівнюють нулеві). Перевірка вказаних властивостей не викликає ускладнень.
Елемент ci j матриці С, яка є добутком матриці В на матрицю А, дорівнює сумі добутків елементів і-того рядка матриці В на відповідний елемент j-того стовпця матриці А, тобто
k
ci j = bi a j (i=1,2,..,m; j=1,2,..,n).
=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 = di c j = ai b c j ;
=1 =1 =1
n n k
hij = ai f j = ai b c j .
=1 =1 =1
Позначивши t = ai b c j, отримаємо
k n n k
gij = t , hij = t .
=1 =1 =1 =1
Кожна із вказаних сум дорівнює сумі всіх елементів деякої матриці (t ), обчисленій двома різними способами.Отже, 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
read(A[i,j]); {Ввід першої матриці}
write('Введіть матрицю М');
For i:=1 to n do
For j:=1 to m do
read(B[i,j]); {Ввід другої матриці}
Fori:=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 -5 -3 5
0 3 8 6 0 -9 -6 3 17
if ki then
For j:=n1 downto 1 do
a[k,j]:=a[k,j]-a[i,j]*a[k,i];end;
For i:=1 to n do
For j:=1 to n do
m[i,j]:=a[i,j+n];
For i:=1 to n do
For j:=1 to n do
writeln(m[i,j]:6:2); {Вивід оберненої матриці}
End.
2 4 3 -0,2 0 0,2
М= 0 -1 -5 М-1 = 0,41 0,18 -0,112
7 4 3 -0,08 -0,24 0,02
Program Dobutok; {Множення числа на матрицю}
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;
Var i,j,n,m:integer;
A:ar1; C:ar2;
r:real;
Begin
write('Введіть число');
readln(r); {Ввід числа}
write('Введіть розмірність матриці М');
readln(n,m); {Ввід розмірності матриці}
write('Введіть матрицю М');
For i:=1 to n do
For j:=1 to m do
read(A[i,j]); {Ввід матриці}
For i:=1 to n do
For j:=1 to m do
C[i,j]:=A[i,j]*r; {Множення матриці на число}
For i:=1 to n do
For j:=1 to m do
writeln(C[i,j]); {Вивід результату}
End.
Резуьтати:
r=5 n=3,m=2
-1 2 -5 10
M= 3 5 C= 15 25
4 -2.5 20
Loading...

 
 

Цікаве