КУРСОВА РОБОТА

НА ТЕМУ:

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

Анотація

В цій курсовій роботі розглянуті дії над

матрицями , такі як додавання , віднімання, мно-

ження та ділення двох матриць. А також знаход-

ження транспонованої та оберненої матриць.Про-

грами реалізовані на мові програмування Turbo

Pascal 7.0

ЗМІСТ

1.Вступ.

2.Теоретична частина.

2.1.Матриця і її властивості.

2.2. Дії над матрицями.

3.Постановка задачі.

4.Додатки.

4.1.Додатток 1(текст програм).

4.2.Додаток 2(блок-схеми до програм).

5.Висновки.

6.Використана література.

1.Вступ.

У всі часи людина прагнула розширити свої можливості,за
допомогою різних знарядь праці,пізнання світу та засобів існування.

Так, наприклад нестачу зору компексує: мікроскоп, телескоп,
радіолокатор. Обмежені можливості передачі інформації поширюються
телефоном, радіо, телебаченням.

Обчислювані машини «доповнюють» можливості мозку людини,
розширюють його можливості по обробці інформації, дозволяють прискорити
прийняття рішення в процесі якої-небудь роботи.

В кінці 40-х років 20 ст. Праця в області ядерної фізики,
баллистики керуючих знарядь, термодинаміки і т.д. вимагали такої
обчислюваної роботи, яку вже було не можливо виконати за допомогою
арифмометрів-головного обчислюваного інструмента того часу. Наука і
техніка були поставлені перед делемою: або всім взятись за арифмометри
або винайти новий ефективний інструмент обчислення. Аналогічні проблеми
уже не раз виникали, і будуть неодноразово виникати перед вченими і
інженерами: екстенсивний шлях розвитку дальше неможливий, потрібний
новий, інтенсивний шлях. Проблема була вирішена створенням універсальної
обчислюваної машини. Термін «універсальна»використовується не
випадково.Спеціалізовані машини (наприклад,для обробки банківських
рахунків і т. д.) існували і раніше, але не було машини, команди якої
записані в память,можна б було швидко замінити новими.

Крім математичних обчислень ЕОМ може виконувати і логічні,тобто
робити вибір між варіантами (вітками) продовження дій в залежності від
виконання деяких умов. Таким чином ЕОМ-це дещо більше ніж «швидкий
арифмометр».

Коротка характеристика різних поколінь ЕОМ

Перше покоління ЕОМ:

Технічна основа елементної бази машин 1-го покоління-електронні
лампи. Максимальна швидкодія -10 у степені 2. Математичні операції в
секунду(оп/с),обєм оперативної памяті -10 у 2 степені слів. Режим
використання-монопольний,тобто в розпорядженні користувача були всі
ресурси машини і її управління.

Друге покоління ЕОМ:

Технічна основа- транзистори.максимальна швидкодія-10 у 4
степені оп/с,обєм оперативної памяті-10 у 4 степені слів.Режим
виконання-пакетна обробка.

Третє покоління ЕОМ:

Технічна основа-занадто великі інтегральні схеми,які на малих
півпровідникових кристалах реалізують велики схеми машин 2-го
покоління.Максимальна швидкодія-10 у 6 степені оп/с,оперативна память
-10 у 6 степені слів,внутрішня память-10 у 9 степені слів.Метод
виконання -режим розподілу часу разом з пакетною обробкою.

4-те покоління ЕОМ:

Технічна основа-занадто великі інтегральні схеми.Традиційна архітектура
ЕОМ Фон Неймана домінувала на протязі трьох поколінь.

Максимальна швидкодія-10 у 9 степені оп/с,оперативна память-10 у 7
степені слів,внутрішня память обмежена в основному економічними
міркуваннями.

5-те покоління ЕОМ.

Проекти ЕОМ пятого покоління знаходяться в стадії реалізації.
Максимальна швидкодія математичних обчислень доповнюється тут високими
скоростями логічного виводу.Форма спілкування з ЕОМ

на звичайній мові і дисципліна програм,як наука для користувача
перестають в майбутньому бути актуальними.

Історія і зміст предмета.

Обчислюваною математикою називають розділ математики,в якому
вивчають різні проблеми одержання числових результатів обчислень
математичних задач.

Якщо звернутися до історії математики то можна помітити,що
обчислювана математика перетворилась на самостійну вітку порівняно
недавно,десь в середині нашого століття.Цей факт в любому напрямку науки
повязані з появленням власних і внутрішніх задач.

Обчислювальна математика,як частина математики має таку ж
древню і багату історію, як і сама математика.Евклідова математика і
механіка Ньютона,теорія електромагнітного поля і квантова теорія
побудованіна математичній основі і дають потужні інструменти обчислень.

Зпоявленням ЕОМ розпочався золотий вік обчислювальної
математики.вона швидко розвивається. Звернувшись до періоду розвитку
обчислювальної математики після полявлення ЕОМ,можна побачити,що
найбільш яскраві досягнення в розвязку задач були отримані саме тими
вченими і інженерами,хто працював на ЕОМ, всі отрамані засоби
математики:»чистої»,прикладної,обчислювальної.

