С, що складається з одного стовпця і т рядків, виду
Добуток матриці А виду (1) на діагональну матрицю В виду
дає матрицю С виду
1.3 Обчислення визначника методом Гауса.
З квадратною матрицею () пов’язаний визначник (детермінант) – число, яке обчислюють за певними правилами. Визначник позначається або , тобто:
.
Порядок визначника відповідає порядку матриці, визначником якої він є.
Розглянемо, як можна визначити визначники методом Гауса.
Нехай потрібно визначити визначник матриці . Обчислювальна схема методу Гауса складається з таких етапів:
1) в матриці шукається найбільший по модулю елемент (головний елемент). Якщо цим елементом є , то представляють перший рядок з - тим рядком і перший стовпчик – з - тим стовпцем матриці;
2) елемент виноситься з першого рядка, отриманої після перестановки матриці . В результаті
,
де - величина, яка визначає знак визначника,
3) від кожного рядка віднімається рядок, перемножений відповідно на перший елемент того рядка, від якого віднімаємо. В результаті отримаємо:
з отриманими визначниками () – го порядку виконуються аналогічні дії, згідно п. 1, 2 і 3;
процес продовжується, до того часу поки аналогічна процедура не буде здійснена з () – им рядком. В результаті маємо:
.
Обчислювальна схема може і не враховувати етап вибору головного елемента (п. 1).
2. ПРАКТИЧНА ЧАСТИНА
2.1 Постановка завдання
2.1.1 Класовий тип для роботи з структурами типу "Вектор"
1. Створити параметризований клас для роботи з структурою типу Vector - одновимірний динамічний масив із змінною кількістю елементів. Тип елементу масиву надається параметром шаблону.
2. Для створення об'єкту динамічного типу і правильного його вилучення передбачити відповідні конструктори та деструктори. Для ініціалізації об'єктів передбачити конструктор копіювання та конструктори з параметрами.
3. Передбачити конструктор для створення вектору та ініціалізації його звичайним одновимірним масивом відповідного типу.
4. Створити перевантажені операції:
- доступу до елемента, символ "[]" ;
- присвоєння, символ "=" ;
- конкатенації, символ "+" ;
- конкатенації і присвоєння, символ "+=" ;
- введення із файлу, символи "<<" , ">>" ;
- виведення у файл, символи ">>" , "<<" ;
- порівняння, символі "==" , "!=" .
5. Передбачити компонентні функції:
size - кількість елементів вектора;
front - посилання на перший елемент;
back - посилання на останній елемент;
swap - обмін значеннями з іншим вектором;
insert - уставити елемент у надану позицію;
push_back - додати новий елемент у кінець вектора;
pop_back - вилучити останній елемент;
erase - вилучити елемент у наданій позиції;
find - знайти елемент у векторі і повернути його позицію;
accumulate - накопичення суми або добутку;
for_each - обробка елементів по наданій процедурі;
max , min - пошук максимального та мінімального елементів;
sort - упорядкування елементів у порядку зростання або зменшення.
2.2.2 Класові типи для роботи з чисельними матрицями та векторами
1. Створити класовий тип matrix - двовимірний чисельний масив динамічного типу із змінними розмірами.
2. Створити класовий тип vector - одновимірний чисельний масив динамічного типу із змінними розмірами.
2. Для конкретизації типів матриці та вектора використати шаблони.
3. Для створення об'єктів динамічного типу і правильного їх вилучення передбачити відповідні конструктори та деструкто-ри. Для ініціалізації об'єктів передбачити конструктори ко-піювання.
4. Створити перевантажені операції:
- динамічне присвоєння, символ "=" ;
- встановлення розмірів масиву та його обнуління, символ “=" ;
- введення із файлу, символи "<<" , ">>" ;
- виведення у файл, символи ">>" , "<<" ;
- транспонування матриці, символ "~" ;
- множення матриць, символ "*" ;
- складання та віднімання, символи "+" , "-" ;
- множення матриці на вектор, символ "*" ;
- скалярний добуток векторів, символ "*" .
5. Передбачити компонентні функції:
пошук мінімальних та максимальних елементів.
Опис алгоритму та ієрархії класів
Опис застосованих методів
Об’єктно-орієнтоване програмування базується на трьох парадигмах: інкапсуляція, успадкування, поліморфізм.
Інкапсуляція - об'єкт приховує свою внутрішню реалізацію, залишаючи для користувачів інтерфейси взаємодії
Успадкування - нащадок об'єкта отримує ті ж самі властивості, що й об'єкт-предок.
Поліморфізм - об'єкт змінює свою поведінку у рамках інтерфейсу, успадкованому від батьківських об'єктів
Класом називається структура мови, що може мати у своєму складі змінні, функції і процедури. Змінні в залежності від призначення іменуються чи полями властивостями. Процедури і функції класу — методами. Відповідний класу тип будемо називати об'єктним типом
Методи — це процедури і функції, описані усередині класу і призначені для операцій над його полями. До складу класу входить покажчик на спеціальну таблицю, де міститься вся інформація, потрібна для виклику методів. Від звичайних процедур і функцій методи відрізняються тим, що їм при виклику передається покажчик на той об'єкт, що їх викликав. Тому оброблятися будуть полючи саме того об'єкта, що викликав метод.
Класи можуть бути описані або в секції інтерфейсу модуля, або на верхньому рівні вкладеності секції реалізації. Не допускається опис класів "де потрапило", тобто усередині процедур і інших блоків коду.
Визначення основних принципів об'єктного підходу :
1. Абстрагування - виділення таких вагомих характеристик об'єктів, які відрізняють його від усіх інших об'єктів і які чітко визначають особливості даного об'єкта з точки зору подальшого аналізу.
2. Обмеження доступу - процес захисту окремих елементів, який не впливає на вагомі характеристики об'єкта, як цілого.
3. Модульність - властивість системи, яка зв'язана з можливістю декомпозиції на ряд тісно зв'язаних модулів (частин).
Вибір достатньої множини абстракцій для заданої предметної області є головною проблемою об'єктно-орієнтованого проектування. Існує цілий спектр абстракцій, який починається з об'єктів, що приблизно відповідають сутності предметної області, та закінчується об'єктами, які не мають реальних аналогів у житті. Підвищити ступінь абстракції можна :
1. описом власних типів даних;
2. використанням функцій;
3. об'єднання