Допомога у написанні освітніх робіт...
Допоможемо швидко та з гарантією якості!

Turbo Paskal Операції над матрицами

РефератДопомога в написанніДізнатися вартістьмоєї роботи

Program MATRIX; {Найменування програми} Uses CRT; VAR i1, i2, i3: integer; {Лічильник рядків} j1, j2, j3: integer; {Лічильник шпальт} operation: integer; {Варіант розвитку програми} det: real; {Определитель}k: integer; {Робоча переменная}. Введення матриць можлива лише з клавіатури, безпосередньо при виконанні програми. Введення даних «з файла» не передбачено, т.к. цей варіант в умови завдання… Читати ще >

Turbo Paskal Операції над матрицами (реферат, курсова, диплом, контрольна)

Державний Комітет Російської Федерації по Вищому Образованию.

Санкт-Петербургский.

Державний Електротехнічний Університет «ЛЭТИ».

Кафедра Радиосистем.

Пояснювальна Записка до Курсової Роботі по Дисциплине.

«Інформатика. Основи Программирования».

Варіант № 9: «Операції над Матрицами».

Виконав: студент Чапчаев В. В. факультет: РТ уч. группа: №.

Перевірив: асистент Анікін А.П.

Санкт — Петербург.

2 0 0 3.

Умова задачи.

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

Метод рішення задачи.

Після запуску програми, користувачеві пропонується вибрати необхідну операцію: перебування означника, зворотної матриці, транспонованої матриці, складання чи віднімання двох матриць, множення двох матриць. Це проводиться у разі засобам введення користувачем цифри, відповідної даної операції. Далі йде запит про розмірах даної матриці (кол-ві рядків і шпальт), після введення яких програма перевіряє, щоб запроваджені значення були негативними або перевищували допустимих розмірів матриці (у програмі - 10×10). Що стосується, якщо перелічені умови не виконуються, на екран виводиться повідомлення про помилку, і яскрава програма завершує роботу. За виконання умов, користувачеві пропонується запровадити з клавіатури вихідну матрицю «А» (у програмі - MAS1). Введення виробляється через підрядник, до переходу до наступній рядку, користувачеві необхідно натиснути клавішу «ENTER». Потому, і кількість рядків стає рівним числу, запровадженого користувачем, введення матриці припиняється. Запроваджена матриця виводиться на екран для перевірки. Далі йде перевірка «придатності» введеної матриці до операції, обраної користувачем, у разі «непридатності» матриці, на екран виводиться повідомлення про помилку, і програма завершує роботу. Що стосується «придатності» матриці, з неї виробляється обрана операція, після чого на екран виводиться повідомлення про результаті. Якщо користувачем було обрано операція, потребує другу матрицю «У» (у програмі - MAS2), користувачеві пропонується запровадити її розміри, як і за введення матриці «А», далі програма перевіряє, можливо чи проведення обраної операції над матрицями з уведеними параметрами. Якщо операція неможлива, то, на екран виводиться повідомлення про помилку, і програма завершує роботу. Інакше, операція виконується, і його результуюча матриця «З» (у програмі - MAS3) виводиться на экран.

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

Вихідні дані і форма їх представления.

|Переменные |Структура |Тип |Призначення | |MAS1, MAS2, MAS3 |Двомірний массив|Вещественный |Матриці «А», «У», «З"| |i1, i2, i3 |Змінні |Целочисленный |Лічильник рядків матриць | | | | |А, У і З | | | | |відповідно | |j1, j2, j3 |Змінні |Целочисленный |Лічильник шпальт | | | | |матриць А, У і З | | | | |відповідно | |m1, m2, m3 |Змінні |Целочисленный |У рядків матриць | | | | |А, У і З | | | | |відповідно | |n1, n2, n3 |Змінні |Целочисленный |У шпальт | | | | |матриць А, У і З | | | | |відповідно | |operation |Змінні |Целочисленный |Варіант програми | |det |Змінні |Речовинний |Визначник | |k |Змінні |Целочисленный |Робоча змінна |.

Блок — схема программы.

Текст Программы:

Program MATRIX; {Найменування програми} Uses CRT; VAR i1, i2, i3: integer; {Лічильник рядків} j1, j2, j3: integer; {Лічильник шпальт} operation: integer; {Варіант розвитку програми} det: real; {Определитель}k: integer; {Робоча переменная}.

{Масиви (матриці), використовувані в программе}.

