Метод обратной матрицы
Расчетная формула метода обратной матрицы следующая:
-обратная
матрица, которую мы находим используя
стандартную математическую функцию
B-вектор свободных членов.
Выделяется область равной размеру исходной матрицы. Включается функция МОБР и в качестве аргумента выделяется исходная матрица.
=МОБР(A2:D5)
-1,87012 |
0,442243 |
-0,2513 |
0,060311 |
-0,10513 |
-0,72764 |
0,302049 |
-0,07249 |
-0,20347 |
-0,09592 |
-1,13396 |
0,272149 |
-0,00363 |
0,434195 |
1,194656 |
-1,28672 |
Выделяется область равной размеру вектора свободных коэффициентов. Функция МУМНОЖ 1. Обратная матрица, 2. Вектор свободных коэффициентов
=МУМНОЖ(A8:D11;G2:G5)
Метод Гаусса
Метод Гаусса заключается:
Приведении матрицы коэффициентов А к треугольному виду
Нахождение неизвестных начиная с последнего уравнения.
Программа метода Гаусса:
OptionBase 1
SubМетод_Гаусса()
n = Val(InputBox("Введите число уравнений", "Исходные данные"))
Dim a(4, 4)
i1 = 2
For i = 1 To 4
For j = 1 To 4
a(i, j) = Worksheets("Слау").Cells(i1, j).Value
Next j
i1 = i1 + 1
Next i
Dim b(4)
i1 = 2
For i = 1 To 4
b(i) = Worksheets("Слау").Cells(i1, 7).Value
i1 = i1 + 1
Next i
Dim x(4)
For k = 1 To n - 1
For i = k + 1 To n
c = a(i, k) / a(k, k)
a(i, k) = 0
For j = k + 1 To n
a(i, j) = a(i, j) - c * a(k, j)
Next j
b(i) = b(i) - c * 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
j1 = 10
For j = 1 To 4
Worksheets("Слау").Cells(4, j1).Value = x(j)
j1 = j1 + 1
Next j
End Sub
Приближенные (итерационные) методы
Метод простой итерации
Расчетная формула:
Для данного метода важно выполнение условия сходимости, которое утверждает что модули диагонали элемента > или = сумме не диагональных элементов
Это условие является достаточным, но не необходимом, т.е. иногда при не выполнении этого условия решение может быть получено.
Программа метода простой итерации:
SubПрост_итер()
k = Val(InputBox("Введите число уравнений", "Исходные данные"))
Dim a(4, 4)
i1 = 2
For i = 1 To 4
For j = 1 To 4
a(i, j) = Worksheets("Слау").Cells(i1, j).Value
Next j
i1 = i1 + 1
Next i
Dim b(4)
i1 = 2
For i = 1 To 4
b(i) = Worksheets("Слау").Cells(i1, 7).Value
i1 = i1 + 1
Next i
e = 0.001
n = 0
x10 = 0
x20 = 0
x30 = 0
x40 = 0
Do
x1 = (b(1) - a(1, 2) * x20 - a(1, 3) * x30 - a(1, 4) * x40) / a(1, 1)
x2 = (b(2) - a(2, 1) * x10 - a(2, 3) * x30 - a(2, 4) * x40) / a(2, 2)
x3 = (b(3) - a(3, 1) * x10 - a(3, 2) * x20 - a(3, 4) * x40) / a(3, 3)
x4 = (b(4) - a(4, 1) * x10 - a(4, 2) * x20 - a(4, 3) * x30) / a(4, 4)
c = Abs(x1 - x10) + Abs(x2 - x20) + Abs(x3 - x30) + Abs(x4 - x40)
x10 = x1
x20 = x2
x30 = x3
x40 = x4
n = n + 1
Loop While c > e
Worksheets("Слау").Range("J5").Value = x1
Worksheets("Слау").Range("K5").Value = x2
Worksheets("Слау").Range("L5").Value = x3
Worksheets("Слау").Range("M5").Value = x4
Worksheets("Слау").Range("n5").Value = n
EndSub
