Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KONSP_L.DOC
Скачиваний:
16
Добавлен:
10.02.2016
Размер:
1.06 Mб
Скачать

2.3 Блок-схема програми для рішення систем лінійних рівнянь методом Гаусса

Блок-схему програми можна поділити умовно на три частини. Перша – реалізує алгоритм виключення невідомих; друга - оберненой підстановки; третя - визначає найбільший коефіцієнт при Х та перестановці рівняння при необхідності.

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

При аналізі блок – схеми треба чітко представити зміст індексів i,j,k.

k – визначає номер того рівняння, яке віднімається з останніх, а також номер того невідомого, яке виключається з останніх n – k рівнянь.

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

j– означає номер стовпця.

Мал.2.1. Блок-схема послідовного виключення невідомих.

Блок-схема послідовного виключення невідомих доведена на мал.2.1.

Зворотня підставлення для находження значення невідомих задається наступними формулами:

x N = b N-1N / a N-1NN

xN-1=[ b N-2N-1 - a N-2N-1,N * xN ] / a N-2N-1.N-1

.....................................

xj = [b j-1j - a j-1jn * xn -...- aj-1j,j+1 *xj+1] / a j-1jj

для j = n-2, n-3, ..., 1.

Блок-схема зворотьнього уявлення доведена на мал.2.2. Помітимо, що у блок–схемі (мал.2.1) усі індекси у процесі обчислювання збільшуються, а у блок-схемі (2.2) один з індексів, а саме i, зміньшується.

Розглянемо третью блок-схему перестановки рівняння (2.3) яка входить у блок–схему (2.1). Завдання знаходження найбільшого коефіцієнта при xk та перестановці рівнянь при необхідності зв'язана з зменшенням помилки округлення, яка виникає при обчислюванні з числами з плаваючою комою. По–перше, перестановка може бути потрібна, щоб akk – щоб ухилитися від ділення на 0. А також, використовувая перестановку, можливо зменшення помилки округлення. Спочатку розглянемо числовий приклад. Розв'яжемо систему методом включення підставних:

3.241*102*x1+1.600*102*x2=1.632*102

1.020*104*x1+1.540*103*x2=1.174*104

Точне рішення ціє системи наступне:

x1=1.000*100 ; x2=1.000*100 ;

Мал.2.2. Блок-схема зворотьнього уявлення

Рішив це рівняння метод виключення у тому порядку,у якому вони записані, використовуя при обчисленні числа з 4 значними цифрами у мантісе. Так як а 11 0, то можна рішити по відомой схемі.

Перший та єдиний множник:

1.020*104

m = --------------- = 3.147*103

3.241*100

Перетворене друге рішення має вигляд:

5.730*10-1*x1-5.020*105*x2 = -5.019*105

Коефіцієнт при х1 повинен був бути = 0, але помилка округлення не дозволяє

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

-5.019*105

x2 = --------------- = 9.998*10-1

-5.020*105

З першого одержуємо : x1 = 9.873*10-1

Мал.2.3. Блок–схема перестановки рівнянь

Зараз підставим рівняння так, щоб максимальний по модулю елемент попав на

головну діагональ:

1.020*104*x1+1.540*103*x2=1.174*104

3.241*100*x1+1.600*102*x2=1.632*102

Зараз множник

3.241*100

m = --------------- = 3.177*10-4

1.020*104

Перетворенне друге рівняння: 0.000*x1+1.595*102*x2=1.595*102

Звідки x2 = 1.000*100 ; x1=1.000*100

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

Отже, завдання зводиться до перестановки n-k+1 останніх рівнянь, так щоб найбільший по модулю коефіцієнт при xk попав на головну діагональ.

Описаний спосіб рішення СЛР називають методом головного елементу.

При розгляденні блок–схеми необхідно пам'ятати, що при переході до даного етапу обчислюваний індекс k має деяке визначене значення, а i = k+1.

1. Спочатку у програму вводиться допоміжний індекс l , якому присвовується значення k.

2. Перше порівняння виробляєтьса між ак,l елементом, який лежить на головній діагоналі, та наступним за ним ai,k. Якщо |ai,k|>|al,k|, то індексу l присвоювають значення i та подальше порівняння виконується з другим елементом.

Тому індекс l являється номером елементу, який з'явився при порівнянні більш других по модулю. Індекс і пробігає по ходу програми значення від k+1 до n включно, та у кінці цього циклу індекс l визначає номер найбільшого по модулю елементу у k-ому стовпці. При перестановці рівняння цей коефіцієнт повинен попасти на головну діагональ.

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

Фактично процес полягає у перестановці коефіцієнтів, один з яких утримується у рівнянні k, а другий - у рівнянні l, яким би не було значення l.

Перестановку можна провести за допомогою трьохступеневого процесу. Цю перестановку необхідно виробити для усіх пар коефіцієнтів двох рівнянь:

DO j=k TO N; TEMP=A(k,j); A(k,j)=A(l,j); A(l,j)=TEMP; END;

Аналогічно для в.

Перед поверненням до основного процесу обчислювань необхідно відновити первісне значення індексу і, який був використован при порівнянні. Так як перед початком процесу індекс і мав значення k+1, то наприкінці блоку йому присвоюєтся попереднє значення i=k+1.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]