Розв'язок систем з трьохдіагональною матрицею (реалізація в середовищі Delphi)

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

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

Отже, будь-яке рішення, отримане методом прогонки, описується рівнянням:

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

Головне вікно розглядуваного delphi-проекту

Як видно з рисунка, розроблена програма складається з однієї форми і наступних візуальних компонентів: дві таблиці типу TStringGrid (призначені для введення елементів матриці коефіцієнтів та стовпця вільних членів), редактор типу TSpinEdit (відповідає за розмірність ситеми, рішення якої відшукується), текстова мітка типу TLable (використовується для пояснювальних підписів), дві кнопки TButton (призначені для рішення системи з трьохдіагональною матрицею та підготовки delphi-програми до нового прикладу) і область виведення багаторядкового тексту TMemo (призначена для виведення шуканих коренів).

Розглянемо роботу програми на прикладі рішення системи чотирьох рівнянь з чотрима невідомими:

Отже, запустивши delphi-програму, на першому кроці, переходимо до редактора «Кількість невідомих системи» і, за допомогою кнопок що знаходяться в його правій частині, вказуємо розмірність системи. Після цього, способом введення з клавіатури, таблиці типу TStringGrid заповнюємо значеннями коефіцієнтів при невідомих та значеннями елементів стовпця вільних членів відповідно. В результаті, головна форма програми прийме натступного вигляду:

Заповнення елементів головної форми вхідними даними

Далі, скориставшись кнопкою «Розв'язати систему рівнянь» (реалізує алгоритм методу прогонки), знаходимо шукане рішення.

Розв'язок системи лінійних рівнянь використовуючи метод прогонки

Скачати delphi-проект метод прогонки.

Матеріал був корисним, поділись в соціальних мережах:
Якщо тобі сподобалась дана тема, залиш свій коментар