Програмна реалізація методу простої ітерації для вирішення СЛАУ у пакеті MATLAB

Вхідні параметри: U – розширена матриця коефіцієнтів, eps – потрібна точність рішення.

Function res = Jakobi(U,eps);

error ('Невірно задана система');

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

error('Система не спільна');

%сума за рядками

if k 1) && (max_norm2>1) && (max_norm3>1))

error('Введена матриця не є діагонально переважаючою')

%знаходження суми для Х1(i)

sum = sum + (A (i, j) * X0 (j));

while (abs(X0(i) - X1(i)) > eps)

%знаходження суми для Х1(i)

sum = sum + (A (i, j) * X0 (j));

%виведення вектора рішень

%виведення числа ітерацій для виконання умови точності

методу

ВБУДОВАНІ ФУНКЦІЇ ПАКЕТІВ MATHCAD І MATLAB

ДЛЯ НАБЛИЖЕНОГО РІШЕННЯ СИСТЕМ ЛІНІЙНИХ

АЛГЕБРАЇЧНИХ РІВНЯНЬ

Пакет MATHCAD

Вирішення систем лінійних рівнянь – досить поширене завдання. Для системи лінійних рівнянь, заданої в матричному виглядіAX=B, вектор рішення можна отримати з очевидного виразу X=A-1B, або, наприклад, рішення системи рівнянь з перевіркою на невиродженість матриці:X:=if (A,A -1 B,0).

Слід звернути увагу на те, що пакет містить і вбудовану функцію вирішення лінійних системlsolve(A,B), деА - матриця коефіцієнтів, аВ - вектор вільні члени. Приклад використання запропонованих методів показано на рис. 5.1.

реалізація

Мал. 5.1. Приклади розв'язання системи

Для вирішення систем рівнянь, систем нерівностей, змішаних систем є вирішальні блоки. Структура вирішального блоку:

початокGiven

тіло кілька конструкцій видуАВ1 оп АВ2

(оп – деяка операція відношення, причому для написання знака рівності використовується особливий «жирний» знак рівності, який знаходиться на панелі інструментів; знак присвоювання в тілі вирішального блоку не використовується)

кінецьFIND (список) абоMINERR (список).

Список – це перелік змінних, які потрібно знайти.

За допомогоюFIND шукають точне рішення; якщо вона відсутня, виникає помилка. За допомогоюMINERR завжди буде знайдено рішення, що мінімізує нев'язку обмежень. ЗміннаERR - величина помилки.

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

Given

find(x, y) =

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

У тілі вирішального блоку не можна будувати графіки, виконувати обчислення.

Ітерації проводяться до тих пір, покиôERRô£ TOL. Якщо зустрічається сідлова точка і невідомо, куди спрямований градієнт, то видається повідомлення converging (не вирішуване). Кількість ітерацій обмежена. Можливе повідомлення про помилку видуdid not find solution (не знайдено рішення).

У разі виникнення таких помилок можна:

- Змінити точність -TOL ;

- Замінити початкові умови;

– замінитиfind наminerr та отриматинаближене рішення.

Однак при використанні функційfind іminerr потрібно виявляти обережність та обов'язково передбачати перевірку рішень, т.к. нерідкі випадки, коли рішення може виявитися помилковим.

Для отримання іншого рішення можна змінити початкові умови, уточнення – зменшитиTOL.

Пакет MATLAB

Розглянемо дві системи лінійних рівнянь:АХ=В таХА=В. У MATLAB такі системи вирішуються без обчислення зворотної матриці. Два типи матричного поділу/ і\ використовуються для цих двох ситуацій, коли невідома матриця стоїть ліворуч або праворуч від матриці коефіцієнтів:

Х=А\В відповідає рішеннюАХ=В ;

Х=В/А відповідає рішеннюХА = В.

При цьому повинні виконуватися умови відповідності розмірності матрицьX, А, В. Нагадаємо, що для варіантаХ=А\В матрицяX повинна мати таку ж кількість стовпців, що і матрицяВ, і те ж число рядків, скільки стовпців у матриціА. ДляХ=В/А ці умови обернені.

Алгебраїчні властивості оператора/ можна вивести із співвідношення(В/А)' = (А'\В').

Матриця не обов'язково має бути квадратною, вона може бути розміромmхn. При цьому існують такі варіанти:

  • m = n - Квадратна система, можливе знаходження точного рішення;
  • m > n - перевизначена система, рішення шукається за допомогою методу найменших квадратів;
  • m n і ранг матриці дорівнюєn, то кожен із трьох наступних виразів обчислюєX за методом найменших квадратів:

Х=А\В

Х = рінв (А) * В

Х=inv(А*А)*А'*В

В іншому випадку рішенняX за методом найменших квадратів неєдино і існує безліч векторів, що мінімізуютьnorm(A*X-B)> ненульових компонент:r=rank(A). Рішення, обчислене за допомогоюX=rinv(А)*В, – це рішення з мінімальною нормоюX.