Генерація матриць

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Курсова робота

"Генерація матриць"

Введення

В даний час матричне числення широко застосовується в різних галузях математики, механіки, теоретичної фізики, теоретичної електротехніки і т.д.

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

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

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

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

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

1. Матриці і визначники

1.1 Матриці. Дії з матрицями

Всі визначення, теореми, властивості, слідства та їх докази, використовувані в курсовій роботі, взяті з книги В.А. Ільїна, Е.Г. Позняка «Лінійна алгебра».

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

Числа m і n називаються порядками матриці. Якщо m = n, матриця називається квадратною, а число m = n - її порядком.

Для запису матриці застосовуються або здвоєні рисочки, або круглі або квадратні дужки:

Для короткого позначення матриці часто використовується або одна велика латинська літера (наприклад, A), або символ , Або .

Числа , Що входять до складу даної матриці, називаються її елементами. У записі перший індекс означає номер рядка, а другий індекс - Номер стовпця.

У випадку квадратної матриці

(1.1)

вводиться поняття головної та побічної діагоналей. Головною діагоналлю матриці називається діагональ a 11 a 22 ... a n n, що йде з лівого верхнього кута цієї матриці в правий нижній її кут. Побічної діагоналлю матриці називається діагональ a n 1 a (n - 1) 2 ... a 1 n, що йде з лівого нижнього кута в правий верхній кут.

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

Перейдемо до визначення основних операцій над матрицями.

Додавання матриць. Сумою двох матриць і одних і тих же порядків m і n називається матриця тих же порядків m і n, елементи c i j якої рівні

(1.2)

Для позначення суми двох матриць використовується запис C = A + B. Операція складання суми матриць називається їх складанням.

Отже, за визначенням

=

=

З визначення суми матриць, а точніше з формули (1.2) безпосередньо випливає, що і операція додавання матриць має ті ж властивості, що й операція додавання дійсних чисел, а саме:

  1. переместительное властивістю: A + B = B + A,

  2. сполучним властивістю: (A + B) + C = A + (B + C).

Ці властивості дозволяють не дбати про порядок проходження доданків матриць при складанні двох або більшої кількості матриць.

Множення матриці на число. Твором матриці на дійсне число λ називається матриця , Елементи c i j якої рівні

(1.3)

Для позначення твори матриці на число використовується запис C = λ A або C = A λ. Операція складання твору матриці на число називається множенням матриці на це число.

З формули (1.3) видно, що множення матриці на число має такі властивості:

  1. сполучним властивістю щодо числового множника: (λμ) A = λ (μ A);

  2. розподільним властивістю щодо суми матриць: λ (A + B) = λ A + λ B;

  1. розподільним властивістю щодо суми чисел: + μ) A = λ A + μ A.

Зауваження. Різницею двох матриць A і B однакових порядків m і n природно назвати таку матрицю C тих же порядків m і n, яка в сумі з матрицею B дає матрицю A. Для позначення різниці двох матриць використовується природна запис: C = A - B.

Дуже легко переконатися, що різниця C двох матриць A і B може бути отримана за правилом C = A + (- 1) B.

Перемноження матриць. Твором матриці , Що має порядки, відповідно рівні m і n, на матрицю , Що має порядки, відповідно рівні m і p, називається матриця , має порядки, відповідно рівні т і р, і елементи c i j, визначаються формулою

. (1.4)

Для позначення твори матриці A на матрицю B використовують запис . Операція складання твору матриці A на матрицю B називається перемножуванням цих матриць.

З сформульованого вище визначення випливає, що матрицю А можна помножити не на всяку матрицю B: необхідно, щоб число стовпців матриці A було рівне числу рядків матриці B.

Зокрема, обидва твори і можна визначити лише в тому випадку, коли число стовпців A збігається з числом рядків B, а число рядків A збігається з кількістю стовпців B. При цьому обидві матриці і будуть квадратними, але порядки їх будуть різними. Для того щоб обидва твори і не тільки були визначені, але й мали однаковий порядок, необхідно і достатньо, щоб обидві матриці A і B були квадратними матрицями одного і того ж порядку.

Формула (1.4) являє собою правило складання елементів матриці C, що є твором матриці A на матрицю B. Це правило можна сформулювати і словесно: елемент c ij стоїть на перетині i го рядка і j го стовпця матриці C = , Дорівнює сумі попарних творів відповідних елементів i го рядка матриці A і j го стовпця матриці B.

Як приклад застосування зазначеного правила наведемо формулу множення квадратних матриць другого порядку

.

З формули (1.4) випливають такі властивості твори матриці A на матрицю B:

1) сочетательное властивість: (AB) C = A (BC);

2) розподільне щодо суми матриць властивість: (A + B) C = AC + BC або A (B + C) = AB + AC.

Розподільний властивість відразу випливає з формул (1.4) і (1.2), а для доказу сочетательно властивості достатньо зауважити, що якщо , , , то елемент матриці (AB) C в силу (1.4) дорівнює , А елемент матриці A (BC) дорівнює , Але тоді рівність = випливає з можливості зміни порядку підсумовування щодо j і k.

Питання про перестановною властивості твори матриці A на матрицю B має сенс ставити лише для квадратних матриць A і B однакового порядку (бо, як зазначалося вище, лише для таких матриць A і B обидва твори AB і BA визначені і є матрицями однакових порядків). Елементарні приклади показують, що добуток двох квадратних матриць однакового порядку не володіє перестановочним властивістю. Справді, якщо покласти , , То , А .

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

Серед квадратних матриць виділимо клас так званих діагональних матриць, у кожної з яких елементи, розташовані поза головної діагоналі, дорівнюють нулю. Кожна діагональна матриця порядку n має вигляд

,

де - Які завгодно числа. Якщо всі ці числа рівні між собою, тобто , то для будь-квадратної матриці A порядку n справедливо рівність AD = DA. Перевіримо це, позначимо символами і елементи, що стоять на перетині i го рядка і j го стовпця матриць AD і DA відповідно. Тоді з рівності (1.4) і з вигляду матриці D отримаємо, що

