АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Метод Зейделя

Читайте также:
  1. I этап Подготовка к развитию грудобрюшного типа дыхания по традиционной методике
  2. I. ГИМНАСТИКА, ЕЕ ЗАДАЧИ И МЕТОДИЧЕСКИЕ ОСОБЕННОСТИ
  3. I. Методические основы
  4. I. Методические основы оценки эффективности инвестиционных проектов
  5. I. Предмет и метод теоретической экономики
  6. I. Что изучает экономика. Предмет и метод экономики.
  7. I.СИСТЕМЫ ЛИНЕЙНЫХ УРАВНЕНИЙ. МЕТОД ГАУССА
  8. II. Метод упреждающего вписывания
  9. II. МЕТОДИЧЕСКИЕ УКАЗАНИЯ ДЛЯ ВЫПОЛНЕНИЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ
  10. II. Методы непрямого остеосинтеза.
  11. II. Проблема источника и метода познания.
  12. II. Рыночные методы.

Пусть требуется решить систему уравнений (3.1):

 

(3.25)

 

Выразим из первого уравнения переменную x 1, из второго — x 2, и т.д.:

Пусть k -е приближение к решению обозначено так . Подставим его в правую часть полученной системы и выразим следующее приближение . В отличие от метода итераций, метод Зейделя использует при вычислении уже найденные компоненты вектора x k +1.

Расчетные формулы метода Зейделя можно записать в виде:

 

(3.26)

 

Теорема 3.3 (достаточные условия сходимости [1]). Пусть при всех i для коэффициентов системы уравнений (3.25) выполняются условия

 

(3.27)

 

Тогда метод Зейделя сходится и выполняется неравенство

 

, (3.28)

 

где x * — точное решение системы (3.25).

Если матрица A удовлетворяет условию (3.27), то говорят, что A — матрица с диагональным преобладанием.

Пример 3.5. Решить систему уравнений методом итераций и методом Зейделя. Сравнить скорости сходимости методов.

 

Решение. Очевидно, матрица коэффициентов системы уравнений имеет диагональное преобладание. Выразим из каждого уравнения соответствующую переменную

 

и запишем расчетные формулы метода Зейделя

 

 

Введем в программе Excel обозначения в ячейках A 1: D 1, начальные значения в ячейках B 2: D 2 и формулы в ячейках B 3: D 3, как показано в таблице 3.4. Выделим диапазон B 3: D 3 и протянем маркер заполнения вниз до ячейки D 12. Для нумерации последовательных приближений выделим диапазон A 2: A 3 и протянем маркер заполнения вниз до ячейки A 12. Получим 10 последовательных приближений к решению.

Таблица 3.4

  A B C D E
  k X1 X2 X3 Погрешность
           
    =(5-2*C2-D2)/9 =(6+B3+D2)/7 =(-3-B3-C3)/9 =МАКС(ABS(B3-B2); ABS(C3-C2); ABS(D3-D2))

 

Результаты расчетов приведены в таблице 3.5. Как видим, есть сходимость процесса итераций, так как соответствующие компоненты векторов x 9 и x 10 содержат по 8 одинаковых значащих цифр, начиная слева направо. Норма разности || x 10x 9||1 = 3,92663E–10 < 0,000000001.

Таблица 3.5

  A B C D E
  k X1 X2 X3 Погрешность
           
    0,222222222 1,031746032 -0,472663139 1,472663139
    0,378796786 0,843733378 -0,469170018 0,188012654
    0,420189251 0,850145605 -0,474481651 0,041392465
    0,419354493 0,849267549 -0,474291338 0,000878056
    0,419528471 0,84931959 -0,474316451 0,000173978
    0,419519697 0,849314749 -0,474314938 8,77441E-06
    0,419520604 0,849315095 -0,474315078 9,07706E-07
    0,419520543 0,849315066 -0,474315068 6,13672E-08
    0,419520548 0,849315069 -0,474315069 5,25818E-09
    0,419520548 0,849315068 -0,474315068 3,92663E-10

 

Приведем результаты решения системы методом итераций. Если в таблице 3.4 формулы в третьей строке заменить на формулы метода итераций, как показано в ячейках A 3: D 3 таблицы 3.6, затем выделить A 3: D 3 и скопировать вниз маркером заполнения до строки 12, то получим таблицу 3.7.

Таблица 3.6

  A B C D E
  k X1 X2 X3 Погрешность
           
    =(5-2*C2-D2)/9 =(6+B2+D2)/7 =(-3-B2-C2)/9 =МАКС(ABS(B3-B2); ABS(C3-C2); ABS(D3-D2))

 