MAS1, {Матриця А}.

MAS2, {Матриця В}.

MAS3: array [1.10,1.10] of real; {Матриця С}.

BEGIN {Початок программы}.

WriteLn («Що Ви хочете робити з матрицями? »);

{Вибір користувачем варіанта розвитку программы}.

WriteLn («Якщо ви хочете знайти визначник матриці, натиснімо 1 »);

WriteLn («Якщо ви хочете знайти зворотний матрицю, натисніть 2 »);

WriteLn («Якщо ви хочете транспонувати матрицю, натиснімо 3 »);

WriteLn («Якщо ви хочете скласти матриці, натисніть 4 »);

WriteLn («Якщо ви хочете відняти матриці, натиснімо 5 »);

WriteLn («Якщо ви хочете перемножити матриці, натиснімо 6 »);

ReadLn (operation); {Занесення обраного варіанти вживляють у память}.

WriteLn («Запровадьте у рядків вихідної матриці, трохи більше 10 »);

ReadLn (m1);

WriteLn («Запровадьте у шпальт вихідної матриці, трохи більше 10 »);

ReadLn (n1);

If ((1>n1) or (n1>10) or (1>m1) or (m1>10)) {Умови помилки} then begin.

WriteLn («ПОМИЛКА!!! »);

Halt; end else begin.

WriteLn («Запровадьте вихідну матрицю »); {Введення вихідної матриці} for i1:=1 to m1 do for j1:=1 to n1 do Read (MAS1[i1,j1]); end;

for i1:=1 to m1 do {Висновок вихідної матриці} begin for j1:=1 to n1 do.

Write (MAS1[i1,j1]);

WriteLn; end;

Case operation of {Оператор вибору «operation"}.

1: begin {Визначник} if (m1n1) then writeLn («ПОМИЛКА!!! ») {Умова помилки} else begin {Формула означника} det:=(MAS1[1,1]*MAS1[2,2]*MAS1[3,3].

+MAS1[2,1]*MAS1[3,2]*MAS1[1,3].

+MAS1[1,2]*MAS1[2,3]*MAS1[3,1]).

-(MAS1[3,1]*MAS1[2,2]*MAS1[1,3].

+MAS1[3,2]*MAS1[2,3]*MAS1[1,1].

+MAS1[2,1]*MAS1[1,2]*MAS1[3,3]);

WriteLn («Opredelitel det= «, det); {Висновок означника} end; end;

2: begin {Зворотний матриця} if (m1n1) then WriteLn («ПОМИЛКА!!! ») {Умова помилки} else begin det:=(MAS1[1,1]*MAS1[2,2]*MAS1[3,3] {Определитель}.

+MAS1[2,1]*MAS1[3,2]*MAS1[1,3].

+MAS1[1,2]*MAS1[2,3]*MAS1[3,1]).

-(MAS1[3,1]*MAS1[2,2]*MAS1[1,3].

+MAS1[3,2]*MAS1[2,3]*MAS1[1,1].

+MAS1[2,1]*MAS1[1,2]*MAS1[3,3]); if det = 0 then WriteLn («ПОМИЛКА!!! ») {Умова помилки} else begin {Союзна матриця} for i1:=1 to m1 do for j1:=1 to n1 do MAS2[i1,j1]: =MAS1[j1,i1];

{Підсумкова формула} for i1:=1 to m1 do for j1:=1 to n1 do.

MAS3[i1,j1]: =(1/det)*MAS2[i1,j1];

WriteLn;

WriteLn («Зворотний матриця: »); for i1:=1 to m1 do begin {Висновок зворотної матриці} for j1:=1 to n1 do.

Write (MAS3[i1,j1]);

WriteLn; end; end; end; end;

3: begin {Транспонирование матриці} for i1:=1 to m1 do for j1:=1 to n1 do MAS2[i1,j1]: =MAS1[j1,i1]; {Формула}.

WriteLn («Транспонированная матриця: »); for i1:=1 to m1 do begin {Висновок транспонованої матриці} for j1:=1 to n1 do.

Write (MAS2[i1,j1]);

WriteLn; end; end;

4,5: begin {Сложение/вычитание матриц}.

{Введення другий матрицы}.

WriteLn («Запровадьте у рядків другий матриці «);

ReadLn (m2);

Writeln («Запровадьте у шпальт другий матриці «);

ReadLn (n2);

If (n2n1) or (m2m1) then WriteLn («OSHIBKA!!! ») {Умова помилки} else begin.

WriteLn («Запровадьте другу матрицю »); for i1:=1 to m1 do for j1:=1 to n1 do.

Read (MAS2[i1,j1]); end; for i1:=1 to m1 do {Висновок другий матриці} begin for j1:=1 to n1 do.

Write (MAS2[i1,j1]);

WriteLn; end;

if operation = 4 then k := 1; if operation = 5 then k := -1; for i1:=1 to m1 do for j1:=1 to n1 do.

MAS3[i1,j1]: =MAS1[i1,j1]+k*MAS2[i1,j1]; {Підсумкова формула}.

writeln («Сумма/разность: »); for i1:=1 to m1 do begin for j1:=1 to n1 do Write (MAS3[i1,j1]);

WriteLn; end;

end;

6: begin {Множення матриц}.

{Введення другий матрицы}.

WriteLn («Запровадьте у рядків другий матриці «);

ReadLn (m2);

Writeln («Запровадьте у шпальт другий матриці «);

ReadLn (n2);

If ((1>=m2) or (m2>=10) or (1>=n2) or (n2>=10) {Умова помилки} or (n2m1)) then WriteLn («ПОМИЛКА!!! ») else begin.

WriteLn («Запровадьте другу матрицю »); for i2:=1 to m2 do for j2:=1 to n2 do Read (MAS2[i2,j2]); end; for i2:=1 to m2 do begin {Висновок другий матриці} for j2:=1 to n2 do.

Write (MAS2[i2,j2]);

WriteLn; end; m3:=m1; n3:=n2; for i3:=1 to m3 do for j3:=1 to n3 do begin.

MAS3[i3,j3] := 0; for i2:= 1 to m2 do.

{Підсумкова формула}.

MAS3[i3,j3] :=MAS3[i3,j3] + MAS1[i3,i2] * MAS2[i2,j3]; end; begin {Висновок твори} writeln; writeln («Твір: »); for i3:=1 to m1 do begin for j3:=1 to n2 do Write (MAS3[i3,j3]);

WriteLn; end; end; end;

End; {End Case}.

ReadKey; END. {Кінець программы}.

Приклад роботи программы.

1. Операція перебування определителя:

1) За появи на екрані меню з операцій, вибираємо 1.