, , (1.6)

тобто = .

Серед всіх діагональних матриць (1.5) з збігаються елементами особливо важливу роль відіграють дві матриці. Перша з цих матриць виходить при d = l, називається одиничною матрицею n го порядку і позначається символом E. Друга матриця виходить при d = 0, називається нульовою матрицею n го порядку і позначається символом O. Таким чином,

, .

У силу доведеного вище AE = EA і AO = OA. Більш того, з формул (1.6) видно, що

AE = EA = A, AO = OA = O. (1.7)

Перша з формул (1.7) характеризує особливу роль одиничної матриці E, аналогічну тій ролі, яку відіграє число 1 при перемножуванні дійсних чисел. Що ж стосується особливої ​​ролі нульової матриці O, то її виявляє не тільки друга з формул (1.7), але й елементарно перевіряється рівність

A + O = O + A = A.

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

Блокові матриці. Нехай деяка матриця за допомогою горизонтальних і вертикальних прямих розбита на окремі прямокутні клітки, кожна з яких представляє собою матрицю менших розмірів і називається блоком вихідної матриці. Тоді виникає можливість розгляду вихідної матриці A як деякої нової (так званої блокової) матриці , Елементами якої служать зазначені блоки. Зазначені елементи позначаються великою латинською літерою, щоб підкреслити, що вони є матрицями, а не числами і (як звичайні числові елементи) забезпечені двома індексами, перший з яких вказує номер «блокової» рядки, а другий - номер «блокового» стовпця.

Наприклад, матрицю

можна розглядати як блочну матрицю

,

елементами якої служать такі блоки:

, ,

, .

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

У самому справі, елементарно перевіряється, що якщо матриця є блокової і має блокові елементи , То при тому ж розбитті на блоки матриці відповідають блокові елементи . При цьому блокові елементи самі обчислюються за правилом множення матриці на число λ.

Настільки ж елементарно перевіряється, що якщо матриці A і B мають однакові порядки і однаковим чином розбиті на блоки, то сумі матриць A і B відповідає блокова матриця з елементами = + (Тут і - Блочні елементи матриць A і B).

Нехай A і B - дві блочні матриці такі, що число стовпців кожного блоку дорівнює числу рядків блоку (Так що при будь-яких α, β і γ визначено твір матриць ). Тоді твір C = AB являє собою матрицю з елементами , Обумовленими формулою

.

Для доказу цієї формули досить розписати ліву і праву її частини в термінах звичайних (числових) елементів матриць A і B.

Як приклад застосування блокових матриць зупинимося на понятті так званої прямої суми квадратних матриць.

1.2 Визначники

Метою цього параграфа є побудова теорії визначників будь-якого порядку п.

Розглянемо довільну квадратну матрицю будь-якого порядку n:

. (1.8)

З кожною такою матрицею пов'язана певна чисельна характеристика, звана визначником, відповідним цій матриці.

Якщо порядок n матриці (1.8) дорівнює одиниці, то ця матриця складається з одного елемента a 11 і визначником першого порядку відповідним такій матриці, називається величиною цього елемента.

Якщо далі порядок n матриці (1.8) дорівнює двом, тобто якщо ця матриця має вигляд

, (1.9)

то визначником другого порядку, відповідним такій матриці, є число, рівне a 11 a 22 - a 1912 a 21 і що позначається одним із символів

.

Отже, за визначенням

. (1.10)

Формула (1.10) являє собою правило складання визначника другого порядку за елементами відповідної йому матриці. Словесна формулювання цього правила така: визначник другого порядку, відповідний матриці (1.9), дорівнює різниці твори елементів, що стоять на головній діагоналі цієї матриці, і твори елементів, що стоять на побічної її діагоналі.

Перейдемо тепер до з'ясування поняття визначника будь-якого порядку n, де . Поняття такого визначника виводиться індуктивно, вважаючи, що поняття визначника порядку n 1 вже введено, відповідного довільної квадратної матриці порядку n 1.

Домовимося називати мінором будь-якого елементу матриці n го порядку (1.8) визначник порядку n 1, відповідний тієї матриці, яка виходить з матриці (1.8) в результаті викреслювання i го рядка і j го стовпця (того рядка і того стовпця, на перетині яких стоїть елемент ). Мінор елемента будемо позначати символом . У цьому позначенні верхній індекс позначає номер рядка, нижній - номер стовпця, а риса над M означає, що зазначені рядок і стовпець викреслюються.

Визначником порядку n, відповідним матриці (1.8), назвемо число, рівне і що позначається символом

. (1.11)

Отже, за визначенням

. (1.12)

Формула (1.12) являє собою правило складання визначника порядку n за елементами першого рядка відповідної йому матриці і по мінору елементів першого рядка, що є визначниками порядку n 1.

Якщо n = 2, то правило (1.12) в точності збігається з правилом (1.10), бо в цьому випадку мінори елементів першого рядка мають вигляд: , .

Природно виникає питання, чи не можна використовувати для отримання величини визначника (1.11) елементи і відповідні їм мінори не першої, а довільної i го рядка матриці (1.8). Відповідь на це питання дає наступна основна теорема.

Теорема 1.1. Який би не був номер рядка i (I = 1,2 ... n), для визначника n го порядку (1.11) справедлива формула

, (1.13)

звана розкладанням цього визначника по i му рядку.

У цій формулі показник ступеня, до якої зводиться число (-1), дорівнює сумі номерів рядка та стовпця, на перетині яких стоїть елемент a i j.

Доказ теореми 1.1. Формулу (1.13) потрібно довести лише для номерів i = 2, 3, ..., n. При n = 2 (тобто для визначника другого порядку) цю формулу потрібно довести лише для номера i = 2, тобто при n = 2 потрібно довести лише формулу

Справедливість цієї останньої формули відразу випливає з виразів для миноров матриці (1.9) в силу яких права частина цієї формули збігається з правою частиною (1.10). Отже, при n = 2 теорема доведена.

