11679

Ітераційні методи розвязання систем лінійних алгебраїчних рівнянь. Метод Зейделя. Метод релаксації

Лабораторная работа

Информатика, кибернетика и программирование

Лабораторна робота №2 Ітераційні методи розв’язання систем лінійних алгебраїчних рівнянь. Метод Зейделя. Метод релаксації. Мета роботи: познайомитися з ітераційними методами розв’язання систем алгебраїчних рівнянь реалізувати заданий за варіантом метод у серед...

Украинкский

2013-04-10

40.97 KB

32 чел.

Лабораторна робота №2

Ітераційні методи розв’язання систем

лінійних алгебраїчних рівнянь. Метод Зейделя. Метод релаксації.

Мета роботи: познайомитися з ітераційними методами розв’язання систем алгебраїчних рівнянь, реалізувати заданий за варіантом метод у середовищі MATLAB.

Завдання до виконання роботи: Доповнити систему MATLAB файлом, що реалізує метод Зейделя чи метод релаксації для розв‘язання системи лінійних алгебраїчних рівнянь (відповідно до варіанту).

Теоретичні відомості.

Ітераційні методи дозволяють наближено знайти розв’язок системи лінійних алгебраїчних рівнянь, як границю послідовних наближень, що обчислюються по однаковому алгоритму. До ітераційних методів належать: метод Зейделя, метод простої ітерації, метод релаксації, градієнтні методи та їх модифікації. Застосовуються ітераційні методи для розв’язання систем ЛАР з числами порядку 106.

Забезпечення збіжності ітераційного процесу

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

До ітераційних методів належать: метод Зейделя, метод простої ітерації, метод релаксації, градієнтні методи та їх модифікації. Застосовуються ітераційні методи для розв’язання СЛАР з коефіцієнтами порядку 106.

Ознакою ітераційного методу розв‘язання системи ЛАР є наявність початкового наближення х0 чи (х01, х02, х03, …) і потрібної точності отримання розв‘язків .

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

 (1)

Після заміни початкової системи лінійних рівнянь еквівалентною їй – нормалізованою системою – застосуємо ітераційні чисельні методи розв‘язання СЛАР, забезпечивши, таким чином, збіжність до розв‘язку.

Метод релаксації для розв‘язання систем лінійних алгебраїчних рівнянь

Для початку обчислень вибираємо початкове наближення (х10, х20, …, хn) і точність обчислень . На першому етапі обчислюємо, так звані, нев‘язки, тобто відхилення від нуля параметрів :

,                        (4)

які при канонічному представленні системи рівнянь повинні дорівнювати нулю.

В системі знаходимо рівняння з максимальною по модулю нев‘язкою: , і, обнулюючи ( = 0), обчислюємо значення за формулою:

              (5)

де і – номер рівняння з максимальною по модулю нев‘язкою. На наступному кроці підраховуємо нев‘язки за оновленим вектором наближень (х11, х20, …, хn0 ) і вибираємо рівняння з максимальною по модулю нев‘язкою :

,                         (6)

після чого розраховуємо , що задовольняє рівності:

                      (7)

При знаходженні чергового значення  не забувайте обнулювати ! 

Розрахунки продовжуємо до знаходження всіх значень , після цього перевіряємо умову припинення ітерацій, яка записується у вигляді: .

Якщо умова не виконується розпочинаємо наступний цикл ітерацій, який проводиться так, як і попередній, але в якості початкових значень невідомих виступають значення, обчислені у попередньому циклі ітерацій, наприклад: (х31, х21, …, хn1).

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

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

Завдання для виконання лабораторної роботи.

Створити програму на внутрішній мові середовища МatLAB, що реалізує метод простої ітерації (варіанти 1, 4, 7, 10), метод релаксації (варіанти 3, 6, 9) та метод Зейделя (варіант 2, 5, 8). Провести тестування створеної програми на прикладі, вибраному за варіантом лабораторної роботи № 1.

6 варіант.

Реалізація в Matlab

function result = relax(A, B, X, e, maxiter)

 A=[-2 -3 11;1 12 -5;-1 1 -1]

B=[-15 40 35 ]

X=[1;1;1]