2) Пропозиція запровадити у рядків матриці, вибираємо 3.

3) У шпальт — 3.

4) Вводимо матрицю: (1 4 5 (.

(5 3 7 (.

(8 1 4 (.

5) Програма видає відповідь: det = 54.

2. Операція перебування зворотної матрицы:

1) За появи на екрані меню з операцій, вибираємо 2.

2) Пропозиція запровадити у рядків матриці, вибираємо 3.

3) У шпальт — 3.

4) Вводимо матрицю: (1 4 5 (.

(5 3 7 (.

(8 1 4 (.

5) Програма видає відповідь: (1,851*100 9,259*100 1,481*10.

(.

(7,407*100 5,555*100 1,851*100 (.

(9,259*100 1,296*10 7,407*100.

(.

3. Операція транспонування матрицы:

1) За появи на екрані меню з операцій, вибираємо 3.

2) Пропозиція запровадити у рядків матриці, вибираємо 3.

3) У шпальт — 3.

4) Вводимо матрицю: (1 4 5 (.

(5 3 7 (.

(8 1 4 (.

5) Програма видає відповідь: (1 5 8 (.

(4 3 1 (.

(5 7 4 (.

4. Операція складання матриц:

1) За появи на екрані меню з операцій, вибираємо 3.

2) Пропозиція запровадити у рядків матриці, вибираємо 3.

3) У шпальт — 3.

4) Вводимо матрицю: (1 4 5 (.

(5 3 7 (.

(8 1 4 (.

5) Пропозиція запровадити у рядків матриці, вибираємо 3.

6) У шпальт — 3.

7) Вводимо матрицю: (2 8 10 (.

(10 6 14 (.

(16 2 8 (.

8) Програма видає відповідь: (3 12 15 (.

(15 9 21 (.

(24 3 12.

(.

5. Операція вирахування матриц:

1) За появи на екрані меню з операцій, вибираємо 3.

2) Пропозиція запровадити у рядків матриці, вибираємо 3.

3) У шпальт — 3.

4) Вводимо матрицю: (1 4 5 (.

(5 3 7 (.

(8 1 4 (.

5) Пропозиція запровадити у рядків матриці, вибираємо 3.

6) У шпальт — 3.

7) Вводимо матрицю: (2 8 10 (.

(10 6 14 (.

(16 2 8 (.

8) Програма видає відповідь: (-1 -4 -5 (.

(-5 -3 -7 (.

(-8 -1 -4 (.

6. Операція перемножения матриц:

1) За появи на екрані меню з операцій, вибираємо 3.

2) Пропозиція запровадити у рядків матриці, вибираємо 3.

3) У шпальт — 3.

4) Вводимо матрицю: (1 4 5 (.

(5 3 7 (.

(8 1 4 (.

5) Пропозиція запровадити у рядків матриці, вибираємо 3.

6) У шпальт — 3.

7) Вводимо матрицю: (2 8 10 (.

(10 6 14 (.

(16 2 8 (.

8) Програма видає відповідь: (122 42 106 (.

(152 72 148 (.

(90 78 126 (.

7. Перший винятковий случай:

1) За появи на екрані меню з операцій, вибираємо 1.

2) Пропозиція запровадити у рядків матриці, вибираємо 0.

3) У шпальт — 3.

4) Програма видає: «ОШИБКА!!!».

8. Другий винятковий случай:

1) За появи на екрані меню з операцій, вибираємо 1 (2,.

3).

2) Пропозиція запровадити у рядків матриці, вибираємо 3.

3) У шпальт — 2.

4) Вводимо матрицю: (1 4 (.

(5 3 (.

(8 1 (.

5) Програма видає: «ОШИБКА!!!».

9. Третій винятковий случай:

1) За появи на екрані меню з операцій, вибираємо 4.

2) Пропозиція запровадити у рядків матриці, вибираємо 3.

3) У шпальт — 3.

4) Вводимо матрицю: (1 4 5 (.

(5 3 7 (.

(8 1 4 (.

5) Пропозиція запровадити у рядків матриці, вибираємо 2.

6) У шпальт — 2.

6) Програма видає: «ОШИБКА!!!».

10. Четвертий винятковий случай:

1) За появи на екрані меню з операцій, вибираємо 6.

2) Пропозиція запровадити у рядків матриці, вибираємо 3.

3) У шпальт — 3.

4) Вводимо матрицю: (1 4 5 (.

(5 3 7 (.

(8 1 4 (.

5) Пропозиція запровадити у рядків матриці, вибираємо 2.

6) У шпальт — 2.

7) Програма видає: «ОШИБКА!!!».

Висновки по работе.

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

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

Під час написання програми використовувалася наступна литература:

1) Фаронов В. В. «TurboPascal 7.0, початковий курс. Навчальне пособие».

2) Мизрохи С. В. «TurboPascal і объектно-ориентированное програмирование».

3) Голубєв Г. Б., Сидоров Ю. Н., Чередниченко А.І., Яценко І.В. «Основи програмування мовою Pascal».

4) Боревич Э. И. «Визначники і матрицы».

5) Гутер Р. С., Резниковский П. Т. «Програмування і обчислювальна математика».

6) Письмовий Д. Т. «Конспект лекцій з вищу математику», 1 часть.

7) Володимирський Б. М., Горстко Г. Б., Ерусалимский Я. М. «Математика.

Загальний курс". ———————————;

Начало.

Case operation.

Operation = 1.

Operation = 2.

Operation = 3.

Operation = 6.

Введення operation.

Введення m1.

Введення n1.

1>n1 or n1>10 or 1>m1 or m1>10.

ДА.

НЕТ.

Конец.

Введення MAS1.

Висновок MAS1.

Підрахунок det.

Висновок det.

Підрахунок обр.матр.

Висновок обр.матр.

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

Висновок транспонир. матрицы.

Operation = 4, 5.

ДА.

n1n2 or m1m2.

Введення n2.

Введення m2.

НЕТ.

Висновок MAS2.

Введення MAS2.

Operation = 4.

ДА.

k :=1.

НЕТ.

k :=-1.

ДА.

Operation = 5.

Висновок MAS3.

(сумма/разность).

Введення n2.

Введення m2.

1>=m2 or m2>10 or 1>=n2 or n2>10 n2m1.

ДА.

НЕТ.

Висновок MAS2.

Введення MAS2.

n3 := n2.

m3 := m1.

Висновок MAS3.

(произведение).

Текст: «Ошибка».

Показати весь текст
Заповнити форму поточною роботою