Доведення формули (1.13) для довільного n > 2 проводиться по індукції, тобто для визначника порядку n - 1 справедлива формула виду (1.13) розкладання по будь-якому рядку, і, спираючись на це, можна переконатися в справедливості формули (1.13) для визначника порядку n.

При доведенні знадобиться поняття миноров матриці (1.8) порядку n - 2. Визначник порядку n 2, відповідний тієї матриці, яка виходить з матриці (1.8) в результаті викреслювання двох рядків з номерами і двох стовпців з номерами , Називається мінором (n 2) - го порядку і позначається символом .

Визначник n го порядку Δ вводиться формулою (1.12), причому в цій формулі кожен мінор є визначником порядку n 1, для якого за припущенням справедлива формула виду (1.13) розкладання по будь-якому рядку.

Фіксований будь-який номер i (I = 2,3 ... n), розкладемо у формулі (1.12) кожен мінор по i - му рядку основного визначника (1.11) (в самому мінорі цей рядок буде (i 1) - й).

У результаті весь визначник Δ виявиться представленим у вигляді деякої лінійної комбінації миноров (n 2) - го порядку з незбіжними номерами j і k, тобто у вигляді

(1.14)

Для обчислення множників зауважимо, що мінор виходить в результаті розкладання по (i 1) - му рядку тільки наступних двох миноров (n - 1) - го порядку, що відповідають елементам першого рядка матриці (1.8): мінору і мінору (Бо тільки ці два мінору елементів першого рядка містять всі стовпці мінору ).

У розкладах миноров і за вказаною (i - 1) - му рядку виписуються тільки доданки, що містять мінор (Інші складові позначаються трьома крапками). Враховуючи при цьому, що елемент a jk мінору стоїть на перетині (i - 1) - го рядка і (k - 1) - го стовпця цього мінору, а елемент a ij мінору стоїть на перетині (i - 1) - го рядка і j го стовпця цього мінору, у результаті виходить

(1.15)

(1.16)

Вставляючи (1.15) _ і (1.16) у праву частину (1.12) і збираючи коефіцієнт при , ми отримаємо, що множник в рівності (1.14) має вигляд

(1 17)

Для завершення доведення теореми видно, що і права частина (1.13) дорівнює сумі, що стоїть в правій частині (1.14), з тими ж самими значеннями (1.17) для .

Для цього в правій частині (1.13) розкладемо кожен мінор (n 1) - го порядку по першому рядку. У результаті вся права частина (1.13) представиться у вигляді лінійної комбінації з деякими коефіцієнтами тих же самих миноров

(1.18)

і залишається обчислити множники і переконатися у справедливості для них формули (1.17).

Для цього помітно, що мінор виходить в результаті розкладання по першому рядку тільки наступних двох миноров (n - 1) - го порядку, що відповідають елементам i го рядка матриці (1.8): мінору і мінору (Бо тільки ці два мінору елементів i го рядка містять всі стовпці мінору ).

У розкладах миноров і по першому рядку виписується тільки доданки, що містять мінор (Інші складові позначаються трьома крапками). Враховуючи при цьому, що елемент a ik мінору стоїть на перетині першого рядка і (k 1) - го стовпця цього мінору, а елемент a ij мінору стоїть на перетині першого рядка і j   го стовпця цього мінору, виходить

(1.19)

(1.20)

Вставляючи (1.19) і (1.20) у праву частину (1.13) і збираючи коефіцієнт при , Виходить, що в сумі (1.18) визначається тією ж самою формулою (1.17), що і в рівності (1.14).

Теорема 1.1 доведена.

Теорема 1.1 встановила можливість розкладання визначника n го порядку з будь-якої його рядку. Природно виникає питання про можливість розкладання визначника n - Го порядку по кожному його стовпцю. Позитивна відповідь на це питання дає наступна основна теорема.

Теорема 1.2. Який би не був номер стовпця j (J = 1,2, ..., n), для визначника n го порядку (1.11) справедлива формула

(1.21)

звана розкладанням цього визначника по j му стовпцю.

Доказ. Досить довести теорему для j = 1, тобто встановити формулу розкладання по одну колонку

, (1.22)

інакше якщо формула (1.22) буде встановлена, то для доказу формули (1.21) для будь-якого j = 2,3, ..., n достатньо, помінявши ролями рядки і стовпці, дослівно повторити схему міркувань теореми 1.1.

Формула (1.22) встановлюється за індукцією.

При n = 2 ця формула перевіряється елементарно (тому що при n = 2 мінори елементів першого стовпця мають вигляд то при n = 2 права частина (1.22) співпадає з правою частиною (1.10)).

Припустимо, що формула розкладання по одну колонку (1.22) вірна для визначника порядку n - 1 і, спираючись на це, можна переконатися в справедливості цієї формули для визначника порядку n.

З цією метою виділимо в правій частині формули (1.12) для визначника n - го порядку Δ перший доданок , а у кожному з інших доданків розкладемо мінор (n 1) - го порядку за одну колонку.

У результаті формула (1.12) буде мати вигляд

, (1.23)

де - Деякі підлягають визначенню коефіцієнти. Для обчислення мінор виходить при розкладанні по одну колонку тільки одного з мінорів (n 1) - го порядку, що відповідають першому рядку, - мінору . У розкладанні мінору (При ) За одну колонку записується тільки те доданок, що містить мінор (Інші складові позначаються трьома крапками). Враховуючи, що елемент a i +1 мінору (При ) Стоїть на перетині (i 1) - го рядка і першого стовпця цього мінору, виходить, що при

(1.24)

Вставляючи (1.24) у праву частину (1.12) (з якої виключено перший доданок) і збираючи коефіцієнт при , Видно,

що коефіцієнт у формулі (1.23) має вигляд

(1.25)

Залишається довести, що і права частина (1.22) дорівнює сумі, що стоїть в правій частині (1.23) з тими ж самими значеннями (1.25) для .

Для цього в правій частині (1.22) виділяється перший доданок , А у кожному з інших доданків розкладається мінор (n 1) - го порядку по першому рядку.