З точки зору техніки обчислювальної математика дає в її
розпорядження методи , які умовно можна розбити на слідуючі 4 групи:
якісні, аналітичні , численні.

2.1.Матриця і її властивості.

Прямокутна таблиця з m(n чисел ,що має m рядків і n стовпців

a11 a12 … a1n

A= … …
… …

am1 am2 … amn

називається матрицею.Коротко матрицю позначають так:

А= ai j (і=1,2,…,m; j=1,2,…,n),

де ai j -елементи матриці.

Матрицю з єдиним стовпцем прийнято називати вектор-стовпцем, а матрицю
з єдиним рядком ( вектор-рядком.

Рівні матриці повинні мати рівні кількості рядків і стовпців, а також
рівні відповідні елементи.

Якщо в матриці число рядків рівне числу стовпців ,то матриця
називається квадратною :

a11 a12 … a1n

A= … … … …

an1 an2 … ann

Матриця А* називається транспонованою до матриці А , якщо стовпці
матриці А являються рядками матриці А*.

Наприклад: a11 a12

A= a21 a22

a31 a32

Транспонованою матрицею А* буде:

a11 a21 a31

A*=

a12
a22 a32

Приклад.Нехай А=(aij), де і=1,..,m, о=1,..,n. Це значить, що А- матриця
порядку m(n. Позначимо А* матрицю В = (bij), для якої bij = aji, тоді
А*матриця порядку n(m.

Квадратна матриця А називається симетричною відносно головної діагоналі
,якщо ai j=aj i .

Квадратна матриця, в якщї всі елементи, що не лежать на головній
діагоналі, дорівнюють нулю, називається дшагональною.Якщо елементи
діагональної матриці, що розміщені на головній діагоналі, дорівнюють
одиниці, то матриця називається одиничною і позначають її буквою Е:

1 0 … 0

Е= 0 1 … 0

. . . . . . . . . . .

0 0 … 1

2.2.Дії над матрицями:

Як виявляється, над матрицями можливі арифметичні дії, властивості яких
близькі до властивостей арифметичних дій над числами.

Сумою двох матриць ai j і bi j з одинаковою кількістю рядків і
стовпців називається матриця сi j ,у якої елементом сi j є сума
aij+bij відповідних елементів матриць ai j bi j ,тобто

ai j + bi j = ci j ,

якщо ai j+bi j=ci j (i=1,2,..,m; j=1,2,..,n)

Приклад: a11 a12 b11 b12 a11+b11 a12+b12

a21 a22 b21 b22 a21+b21
a22+b22

Аналогічно знаходимо різницю двох матриць.

Матрицці різних порядків додавати(віднімати) не можна.

Множення матриці на число.Щоб помножити матрицю на число ( або число на
матрицю, потрібно кожний елемент матриці помножити на це число.

( * ai j = ( ai j

a11 a12 ( a11 ( a12

a21 a22 = ( a21 ( a22 .

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

1 ( А = А ( 1 = А ;

0 ( А = А ( 0 = 0 ;

( ( О = О ( ( = О ;

( (( А) = (( () А = (А () ( = А (( ();

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

А + В = В + А;

(( + () А = ( А + ( А;

( (А + В) = ( А + ( В;

А + О = О + А = А;

А + (-1)А = О;

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

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

k

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

(=1

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

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

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

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

А Е = Е А = А;

(А В)*= В*А*;

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

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

Позначимо 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)Заміна рядка сумою цього і будь-якого іншого рядка (або та ж сама
сума однойменних стовпців в лівій і правій частинах матриці А);

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

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

( ( ( ( ( * В-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]); {Ввід другої
матриці}

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 -5 -3
5

0 3 8 6 0 -9 -6 3
17

if k<>i 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];

Вивід оберненої матриці}

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 -12.5

Program obernena; {Знаходження оберненої матриці}

Const dim1=20;

dim2=40;{dim2=2*dim1}

Type ar=array[1..dim1,1..dim1] of real;

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

Var i,j,k,n1:integer; n:integer;Var m:ar;e:real;

t,s:real;

a:ar1;

Begin

readln(e); {Ввід точності обчислень}

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

readln(n); {Ввфд розмірності квадратної матриці}

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

For i:=1 to n do

For j:=1 to n do

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

n1:=2*n;

For i:=1 to n do

For j:=1 to n1 do

if j<=n then a[i,j]:=m[i,j] else if j=n+i then a[i,j]:=1 else a[i,j]:=0; For i:=1 to n do begin k:=i;s:=a[i,i]; for j:=i+1 to n do begin t:=a[j,i]; if abs(s)i 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

For k:=1 to n do

C[i,j]:=C[i,j]+B[k,i]*M[j,k]; {Множення матриці на обернену}

For i:=1 to n do

For j:=1 to n do

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

End.

Результати:

n=3

1 2 3 1 2 3

M= 4 5 6 B= 4 5 6

7 8 9 7 8 9

1 0 0

C= 0 1 0

0 0 1

Початок

Ввід n,m

i=1,n

j=1,m

Ввід А[i,j]

i=1,n

j=1,m

Ввід B[i,j]

i=1,n

j=1,m

C[i,j]=A[i,j]+B[i,j]

i=1,n

j=1,m

Вивід С[i,j]

Кінець

Початок

Ввід n,m

i=1,n

j=1,m

Ввід А[i,j]

i=1,n

j=1,m

Ввід B[i,j]

i=1,n

j=1,m

C[i,j]=A[i,j]-B[i,j]

i=1,n

j=1,m

Вивід С[i,j]

Кінець

Початок

Ввід n,m,l

i=1,n

j=1,m

Ввід А[i,j]

i=1,l

j=1,n

Ввід B[i,j]

i=1,m

j=1,l

k=1,n

C[i,j]=С[i,j]+А[k,i]*В[j,k]

i=1,m

j=1,l

Вивід С[i,j]

Початок

Ввід e,n

i=1,n

j=1,n

Ввід M[i,j]

n1=2*n

i=1,n

j=1,n

так j=n ні

a[i,j]=m[i,j] так j=n+1 ні

a[i,j]=1
a[i,j]=0

i=1,n

k=i s=a[i,i]

j=1,n

t=a[j,i]

s < t так s=t k=j s < e так М-вироджена j=i,n1 t=a[k,j] a[k,j]=a[i,j] a[i,j]=t/s k=1,n k<>i

j=n1,1

a[k,j]=a[k,j]-a[i,j]*a[k,i]

i=1,n

j=1,n

M[i,j]=A[i,j=m]

i=1,n

j=1,n

Вивід M[i,j]

Кінець

Початок

Ввід e,n

i=1,n

j=1,n

Ввід M[i,j]

n1=2*n

i=1,n

j=1,n

так j=n ні

a[i,j]=m[i,j] так j=n+1 ні

a[i,j]=1
a[i,j]=0

i=1,n

k=i s=a[i,i]

j=1,n

t=a[j,i]

s < t так s=t k=j s < e так М-вироджена j=i,n1 t=a[k,j] a[k,j]=a[i,j] a[i,j]=t/s k=1,n k<>i

j=n1,1

a[k,j]=a[k,j]-a[i,j]*a[k,i]

i=1,n

j=1,n

M[i,j]=A[i,j=m]

i=1,n

j=1,n

k=1,n

C[i,j]=С[i,j]+B[k,i]*M[j,k]

i=1,n

j=1,n

Вивід С[i,j]

Кінець

Початок

Ввід n

i=1,n

j=1,n

Ввід S1[i,j]

Ввід М

М=90( M=180(
M=270(

i=1,n i=1,n
i=1,n

j=1,n j=1,n
j=1,n

S2[i,j]=S1[n-j+1,i] S2[i,j]=S1[n-i+1,n-j+1]
S2]i,j]=S1[j,n-i+1]

i=1,n

j=1,n

Вивід S2[i,j]

Кінець

Program kursov;

type E=ARRAY [1..3,1..3] of real;

var A,B,C,S:E;

f,a1,b1:real;

t:integer;

mass:char;

procedure INPUT (mass:char; var A:E);

var x,y,n:integer;

begin

writeln (‘‚ўi¤ Ґ«Ґ¬Ґвiў ¬ бЁўг ‘,mass);

for y:=1 to 3 do

begin

for x:=1 to 3 do

read (A[x,y]);

end;

end;

procedure SUMM (A,B:E; var S:E);

var x,y:integer;

begin

for y:=1 to 3 do

for x:=1 to 3 do

S[x,y]:=A[x,y]+B[x,y];

end;

procedure SUB (A,B,S:E; var C:E;b2:real);

Њ бЁў C’);

for y:=1 to 3 do

begin

writeln;

for x:=1 to 3 do

begin

C[x,y]:=0;

for i:=1 to 3 do

C[x,y]:=C[x,y]+(S[i,x]*B[i,y]);

write (C[x,y]:7:2);

if (x=1) AND (y=1) then b2:=C[x,y]

else

if C[x,y]40 then a1:=0.2

else

a1:=0.11;

f:=SIN(a1*t)-EXP(2*a1*t)+b1;

writeln(t:8,f:16:4);

end;

end.

Початок

Ввід n,m

i=1,n

j=1,m

Ввід А[i,j]

i=1,n

j=1,m

Ввід B[i,j]

i=1,n

j=1,m

S[i,j]=A[i,j]+B[i,j]

i=1,m

j=1,l

С[i,j]+А[k,i]*В[j,k]

i=1,n

j=1,m

Вивід С[i,j]

так х=1,y=1 ні

b2=C[x,y]

так C[x,y]

Похожие записи