e=0.001

maxiter=1000

B = A*B';

 A = A'*A;

 B = A'*B;

 D = A*X - B;

 [value, imax] = absmax(D);

 j = 1;

 while (abs(value) >= e) & (maxiter > 0)

       X(j) = X(j) - value/A(j,imax);

       D = A*X - B;

       [value,imax] = absmax(D);

       if j == length(B)

          j = 1;

          else 

          j = j + 1;

          end

       maxiter = maxiter - 1;

 end

 result = X;

D

A'

function [val, i] = absmax(A)

 val = A(1);

 i = 1;

 for j = 2 : length(A)

     if abs(val) < abs(A(j))

         val = A(j);

         i = j;

     end

 end

Реалізація

A =

   -2    -3    11

    1    12    -5

   -1     1    -1

B =

  -15    40    35

X =

    1

    1

    1

e =

 1.0000e-003

maxiter =

       1000

D =

 1.0e+016 *

  -0.5667

  -1.7124

   0.0000

ans =

    6    17   -26

   17   154   -94

  -26   -94   147

ans =

 1.0e+015 *

  -3.9993

  -0.1664

  -0.8138

Висновок: виконавши лабораторну роботу, я познайомився з ітераційними методами розв’язання систем алгебраїчних рівнянь, реалізував заданий за варіантом метод у середовищі MATLAB.


 

А также другие работы, которые могут Вас заинтересовать

69742. Символьні масиви. Рядковий тип 40 KB
  Крім того, для рядкових масивів допустима операція конкатенації, яку позначають символом +. Вона полягає у формуванні нового символьного масиву, розмір якого дорівнює сумі розмірів масивів-операндів, а значення - це елементи масивів-операторів, розміщені послідовно.
69743. Записи з варіантами 33 KB
  Іноді треба вводити в запис деяку інформацію, яка залежить від іншої інформації, що вже є в записі. Це зумовлює потребу введення додаткових полів, які залежать від значень інших полів. Комбінований тип допускає таку організацію даних, оскільки, крім фіксованої частини запису...
69744. Ієрархічні записи 36.5 KB
  Досі ми розглядали записи, у яких значення окремих полів були величинами простих типів або рядками. Проте в мові Паскаль значення поля може бути довільного типу, в тому числі записом. Наведемо приклад такого використання записів.
69745. Діапазонний тип 24 KB
  Однак може статися, що в програмі цій змінній буде присвоєне значення, що виходить за межі заданого інтервалу. Щоб контролювати ситуацію й уникати таких помилок, у мові Паскаль введено діапазонний тип, що передбачає визначення діапазону значень іншого попередньо заданого...
69746. Структурне програмування 35.5 KB
  Мета структурного програмування створювати програми чіткої структури тобто такі які можна було б без великих затрат розуміти супроводжувати і модифікувати без участі авторів оскільки на сучасному етапі затрати на супровід і модифікацію програм становлять...
69747. Перелічуваний тип 30.5 KB
  Стандартні типи змінних, як відомо, мають значення, що є елементами з підмножини цілих, дійсних чисел, логічних значень (true або false) або множини символів обчислювальної системи (наприклад ASCII). Проте часто доводиться стикатися з поняттями, які можуть набувати специфічних...
69748. Оператор безумовного переходу 24 KB
  Розглянутий умовний оператор if-then-else вибирає один з двох можливих напрямів виконання програми залежно від виконання умови. Інакше його називають оператором умовного переходу. В програмі може виникнути потреба перейти до ви конання деякого відрізка програми незалежно від жодної умови.
69749. Модуль Dos 21 KB
  Dos дозволяє обмінюватися інформацією з операційною системою. Системний час переривання стани параметрів оточення процедури обробки процесів робота з дисковим простором всім цим займається модуль Dos. Модуль Dos і WinDos Модулі Dos і WinDos реалізують численні процедури і функції...
69750. Параметри-змінні 25 KB
  Для того, щоб результат обчислень у тілі процедури зручно було використати в програмі, треба не фіксувати змінну, якій присвоюється одержане значення, а зробити її також параметром. Позначимо цю змінну, наприклад, res і введемо її в список формальних параметрів процедури.