У результаті права частина (1.22) представиться у вигляді суми першого доданка і лінійної комбінацією з деякими коефіцієнтами миноров (n 2) - го порядку , Тобто у вигляді

, (1.26)

і залишається обчислити множники і переконатися у справедливості для них формули (1.25).

Для цього можна помітити, що мінор виходить в результаті розкладання по першому рядку тільки одного з мінорів n - 1 го порядку, що відповідають на одну колонку, - мінору . У розкладанні мінору (При ) У першому рядку записується тільки те доданок, що містить мінор (Інші складові позначаються трьома крапками). Враховуючи, що елемент мінору стоїть на перетині першого рядка і (j 1) - го стовпця цього мінору, виходить, що при

(1.27)

Вставляючи (1.24) у праву частину (1.22), з якої виключено перший доданок, і збираючи коефіцієнт при , Випливає, що в сумі (1.26) визначається тією ж самою формулою (1.25), що і в рівності (1.23). Теорема 1.2 доведена.

Вираз визначника безпосередньо через його елементи. Встановимо формулу, яка має визначник n го порядку безпосередньо через його елементи (минаючи мінори).

Нехай кожне з чисел приймає одне зі значень 1, 2, ..., n, причому серед цих чисел немає співпадаючих (у такому випадку говорять, що числа є деякою перестановкою чисел 1, 2, ..., n). Утворюємо з чисел всі можливі пари і можна говорити, що пара утворює безлад, якщо при i <j. Загальне число заворушень, утворених усіма парами, які можна скласти з чисел , Позначимо символом .

За допомогою методу індукції встановимо для визначника n го порядку (1.11) наступну формулу:

(1.28)

(Підсумовування в цій формулі йде по всіх можливих перестановок чисел 1, 2, ..., n; число цих перестановок, очевидно, так само n!).

У випадку n = 2 формула (1.28) елементарно перевіряється (у цьому випадку можливі тільки дві перестановки 1, 2 і 2, 1, і, оскільки N (1, 2) = 0, N (2, 1) = 1, формула (1.28) переходить у рівність (1.10)).

З метою проведення індукції припустимо, що формула (1.28) при n> 2 справедлива для визначника порядку (n 1).

Тоді, записавши розкладання визначника п-го порядку (1.11) за одну колонку:

, (1.29)

можна, в силу припущення індукції, уявити кожен мінор (n 1) - го порядку у вигляді

(1.30)

(Підсумовування йде по всіх можливих перестановок (N - 1) чисел, у якості яких беруться всі натуральні числа від 1 до n, за винятком числа ).

Так як з чисел , Крім пар, утворених з чисел , можна утворити ще тільки наступні пари , і оскільки серед чисел , знайдеться рівно ( -1) Чисел, менших числа , То = + -1.

Звідси випливає, що і, вставляючи (1.30) в (1.29), виходить формула (1.28). Тим самим виведення формули (1.28) завершено.

Теорема Лапласа. У цьому пункті встановлюється формула, узагальнююча формулу розкладання визначника n го порядку з якої-небудь його рядку.

З цією метою вводиться в розгляд мінори матриці n - Го порядку (1.8) двох типів.

Нехай k - Будь-який номер, менший n, a і - Довільні номери, що задовольняють умовам , .

Мінори першого типу є визначниками порядку k, відповідними тієї матриці, яку утворюють елементи матриці (1.8), що стоять на перетині k рядків з номерами і k стовпців з номерами .

Мінори другого типу є визначниками порядку n - k, відповідними тієї матриці, яка виходить з матриці (1.8) в результаті викреслювання k рядків з номерами і k стовпців з номерами .

Мінори другого типу природно назвати додатковими по відношенню до мінору першого типу.

Теорема 1.3 (теорема Лапласа). При будь-якому номері k, меншому n, і при будь-яких фіксованих номерах рядків таких, що , Для визначника n го порядку (1.11) справедлива формула

, (1.31)

звана розкладанням цього визначника по k рядкам . Підсумовування у цій формулі йде по всіх можливих значеннях індексів , Що задовольняє умови .

Доказ. Перш за все формула (1.31) є узагальненням вже доведеною формули розкладу визначника n го порядку, за однією його рядку з номером i 1, в яку вона переходить при k = 1 (при цьому мінор збігається з елементом , А мінор - Це введений вище мінор елемента ).

Таким чином, при k = 1 формула (1.31) доведена. Доказ цієї формули для будь-якого k, задовольняє нерівностям 1 <k <N, проводиться по індукції, тобто формула (1.31) справедлива для (k 1) рядків, і, спираючись на це, переконаємося в справедливості формули (1.31) для k рядків.

Отже, нехай 1 <k <N і фіксовані які завгодно k рядків матриці (1.8) з номерами , задовольняють умові . Тоді за припущенням для (k 1) рядків з номерами справедлива формула

(1.32)

