Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Теория некоторых методов - 2003 / Решение систем линейных алгебраических уравнений

.doc
Скачиваний:
33
Добавлен:
07.01.2014
Размер:
107.52 Кб
Скачать

Решение систем линейных алгебраических уравнений.

Все методы решения СЛАУ делятся на:

1)точные

2)итерационные

Точные методы позволяют получить решение путём выполнения определённого и точного количества арифметических операций.

Итерационные методы дают некоторую последовательность приближений к решению.

Метод Гаусса

Требуется решить систему n-линейных уравнений с n неизвестными.

Метод Гаусса включает два этапа.

Первый этап (прямой ход) заключается в последовательном исключении неизвестных из системы уравнений и состоит из (n – 1) шага.

На первом шаге с помощью первого уравнения исключается из всех последующих уравнений начиная со второго, на втором шаге с помощью второго уравнения исключается из последующих уравнений, начиная с третьего и т.д. Последнее исключение из последнего n-ого уравнения так, что последнее уравнение будет содержать только одно неизвестное .

Второй этап (обратный ход) заключается в последовательном вычислении искомых неизвестных и состоит из n-шагов. Решая последнее уравнение, находим неизвестное . Далее используем это значение из предыдущего уравнения и вычисляем неизвестное и т.д.

Последним найдём неизвестное из первого уравнения.

Матрица, содержащая помимо коэффициентов при неизвестных столбец свободных членов , называется расширенной

Модификации метода Гаусса

Для уменьшения погрешности вычислений при реализации алгоритма метода Гаусса используют его модификации, такие как метод Гаусса с частичным или полным выбором «ведущего элемента. В модификации с частичным выбором на к-ом шаге прямого хода в качестве ведущего выбирается наибольший по модулю элемент из приведённой части к-ого столбца матрицы, т.е.

При полном выборе в качестве ведущего элемента выбирается max по модулю элемент из всей неприведённой части матрицы коэффициентов системы:

Метод простых интераций

Алгоритм метода состоит их трёх этапов.

Первый этап. Решим каждое уравнение относительно соответствующего неизвестного:

……………………………………

, где

Тогда интегрирующую формулу запишем в виде:

, где вектор - приведённый столбец свободных членов, матрица - приведённая матрица коэффициентов.

Второй этап. Проверяем условие сходимости если условие не выполняется, то преобразуем исходную систему и выполняем первый этап.

Третий этап. Уточнение решения по полученной итерационной формуле. За начальное приближение принимается вектор

Условием окончания итерационного процесса является выполнение условия:

, где величина определяет точность получаемого решения, а - смежные приближения к решению.

Программа решения СЛАУ методом Гаусса

Option Explicit

Option Base1

Sub Gausse( )

Dim n%,c!( ),x!( )

Dim i%,j%( ),k%,bet!,s!

n=cells(1,3)

Redim c(n,n+1), x(n)

For i=1 to n

For j=1 to n+1

c(i,j)=cells(i+3,j+1)

Next j

Next i

For k=1 to n-1

For i=k+1 to n

Bet=-c(i,k)/c(k,k)

For j=k to n+1

c(i.j)=c(I,j)+bet*c(k,j)

Next j

Next i

Next k

x(n)=c(n,n+1)/c(n,n)

For i=n-1 to 1 step -1

s=0

For j=i+1 to n

S=s+c(i,j)*x(i)

Next j

For j=1 to n

Cells (n+5,j)=x(j)

Next j

End Sub

Пример:

-7 -2 1 -7

-2 4 -2 4

-1 2 -6 -6

-7 - 2 1 -7

-2 4 - 2 = 4

1 2 6 6

Первый этап. Строим расширенную матрицу и преобразуем её к ступенчатому виду:

-7 -2 1 -7 -7 -7 -2 1 -7 ( ) -7 -2 1 -7

-2 4 -2 4 4 () -2 4 -2 4 0 4,6 -1,7 6

-1 2 -6 -6 -6 0 0 5 -8 0 0 5 -8

Второй этап. Вычисляем неизвестные:

Программа вычисления СЛАУ методом простых итераций

Option Explicit

Option Base1

Sub Iter( )

Dim n%,a!( ),b!( ),c!( ),x!( ),d!( )

Dim z!( ),e!( ),i%,j%( ),k%,normc!

n=cells(2,1)

Redim a(n,n), b(n),c(n,n),d(n),x(n)

For i=1 to n

For j=1 to n+1

c(i,j)=cells(i+1,j+1)

Next i

Next j

For i=1 to n

For j=1 to n

If j=1 then c(i,j)=0

Else c(i,j)=a(i,j)/a(i,j)

Cells (6+i,y+1)=c(i,j)

Rem ocenka chodimosti

Norm c=norm c+c(i,j)^2

Next j

Next i

Norm c=sqr(normc)

If norm c >1 then Msgbox «norma bolwe edinicy»

& norm c:goto 665

End If

For i=1 to n

x(i)=d(i)

Next j

Norm dx=0

Do

For i=1 to 1

cx(i)=cx(i)+c(i,j)*x(j)

Next j

z(i)=d(i)-cx(i)

dx(i)=z(i)-x(i)

norm dx=normdx+dx(i)^2

Next i

Norm dx=sqr(normdx)

For i=1 to n

x(i)=z(i)

Next i

Loop while norm dx>e

For i=1 to n

Cells (6+i,1)=z(i)

Next i

End Sub