Программная реализация метода Якоби

Автор: Пользователь скрыл имя, 28 Декабря 2010 в 00:25, реферат

Краткое описание

В отличие от метода Гаусса-Зейделя мы не можем заменять на в процессе итерационной процедуры, т.к. эти значения понадобятся для остальных вычислений. Это наиболее значимое различие между методом Якоби и методом Гаусса-Зейделя решения СЛАУ. Таким образом на каждой итерации придётся хранить оба вектора приближений: старый и новый.

Файлы: 1 файл

Реализация метода Якоби.docx

— 39.60 Кб (Скачать)

Московский  Государственный Университет Приборостроения  и Информатики 
 

Реферат

По  дисциплине: Вычислительная математика

Тема: «Программная реализация метода Якоби» 
 
 

       Работу  выполнил: Козеев И.В.

       Специальность: ИТ-4

       Группа: 0904

       Работу  принял: 
 
 
 

       Москва 2010г. 

Постановка  задачи

Возьмём систему  линейных уравнений:

, где 

Или

Описание  метода

Для того, чтобы построить итеративную процедуру метода Якоби, необходимо провести предварительное преобразование системы уравнений к итерационному виду . Оно может быть осуществлено по одному из следующих правил:

 

где в принятых обозначениях D означает матрицу, у  которой на главной диагонали  стоят соответствующие элементы матрицы A, а все остальные нули; тогда как матрицы U и L содержат верхнюю  и нижнюю треугольные части A, на главной диагонали которых нули, Eединичная матрица.

Тогда процедура  нахождения решения имеет вид:

где k счётчик итерации.

В отличие от метода Гаусса-Зейделя мы не можем заменять на в процессе итерационной процедуры, т.к. эти значения понадобятся для остальных вычислений. Это наиболее значимое различие между методом Якоби и методом Гаусса-Зейделя решения СЛАУ. Таким образом на каждой итерации придётся хранить оба вектора приближений: старый и новый.

Условие сходимости

Приведем достаточное  условие сходимости метода.

Теорема. 
Пусть . Тогда при любом выборе начального приближения :
  1. метод сходится;
  2. скорость сходимости метода равна скорости сходимости геометрической прогрессии со знаменателем ;
  3. верна оценка погрешности: .
 

Условие остановки

Условие окончания  итерационного процесса при достижении точности в упрощённой форме имеет вид:

(Существует  более точное условие окончания  итерационного процесса, которое  более сложно и требует дополнительных  вычислений)

Алгоритм реализации на C++

#include <math.h>

#define eps 0.001 //желаемая точность

 

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

 

void Jacobi (int N, double **A, double *F, double *X)

// N - размерность  матрицы; A[N][N] - матрица коэффициентов, F[N] - столбец свободных членов,

// X[N] - начальное  приближение, ответ записывается  также в X[N];

{

      double * TempX = new double[N];

      double norm; // норма, определяемая как наибольшая разность компонент столбца иксов соседних итераций.

 

      do {

            for (int i = 0; i < N; i++) {

                  TempX[i] =- F[i];

                  for (int g = 0; g < N; g++) {

                        if (i != g)

                              TempX[i] += A[i][g] * X[g];

                  }

                  TempX[i] /= -A[i][i];

            }

                norm = fabs(X[0] - TempX[0]);

            for (int h = 0; h < N; h++) {

                  if (fabs(X[h] - TempX[h]) > norm)

                        norm = fabs(X[h] - TempX[h]);

                  X[h] = TempX[h];

            }

      } while (norm > eps);

      delete[] TempX;

}

Информация о работе Программная реализация метода Якоби