(Підсумовування йде по всіх можливих значеннях індексів що задовольняє умови .

Розкладемо у формулі (1.32) кожен мінор по рядку, що має в матриці (1.8) номер i k. У результаті весь визначник Δ буде представлений у вигляді деякої лінійної комбінації миноров коефіцієнтами, які ми позначимо через , Тобто для Δ буде справедливо рівність

,

і залишається обчислити коефіцієнти і переконатися в тому, що вони рівні

. (1.33)

З цією метою помітно, що мінор (n - k) - го порядку виходить в результаті розкладання по рядку з номером i k тільки наступних k миноров (n - k +1) - го порядку:

( ), (1.34)

бо кожен з усіх решти містять рядок i s миноров (n - k +1) - го порядку не містить всіх рядків і всіх стовпців мінору .

У розкладанні кожного мінору (1.34) по рядку матриці (1.8) з номером i k виписується тільки те доданок, що містить мінор (Інші складові позначаються трьома крапками). Враховуючи при цьому, що в кожному мінорі (1.34) елемент стоїть на перетині [i k - (K 1)] - го рядка і [j s - (s 1)] - го стовпця цього мінору, отримаємо

Тепер залишається врахувати, що у формулі (1.32) кожен мінор (1.34) множиться на множник

і після цього підсумовується за всіма s від 1 до k. Маючи також на увазі, що , Отримуємо, що

.

Помічаючи, що сума в квадратних дужках є розкладання мінору останньої k му рядку, в результаті отримаємо для формулу (1.33). Теорема Лапласа доведена.

У повній аналогії з формулою (1.32) записується і виводиться формула розкладання визначника з яких-небудь k його стовпцях.

Властивості визначників. Нижче встановлюється ряд властивостей, які має довільний визначник n го порядку.

Властивість рівноправності рядків і стовпців. Транспонування будь-якої матриці або визначника називається операція, в результаті якої міняються місцями рядки і стовпчики з збереженням порядку їх слідування. У результаті транспонування матриці A виходить матриця, звана транспонованої по відношенню до матриці A і позначається символом A '.

Надалі ми домовимося символом | A |, | B |, | A '| ... позначати визначники квадратних матриць A, B, A '... відповідно.

Перше властивість визначника формулюється так: при транспонуванні величина визначника зберігається, тобто | А '| = | А |.

Це властивість безпосередньо випливає з теореми 1.2 (досить лише зауважити, що розкладання визначника | A | за одну колонку тотожно збігається з розкладанням визначника | A '| по першій рядку).

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

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

Для визначника другого порядку це властивість перевіряється елементарно (з правила (1.10) відразу випливає, що визначники

відрізняються лише знаком).

Нехай n > 2, розглянемо тепер визначник n го порядку (1.11) і припустимо, що в цьому визначнику міняються місцями два рядки з номерами i 1 і i 2. Записуючи формулу Лапласа розкладання по цим двом рядкам, буде мати

. (1.35)

При перестановці місцями рядків з номерами i 1 і i 2 кожний визначник другого порядку чинності доведеного вище змінює знак на протилежний, а всі інші величини, які стоять під знаком суми в (1.35), зовсім не залежать від елементів рядків з номерами i 1 і i 2 і зберігають своє значення. Тим самим властивість 2 ° доведено.

Лінійне властивість визначника. Будемо говорити, що деяка рядок ( ) Є лінійною комбінацією рядків ( ), ( ), ..., ( ) З коефіцієнтами , Якщо для всіх j = 1, 2, ..., n.

Лінійне властивість визначника можна сформулювати так: якщо у визначнику n го порядку Δ деяка i я рядок ( ) Є лінійною комбінацією двох рядків ( ) І ( ) З коефіцієнтами λ і μ, то , Де - Визначник, у якого i я рядок дорівнює ( ), А всі інші рядки ті ж, що і у Δ, а Δ 2 - визначник, у якого i я рядок дорівнює ( ), А всі

інші рядки ті ж, що і у Δ.

Для доказу розкладемо кожен з трьох визначників по i му рядку і зауважимо, що у всіх трьох визначників всі мінори елементів i го рядка однакові. Але звідси випливає, що формула відразу випливає з рівності (J = 1, 2, ..., n).

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

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

Наступні п'ять властивостей є логічними наслідками трьох основних властивостей.

Наслідок 1. Визначник з двома однаковими рядками (або стовпцями) дорівнює нулю. Справді, при перестановці двох однакових рядків, з одного боку, визначник Δ не зміниться, а з іншого боку, в силу властивості 2 ° змінить знак на протилежний. Таким чином, , Тобто 2Δ = 0 або Δ = 0.

Наслідок 2. Множення всіх елементів деякої рядки (чи деякого стовпця) визначника на число λ рівносильно множенню визначника на це число λ.

Іншими словами, загальний множник всіх елементів деякої рядки (чи деякого стовпця) визначника можна винести за знак цього визначника. (Ця властивість випливає з властивості 3 ° при μ = 0.)

Слідство 3. Якщо всі елементи деякої рядки (чи деякого стовпця) визначника дорівнюють нулю, то й сам визначник дорівнює нулю. (Ця властивість випливає з попереднього при λ = 0.)

Слідство 4. Якщо елементи двох рядків (або двох стовпців) визначника пропорційні, то визначник дорівнює нулю. (Справді, в силу слідства 2 множник пропорційності можна винести за знак визначника, після чого залишиться визначник з двома однаковими рядками, який дорівнює нулю згідно слідству 1).

Слідство 5. Якщо до елементів деякою рядки (чи деякого стовпця) визначника додати відповідні елементи іншого рядка (іншого стовпця), помножені на довільний множник λ, то величина визначника не зміниться. (Справді, отриманий у результаті зазначеного додатка визначник можна в силу властивості 3 ° розбити на суму двох визначників, перший з яких збігається з вихідним, а другий дорівнює нулю в силу пропорційності двох рядків (або стовпців) і слідства 4.)

Слідство 5, як і лінійне властивість, допускає більш загальне формулювання, яку приведемо для рядків: якщо до елементів деякою рядки визначника додати відповідні елементи рядка, що є лінійною комбінацією кількох інших рядків цього визначника (з якими завгодно коефіцієнтами), то величина визначника не зміниться.

Слідство 5 широко застосовується при конкретному обчисленні визначників (відповідні приклади будуть наведені в наступному пункті).

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

Алгебраїчним доповненням даного елемента визначника n го порядку (1.11) назвемо число, рівне і що позначається символом .

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

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

Відповідні формули розкладу визначника по i му рядку і по j му стовпцю можна переписати так:

(1.13 ')

(1.21 ')

Властивість алгебраїчних доповнень сусідніх рядків (або стовпчиків). Сума добутків елементів будь-якого рядка (або будь-якого стовпця) визначника на відповідні алгебраїчні доповнення елементів будь-якого іншого рядка (будь-якого іншого стовпця) дорівнює нулю.

Доказ проведемо для рядків (для стовпців воно проводиться аналогічно). Записуючи докладно формулу (1.13 ')

(1.36)

видно, що оскільки алгебраїчні доповнення не залежать від елементів i - Й рядки , то рівність (1.36) є тотожністю щодо і зберігається при заміні чисел будь-якими іншими n числами. Замінивши відповідними елементами будь-якої (відмінною від i й) k   ї рядки , ми отримаємо зліва в (1.36) визначник з двома однаковими рядками, рівний нулю згідно слідству 1. Таким чином,

(Для будь-яких незбіжних i і k).

2. Опис алгоритму генерації матриць

2.1 Опис алгоритму програми генерації квадратних матриць

Дослідивши теоретичну частину з проблеми генерації матриць, приступаємо до практичного застосування отриманих знань. Але перш, ніж приступати до написання коду програми, яка генерує квадратні матриці по введеному користувачем вказівникові, розмірності матриці і діапазону елементів матриці, складемо алгоритм для вирішення даної задачі.

Алгоритм.

  1. Ввести визначник, розмірність і діапазон значень генерованої матриці.

  2. Якщо введений визначник є простим числом, що виходить за рамки введеного діапазону, і розмірність менше двох, то видати повідомлення про помилку і перейти до пункту 1, інакше, при коректному вводі, перейти до пункту 3.

  3. Організувати функцію розкладання визначника на прості множники. Отримані множники записати в допоміжний масив.

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

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

  6. Далі береться перший рядок, помножена на певні коефіцієнти, що вийшла матриці і складається з іншими рядками.

  7. Вивести вийшла матрицю на екран.

2.2 Написання програми, що реалізує алгоритм генерації матриць

Подолання проблем, що виникли при написанні програми

При написанні коду програми, що реалізує алгоритм генерації матриць, зіткнулися з рядом труднощів.

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

  1. Ініціалізувати функцію простого числа.

  2. Ініціалізувати функцію перевірки визначника і розмірності.

  3. Якщо визначник виходить за рамки діапазону і є простим числом або розмірність матриці менше двох, то видаємо повідомлення про помилку.

  4. Інакше при успішній перевірки переходимо до подальших перетворень для генерації матриці.

Другою проблемою стало вихід елементів матриці з введеного діапазону, при додаванні першого рядка, помноженої на певні коефіцієнти, матриці з іншими рядками. Для подолання даної проблеми були застосовані наступні операції. Для генерації випадкових чисел, введений діапазон був зменшений в чотири рази, а коефіцієнти беруться з діапазону [-3, 3].

Опис і пояснення деяких частин програми

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

  1. Функція простого числа типу int

int prost (int det)

{

int d, i, flag = 1;

d = det;

if ((d% 2 == 0 & & d! = 0 & & d! = 2) | | d <0)

flag = 0;

else

for (i = 3; i <sqrt (d); i + = 2)

if (d% i == 0)

flag = 0;

return flag;

}

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

Вхідні дані - число типу int.

Вихідні дані - число типу int.

  1. Функція перевірки визначника і розмірності матриці.

int prov_data (int det, int a, int b, int n)

{

int flag;

if (det <a || det> b | | n <2)

{

if (prost (det) == 1 | | n <2)

flag = -1;

}

else if (det == 0)

flag = 0;

else if (det == 1)

flag = 1;

else if (det> 1 | | (det <0 & & det> a))

flag = 2;

return flag;

}

Якщо введений визначник є простим числом, що виходить з введеного діапазону, і розмірність менше двох, то функція повертає -1. Інакше якщо визначник дорівнює нулю, то функція повертає нуль. Інакше якщо визначник дорівнює одиниці, то функція повертає одиницю, інакше якщо визначник більше двох або менше нуля, то функція повертає два.

Вхідні дані - чотири числа типу int.

Вихідні дані - число типу int (-1, 0, 1 або 2).

  1. Функція розкладу числа на прості множники.

void faktor (int * mas_fakt, int det, int n)

{

int i, j = 0, d, r;

int * mass1, * mass2;

mass1 = (int *) malloc (n * sizeof (int));

mass2 = (int *) malloc (n * sizeof (int));

if (det <0) d =- 1 * det;

else if (det> = 0) d = det;

for (i = 2; i <= d / 2 +1; i + +)

{While (d% i == 0)

{

d / = i;

* (Mas_fakt + j) = i;

j + +;

}

}

if (j <n)

{

while (j <= n)

{

* (Mas_fakt + j) = 1;

j + +;

}

}

else if (j> n)

{

r = i = 0;

while (i <j)

{

if (i <n)

* (Mass1 + i) =* (mas_fakt + i);

else if (i> = n)

{

* (Mass2 + r) =* (mas_fakt + i);

r + +;

}

i + +;

}

for (i = 0; i <r; i + +)

{J =* (mass2 + i);

* (Mass1 + i) =* (mass1 + i) * j;}

for (i = 0; i <n; i + +)

* (Mas_fakt + i) =* (mass1 + i);

}

if (det <0)

{R =* (mas_fakt +0); * (mas_fakt +0) =- 1 * r;}

free (mass 1);

free (mass 2);

}

У даній функції ініціалізується цикл для розкладання числа, масив mas _ fakt заповнюється значеннями, отриманими в результаті розкладання визначника на прості множники. Якщо розмірність масиву mas _ fakt менше розмірності рядка рівній n генерується матриці matr, дописуємо одиницями. Якщо розмірність масиву mas _ fakt більше n, то використовуються два допоміжних масиву mass 1 і mass 2, де в масив mass 1 записуються елементи 1, ..., n з масиву mas _ fakt, а в масив mass 2 й інші. Потім елементи з масиву mass 1 множаться на елементи з масиву mass 2. У результаті масив mas _ fakt заповнюється елементами масиву mass 1.

Вхідні дані - числа типу int.

Вихідні дані - масив (mas _ fakt) типу int.

  1. Функція, генерації квадратної матриці.

void gen_matric (int * matr, int * mas_fakt, int n, int a, int b)

{

int i, j, * vsp_mas, k = 1, k1;

vsp_mas = (int *) malloc (n * sizeof (int));

for (i = 0; i <n; i + +)

for (j = 0; j <n; j + +)

{

if (i == j)

{

* (Matr + i * n + j) =* (mas_fakt + j);

}

else if (i <j)

{

if (a> =- 10 & & b <= 10)

* (Matr + i * n + j) = random (ba) + a; if (a <-10 | | b> 10)

* (Matr + i * n + j) = random (b / 4 a / 4) + a / 4;

}

else * (matr + i * n + j) = 0;

}

for (i = 0; i <n; i + +)

* (Vsp_mas + i) =* (matr +0 * n + i);

for (i = 0; i <n; i + +)

{

if (a <-10 | | b> 10)

{

k = random (7) - 3;

if (k1 == k)

{

if (k <= 3 & & k> -3)

k-= 1;

else if (k> =- 3 & & k <3)

k + = 1;

}

}

for (j = 0; j <n; j + +)

{

if (i> 0)

* (Matr + i * n + j) =* (matr + i * n + j) + * (vsp_mas + j) * k;

else if (i == 0)

* (Matr + i * n + j) =* (matr + i * n + j);

}

k1 = k;

}

free (vsp_mas);

}

Спочатку ініціалізується цикл для генерації трикутної матриці, в якій масив mas _ fakt розташовується на головній діагоналі, і одна з областей, які перебувають вище головної діагоналі, заповнюється випадковими числами, що належать введеному діапазону, а інша заповнюється нулями. Потім ініціалізується цикл для складання першого рядка, що вийшла матриці matr і помноженої на певні коефіцієнти, з іншими рядками.

Вхідні дані - числа типу int.

Вихідні дані - матриця (matr) типу int.

Лістинг програми, що реалізує алгоритм генерації матриць

# Include <conio.h>

# Include <stdio.h>

# Include <string.h>

# Include <stdlib.h>

# Include <math.h>

# Include <time.h>

void gen_matric_0 (int * matr, int n, int a, int b);

void gen_matric_1 (int * matr, int n);

void gen_matric (int * matr, int * mas_fakt, int n, int a, int b);

int prov_data (int det, int a, int b, int n);

void print_matric (int * matr, int n);

void faktor (int * mas_fakt, int det, int n);

int prost (int det);

void main ()

{

clrscr ();

randomize ();

FILE * fp;

int * matr, mas [4], det, k, * mas_fakt;

int n, i, j, l, l1, a, b;

int flag;

fp = fopen («inf.txt», «r»);

fseek (fp, 0L, SEEK_END);

l = ftell (fp);

fseek (fp, 0L, SEEK_SET);

printf («Вхідні дані: \ n");

i = 0;

while (l! = ftell (fp))

{

fscanf (fp, «% d», & k);

l1 = ftell (fp);

mas [i] = k;

printf ("% d:», mas [i]);

i + +;

fseek (fp, l1, SEEK_SET);

}

fclose (fp);

det = mas [0];

n = mas [1];

a = mas [2];

b = mas [3];

matr = (int *) malloc (n * n * sizeof (int));

mas_fakt = (int *) malloc (n * sizeof (int));

faktor (mas_fakt, det, kol, n);

flag = prov_data (det, a, b, n);

if (flag ==- 1)

printf ("\ n Перевірте правильність введення даних! \ n Розмірність повинна бути> або дорівнює 2. \ n Визначник повинен входити в діапазон, \ n якщо є простим числом, \ n або розкладатися на прості множники належать даному діапазону !!!») ; »);

else if (flag! =- 1)

{

printf ("\ n Матриця: \ n");

if (flag == 0)

gen_matric_0 (matr, n, a, b);

else if (flag == 1)

{

gen_matric_1 (matr, n);

print_matric (matr, n);

printf ("\ n або \ n \ n");

gen_matric (matr, mas_fakt, n, a, b);

}

else if (flag == 2)

gen_matric (matr, mas_fakt, n, a, b);

print_matric (matr, n);

}

free (mas_fakt);

free (matr);

free (kol);

getch ();

}

int prov_data (int det, int a, int b, int n)

{

int flag;

if (det <a || det> b)

{

if (prost (det) == 1 | | n <2)

flag = -1;

}

else if (det == 0)

flag = 0;

else if (det == 1)

flag = 1;

else if (det> 1 | | (det <0 & & det> a))

flag = 2;

return flag;

}

void gen_matric_0 (int * matr, int n, int a, int b)

{

int * mass;

int nomer_str, i, j, k, l, ras;

mass = (int *) malloc (n * sizeof (int));

ras = n;

nomer_str = 0;

if (n == 2)

k = 1;

else if (n> 2)

k = 2;

for (l = 0; l <ras; l + +)

mass [l] = a + random (ba);

for (i = 0; i <n; i + +)

for (j = 0, l = 0; j <n; j + +)

{

if (i == nomer_str)

{

* (Matr + i * n + j) = mass [l];

l + +;

}

else if (i == k)

{

* (Matr + i * n + j) = mass [l];

l + +;

}

else * (matr + i * n + j) = random (ba) + a;

}

free (mass);

}

void gen_matric_1 (int * matr, int n)

{

int i, j;

for (i = 0; i <n; i + +)

for (j = 0; j <n; j + +)

{

if (i == j)

* (Matr + i * n + j) = 1;

else if (i! = j)

* (Matr + i * n + j) = 0;

}

}

void gen_matric (int * matr, int * mas_fakt, int n, int a, int b)

{

int i, j, * vsp_mas, k = 1, k1;

vsp_mas = (int *) malloc (n * sizeof (int));

for (i = 0; i <n; i + +)

for (j = 0; j <n; j + +)

{

if (i == j)

{

* (Matr + i * n + j) =* (mas_fakt + j);

}

else if (i <j)

{

if (a> =- 10 & & b <= 10)

* (Matr + i * n + j) = random (ba) + a; if (a <-10 | | b> 10)

* (Matr + i * n + j) = random (b / 4 a / 4) + a / 4;

}

else * (matr + i * n + j) = 0;

}

for (i = 0; i <n; i + +)

* (Vsp_mas + i) =* (matr +0 * n + i);

for (i = 0; i <n; i + +)

{

if (a <-10 | | b> 10)

{

k = random (7) - 3;

if (k1 == k)

{

if (k <= 3 & & k> -3)

k-= 1;

else if (k> =- 3 & & k <3)

k + = 1;

}

}

for (j = 0; j <n; j + +)

{

if (i> 0)

* (Matr + i * n + j) =* (matr + i * n + j) + * (vsp_mas + j) * k;

else if (i == 0)

* (Matr + i * n + j) =* (matr + i * n + j);

}

k1 = k;

}

free (vsp_mas);

}

void print_matric (int * matr, int n)

{

int i, j;

for (i = 0; i <n; i + +)

{

for (j = 0; j <n; j + +)

{

printf ("% 5d», * (matr + i * n + j));

}

printf ("\ n");

}

}

void faktor (int * mas_fakt, int det, int n)

{

int i, j = 0, d, r;

int * mass1, * mass2;

mass1 = (int *) malloc (n * sizeof (int));

mass2 = (int *) malloc (n * sizeof (int));

if (det <0) d =- 1 * det;

else if (det> = 0) d = det;

for (i = 2; i <= d; i + +)

{

while (d% i == 0)

{

d / = i;

* (Mas_fakt + j) = i;

j + +;

}

}

if (j <n)

{

while (j <= n)

{

* (Mas_fakt + j) = 1;

j + +;

}

}

else if (j> n)

{

r = i = 0;

while (i <j)

{

if (i <n)

* (Mass1 + i) =* (mas_fakt + i);

else if (i> = n)

{

* (Mass2 + r) =* (mas_fakt + i);

r + +;

}

i + +;

}

for (i = 0; i <r; i + +)

{

j =* (mass2 + i);

* (Mass1 + i) =* (mass1 + i) * j;

}

for (i = 0; i <n; i + +)

* (Mas_fakt + i) =* (mass1 + i);

}

if (det <0)

{R =* (mas_fakt +0); * (mas_fakt +0) =- 1 * r;}

free (mass1);

free (mass2);

}

int prost (int det)

{

int d, i, flag = 1;

d = det;

if ((d% 2 == 0 & & d! = 0 & & d! = 2) | | d <0)

flag = 0;

else

for (i = 3; i <sqrt (d); i + = 2)

if (d% i == 0)

flag = 0;

return flag;

Висновок

На закінчення даної курсової роботи хотілося б коротко сказати про виконану роботу, про проблеми, з якими зіткнувся при виконанні поставленої мети, і про перспективи розвитку та покращення даного програмного продукту.

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

Щоб виконати поставлену мету, необхідно було вирішити три завдання:

  1. Пошук літератури з предмету даної курсової роботи.

  2. Складання алгоритму для виконання поставленої мети.

  3. Написання програми, що реалізує складений алгоритм.

При вирішенні третього завдання зіткнувся з труднощами перевірки коректності введення даних. Необхідно було перевіряти, щоб пароль, визначник задовольняв діапазону елементів матриці, тобто введений визначник, якщо є простим числом, то він увійде у введений діапазон, і розмірність матриці повинна бути більше двох.

Основними джерелами, що допомагали виконати поставлену мету, були:

  1. Книги з лінійної алгебри, в яких містився матеріал з теорії матриць.

  2. Книги з інформатики та програмування.

Результатом даної курсової роботи став алгоритм генерації матриць і написана на його основі програма. Дана програма призначена для роботи з цілими числами. Однією з перспектив розвитку даного алгоритму є його поліпшення для роботи з дійсними та комплексними числами, а програми - написання її для роботи з усіма числами: цілими, речовими, комплексними.

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

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

Список літератури

  1. Ланкастер П. Теорія матриць / Ланкастер П. - М.: Наука, 1982. - 272 с.

  2. Лінійна алгебра / Ільїн В.А., Позняк Е.Г. - М.: Наука, 1978. - 304 с.

  3. Кострикіна А.І. Введення в алгебру / Кострикіна А.І. - М.: Фізико-математична література, 2001. - 368 с.

  4. Пісанецкі С. Технологія розряджених матриць / Пісанецкі С. - К.: Світ, 1988. - 410 с.

  5. Гантмахер Ф.Р. Теорія матриць / Гантмахер Ф.Р. - М.: Наука, 1988. - 552 с.

  6. Подбельський В.В. Мова С + + / Подбельський В.В. - М.: Фінанси і статистика, 2003. - 560 с.

  7. Кетков Ю.Л., Кетков А.Ю. Практика програмування: Бейсик, Си, Паскаль. Самовчитель. / Кетков Ю.Л., Кетков А.Ю. - СПб.: БХВ - Петербург, 2002. - 480 с.

  8. Мальцев А.І. Основи лінійної алгебри / Мальцев А.І. - М.: Наука, 1970. - 400 с.

  9. Крячков А.В., Сухініна І.В., Томшін В.К. Програмування на С і С + + / Крячков А.В., Сухініна І.В., Томшін В.К. - М.: Гаряча лінія - Телеком, 2000. - 344 с.

Додаток

Таблиця тестів.

У таблиці наведено результати деяких тестів програми.

номер тесту

вхідні дані

вихідні дані

1

0

2

- 100 100

2

-10

3

- 50 50

3

- 1

3

- 24 50

4

50

2

-100 100

5

11 березня

4

-100 100

Перевірте правильність введення даних! Розмірність повинна бути> або дорівнює 2. Визначник повинен входити в діапазон, якщо є простим числом, або розкладатися на прості множники належать даному діапазону!

6

1

3

-24 50

Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Курсова
259.8кб. | скачати


Схожі роботи:
Генерація поліномів
Генерація комбінаторних об`єктів
Генерація дидактичних матеріалів з математики
Рішення матриць
Вивчення матриць
Використання алгебри матриць
Алгебраїчні групи матриць
Калькулятор для матриць
Діти індиго Нова генерація людей сучасного соціуму
© Усі права захищені
написати до нас