Сравнивая таблицы 3.5 и 3.7, мы видим, что метод Зейделя имеет более высокую скорость сходимости, чем метод итераций. Например, на шаге k = 4, метод итераций дает погрешность 0,012514, а метод Зейделя имеет на этом же шаге погрешность 0,000878056.

Таблица 3.7

  A B C D E
  k X1 X2 X3 Погрешность
           
    0,222222 1,142857 -0,55556 1,555556
    0,363316 0,809524 -0,48501 0,333333
    0,429551 0,839758 -0,46365 0,066236
    0,420459 0,852272 -0,47437 0,012514
    0,418869 0,849442 -0,47475 0,00283
    0,419541 0,84916 -0,47426 0,000671
    0,419548 0,849326 -0,4743 0,000166
    0,419516 0,849321 -0,47432 3,21E-05
    0,41952 0,849314 -0,47432 7,35E-06
    0,419521 0,849315 -0,47431 1,17E-06

 

 

Теорема 3.4 (достаточные условия сходимости [1]).Пусть матрица A системы (3.1) — вещественная, симметричная и положительно определенная. Тогда метод Зейделя сходится.

Пример 3.6. Решить методом Зейделя систему уравнений

 

 

Решение. Матрица системы симметрична, но не имеет диагонального преобладания.Применяя критерий Сильвестра (см. ниже п. 3.6, теорема 3.8), покажем, что матрица системы положительно определена:

 

 

Согласно теореме 3.4 метод Зейделя для данной системы сходится. Выразим из каждого уравнения соответствующую переменную и запишем формулы метода Зейделя:

 

 

Аналогично примеру 3.5 по данным расчетным формулам можно вычислить решение системы линейных уравнений.

Составим программу на языке C ++ для решения системы уравнений методом Зейделя (3.26):

 

#include <except.h>

#include <iostream.h>

#include <math.h>

int Zeidel(long double **a, long double *b, long double *x,

long double eps, int k_max, const int n);

int main(){

long double **a; long double *b, *x, eps; int i,j,n,k_max;

cout <<"\n input n = "; cin >> n;

cout <<"\n input eps = "; cin >> eps;

cout <<"\n input k_max = "; cin >> k_max;

try {

a= new long double*[n]; for(i=0;i<n;i++) a[i]=new long double[n];

b= new long double[n]; x= new long double[n];

}

catch (xalloc){cout <<"\nCould not allocate\n"; exit(-1);}

cout <<"\n input matrix a \n";

for (i=0; i<n; i++)for (j=0; j<n; j++)cin >> a[i][j];

cout <<"\n input vector b\n";

for (i=0; i<n; i++)cin >> b[i];

cout << "\n matrix a: ";

for (i=0; i<n; i++){cout << "\n"; for (j=0; j<n; j++) cout <<" "<< a[i][j];}

cout << "\n vector b: ";

for (i=0; i<n; i++)cout << "\n " << b[i];

Zeidel(a, b, x,eps,k_max, n);

cout << "\n vector x: ";

for (i=0; i<n; i++)cout << "\n x[" << i <<"] = " << x[i];

cout << "\n Press Key and Enter to continue";

cin >> i; // for pause

for(i=0;i<n;i++)delete[] a[i];

delete a;

delete[] b;

delete[] x;

return 0;

}//end main

int Zeidel(long double **a, long double *b, long double *x,

long double eps, int k_max, const int n){

int i, j, m; long double *x1, xerr, s;

try {x1 = new long double[n];}

catch (xalloc){cout <<"\nCould not allocate\n"; exit(-1);}

for (i = 0; i < n; i++)x1[i] = x[i];

for (m = 0; m <= k_max; m++) {// m

for (i = 0; i < n; i++){ //i

s = b[i];

for (j = 0; j < n; j++) if(j!= i)s = s - a[i][j]*x1[j];

x1[i] = s / a[i][i];}//end i

xerr = 0;

for (i = 0; i < n; i++) xerr = xerr + (x1[i] - x[i])* (x1[i] - x[i]);

xerr = sqrt(xerr); for (i = 0; i < n; i++)x[i] = x1[i];

if(xerr < eps) break;

}// end m

delete[] x1;

return 0;

}// end iter

 

Найдем с помощью этой программы решение системы уравнений примера 3.4:

 

input n = 3

input eps = 0.0000001

input k_max = 10000

input matrix a

4 –2 0 –2 4 –2 0 –2 4

Input vector c

5 –6 –3

matrix a:

4 –2 0

–2 4 –2

0 –2 4

vector 5:

–6

–3

vector x:

x[0] = 4.84288e–08

x[1] = –2.5

x[2] = –2

Press Key and Enter to continue

 

Ответ: x = (0; –2,5; –2).


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.017 сек.)