Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otchet.doc
Скачиваний:
19
Добавлен:
12.03.2015
Размер:
164.86 Кб
Скачать

Тема 2. Численные методы решения системных линейных алгебраических уравнений

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

Дана система. Требуется ее решить методом обратной матрицы, методом Крамера, методом Гаусса, методом простой итерации, методом Гаусса-Зейделя.

2,3х1+3,4х3+0,8х3=-0,8

2,4х1-1,1х2+3,8х3=1,8

6,2х1-5,4х2-0,5х3=0,52

Решение:

2,3

3,4

0,8

-0,8

2,4

-1,1

3,8

1,8

6,2

-5,4

-0,5

0,52

  1. Метод обратной матрицы

Обратная матрица

0,164953

-0,02051

0,108038

0,193842

-0,04783

-0,05339

-0,04807

0,262266

-0,08369

  1. Метод Крамера

определитель

127,733

-0,8

3,4

0,8

1,8

-1,1

3,8

0,52

-5,4

-0,5

определитель

-14,396

2,3

-0,8

0,8

2,4

1,8

3,8

6,2

0,52

-0,5

определитель

-34,3524

2,3

3,4

-0,8

2,4

-1,1

1,8

6,2

-5,4

0,52

определитель

59,6532

  1. Метод Гаусса

Sub metodo_gauss()

n = 3

Dim a(1 To 3, 1 To 3)

Dim b(1 To 3)

Dim x(1 To 3)

For i = 1 To 3

For j = 1 To 3

a(i, j) = Worksheets("Лист1").Cells(i, j).Value

Next j

Next i

For i = 1 To 3

b(i) = Worksheets("Лист1").Cells(i, 5).Value

Next i

For k = 1 To n - 1

For i = k + 1 To n

m = a(i, k) / a(k, k)

For j = k + 1 To n

a(i, j) = a(i, j) - m * a(k, j)

Next j

b(i) = b(i) - m * b(k)

Next i

Next k

x(n) = b(n) / a(n, n)

For i = n - 1 To 1 Step -1

s = 0

For j = i + 1 To n

s = s + a(i, j) * x(j)

Next j

x(i) = (b(i) - s) / a(i, i)

Next i

For i = 1 To 3

With Worksheets("Лист1")

.Range("K1").Value = x(1)

.Range("K2").Value = x(2)

.Range("K3").Value = x(3)

End With

Next i

End Sub

  1. Метод простой итерации

Расчетная формула

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

6,2

-5,4

-0,5

0,52

2,3

3,4

0,8

-0,8

2,4

-1,1

3,8

1,8

Sub metod_prostoi_iteratzyi()

n = 3

e = 0.0001

Dim a(1 To 3, 1 To 3)

Dim b(1 To 3)

Dim x(1 To 3)

For i = 1 To 3

For j = 1 To 3

a(i, j) = Worksheets("Лист2").Cells(i, j).Value

Next j

Next i

For i = 1 To 3

b(i) = Worksheets("Лист2").Cells(i, 5).Value

Next i

x10 = 0

x20 = 0

x30 = 0

Do

x1 = (b(1) - a(1, 2) * x20 - a(1, 3) * x30) / a(1, 1)

x2 = (b(2) - a(2, 1) * x10 - a(2, 3) * x30) / a(2, 2)

x3 = (b(3) - a(3, 1) * x10 - a(3, 2) * x20) / a(3, 3)

c = Abs(x1 - x10) + Abs(x2 - x20) + Abs(x3 - x30)

x10 = x1

x20 = x2

x30 = x3

k = k + 1

Loop While c > e

With Worksheets("Лист1")

.Range("l1").Value = x1

.Range("l2").Value = x2

.Range("l3").Value = x3

.Range("l5").Value = k

End With

End Sub

  1. Метод Гаусса-Зейделя

Расчетная формула

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

6,2

-5,4

-0,5

0,52

2,3

3,4

0,8

-0,8

2,4

-1,1

3,8

1,8

Sub metod_gaussa_zeidelya()

n = 3

e = 0.0001

Dim a(1 To 3, 1 To 3)

Dim b(1 To 3)

Dim x(1 To 3)

For i = 1 To 3

For j = 1 To 3

a(i, j) = Worksheets("Лист2").Cells(i, j).Value

Next j

Next i

For i = 1 To 3

b(i) = Worksheets("Лист2").Cells(i, 5).Value

Next i

x10 = 0

x20 = 0

x30 = 0

Do

x1 = (b(1) - a(1, 2) * x20 - a(1, 3) * x30) / a(1, 1)

x2 = (b(2) - a(2, 1) * x1 - a(2, 3) * x30) / a(2, 2)

x3 = (b(3) - a(3, 1) * x1 - a(3, 2) * x2) / a(3, 3)

c = Abs(x1 - x10) + Abs(x2 - x20) + Abs(x3 - x30)

x10 = x1

x20 = x2

x30 = x3

k = k + 1

Loop While c > e

With Worksheets("Лист1")

.Range("M1").Value = x1

.Range("M2").Value = x2

.Range("M3").Value = x3

.Range("M5").Value = k

End With

End Sub

Результаты:

х1

-0,1127

-0,1127

-0,1127

-0,11269

-0,11269

х2

-0,26894

-0,26894

-0,26894

-0,26895

-0,26895

х3

0,467015

0,467015

0,467015

0,467

0,467

 

м. обр. м.

м. крам.

м. гаусса

м. пр. ит.

м. Г.-З.

61

61

Вывод:

Существуют 2 группы решения СЛАУ: прямые(точные) и итерационные(приближенные).

  1. Прямые методы - по существу аналитические методы. Это метод Крамера, метод Гаусса, метод обратной матрицы. Их хорошо использовать, когда число уравнений невелико, позволяют получить абсолютно точный результат. К недостаткам относятся необходимость хранения в оперативной памяти всю матрицу коэффициентов, накапливание погрешности в следствие округления арифметических и других действий над числами. Не учитывается также структура матрицы, многие элементы которой могут быть равны нулю.

  2. Итерационные методы – методы последовательных приближений. К ним относятся метод простой итерации и метод Гаусса-Зейделя. Важной чертой этих методов является самоисправляемость, простота, реализации. В случае сходящегося итерационного процесса ошибка в каком-то приближении исправляется в последующих вычислениях, и такое исправление требует нескольких лишних шагов единообразных вычислений.

Для данной системы одинаковое количество итераций требуется и для метода простой итерации, и для метода Гаусса-Зейделя.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]