- •Алгебраические трансцендентные уравнения
- •Системы линейных алгебраических уравнений.
- •Реализация в Visual Basic
- •Численное решение обыкновенных дифференциальных уравнений
- •1.Метод прямоугольников
- •2. Метод трапеции
- •3. Метод параболы
- •Оду. Численные методы решения обыкновенных уравнений
- •1.Метод Эйлера
- •2.Метод Рунге-Кутта
Системы линейных алгебраических уравнений.
Метод обратной матрицы EXCEL
На рабочем листе СЛАУ ввести исходные данные. В блок А1:D4 матрицу коэфф. перед неизвестными. В блок F1:F4 – вектор коэфф. свободных членов
Реализация в Visual Basic
|
обр.мат |
Крамер |
Гаусс |
Пр.итер. |
Г.-З. |
х1 |
1,5294582 |
1,5294582 |
1,5294582 |
1,529491505 |
1,5294177 |
х2 |
-0,028177 |
-0,028177 |
-0,028177 |
-0,028558183 |
-0,028343 |
х3 |
0,9761103 |
0,9761103 |
0,9761103 |
0,976598092 |
0,9762629 |
х4 |
1,7577828 |
1,7577828 |
1,7577828 |
1,757363732 |
1,7576652 |
N |
|
|
|
11 |
9 |
Чтобы решить систему и найти неизвестные, надо:
Выделить область "приемник" равный размеру исходной матрицы
Мастер ф. - Математическая - МОБР
В диалоговое окно ввести исходную матрицу - нажать ОК
Не снимая выделения, поставить курсор в строку формул и нажать три клавиши:CTRL+Shift+Enter
Для нахождения неизв. в таблице выделить область "приемник" равный размеру вектора свободных коэфф.
Мастер ф. - Матем. - МУМНОЖ
1 массив: обратная матрица
2 массив: вектор свободных коэфф-тов
Курсор в строку формул - нажатие трех клавиш.
А= |
|
|
|
|
|
|
В= |
|
|
-1 |
0,34 |
0,23 |
-0,06 |
|
|
|
-1,42 |
|
|
0,11 |
-1,23 |
-0,18 |
0,36 |
|
|
|
0,66 |
|
|
0,23 |
-0,12 |
-0,84 |
-0,35 |
= |
0,518883 |
|
-1,08 |
|
|
0,12 |
0,12 |
-0,47 |
-0,82 |
|
|
|
-1,72 |
|
|
|
|
|
|
|
|
|
|
|
|
|
А(обратная)= |
|
|
| |||
|
-1,0850704 |
-0,2631381 |
-0,2896836 |
0,08751677 |
| ||
|
-0,0552282 |
-0,944613 |
0,54793044 |
-0,6445398 |
| ||
|
-0,2886082 |
0,17937749 |
-1,7917167 |
0,86462588 |
| ||
|
-0,0014512 |
-0,279558 |
1,06475178 |
-1,796606 |
|
Метод Крамера
Ниже исходной матрицы сделать ее копии ( по количеству уравнений в системе). В копиях заменить i-е столбцы на вектор св. коэфф. У исходной матрицы и новых матриц найти определители: Мастер функций - математич.- МОПРЕД. Затем в таблице рассчитать неизв. при помощи формулы x=∆i/∆
Дельта1= |
|
|
|
|
| |
-1,42 |
0,34 |
0,23 |
-0,06 |
|
|
|
0,66 |
-1,23 |
-0,18 |
0,36 |
= |
0,79361 |
|
-1,08 |
-0,12 |
-0,84 |
-0,35 |
|
|
|
-1,72 |
0,12 |
-0,47 |
-0,82 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Дельта2= |
|
|
|
|
| |
-1 |
-1,42 |
0,23 |
-0,06 |
|
|
|
0,11 |
0,66 |
-0,18 |
0,36 |
= |
-0,01462 |
|
0,23 |
-1,08 |
-0,84 |
-0,35 |
|
|
|
0,12 |
-1,72 |
-0,47 |
-0,82 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Дельта3= |
|
|
|
|
| |
-1 |
0,34 |
-1,42 |
-0,06 |
|
|
|
0,11 |
-1,23 |
0,66 |
0,36 |
= |
0,506487 |
|
0,23 |
-0,12 |
-1,08 |
-0,35 |
|
|
|
0,12 |
0,12 |
-1,72 |
-0,82 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Дельта4= |
|
|
|
|
| |
-1 |
0,34 |
0,23 |
-1,42 |
|
|
|
0,11 |
-1,23 |
-0,18 |
0,66 |
= |
0,912084 |
|
0,23 |
-0,12 |
-0,84 |
-1,08 |
|
|
|
0,12 |
0,12 |
-0,47 |
-1,72 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Метод простой итерации СЛАУ
Реализация в EXCEL.
Откроем свой пользовательский файл в табл. процессоре ЕХСЕL.
Для отделения корней получим таблицу значений аргумента и функции на интервале [-3;3].Для этого в ячейку А1 на Листе1 введем х=, в B1 введем f(x)=.
В ячейку А2 введем -3,далее выполним команды меню Правка - Заполнить - Прогрессия. В появившемся диалоговом окне Прогрессия укажем расположение по столбцам, тип - арифметический, шаг, равный 1, предельное значение равное 3.
|
|
РеализациявVisual Basiс
Sub iteration()
n = 0: E = 0.001
Dim a(1 To 4, 1 To 4) As Variant
I1 = 2
For i = 1 To 4
J1 = 2
For j = 1 To 4
a(i, j) = Worksheets("СЛАУ").Cells(I1, J1).Value
J1 = J1 + 1
Next j
I1 = I1 + 1
Next i
Dim b(1 To 4) As Variant
I1 = 2
For i = 1 To 4
b(i) = Worksheets("СЛАУ").Cells(I1, 9).Value
I1 = I1 + 1
Next i
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("P9").Value = x1
Worksheets("СЛАУ").Range("P10").Value = x2
Worksheets("СЛАУ").Range("P11").Value = x3
Worksheets("СЛАУ").Range("P12").Value = x4
Worksheets("СЛАУ").Range("P13").Value = n
End Sub
Метод Гаусса
Обозначим n - кол-во уравнений;
Массивы : а(n,n) - коэфф. системы ; b(n) - свободные члены ( правая часть уравнений ) ; х(n) - решение системы .
Sub Gauss()
Dim n As Integer
Dim a(1 To 4, 1 To 4) As Variant
Dim b(1 To 4) As Variant
Dim x(1 To 4) As Variant
n = Val(InputBox("Введите число уравнений", "Исходные данные"))
For i = 1 To n
For j = 1 To n
a(i, j) = Worksheets("СЛАУ").Cells(i, j).Value
Next j
Next i
For i = 1 To n
b(i) = Worksheets("СЛАУ").Cells(i, 8).Value
Next i
For k = 1 To n - 1
For i = k + 1 To n
c = a(i, k) / a(k, k)
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
For i = 1 To n
Worksheets("СЛАУ").Cells(7 + i, 14).Value = x(i)
Next i
End Sub
Проверка:
Запишем систему в виде расширенной матрицы:
Умножим 1-ую строку на (0.11). Добавим 2-ую строку к 1-ой:
Умножим 2-ую строку на (-2.090909090909). Добавим 3-ую строку к 2-ой:
Умножим 3-ую строку на (-0.521739130434). Добавим 4-ую строку к 3-ой:
Умножим 1-ую строку на (2.048302574618). Добавим 2-ую строку к 1-ой:
Умножим 2-ую строку на (0.023407651013). Добавим 3-ую строку к 2-ой:
Умножим 1-ую строку на (-0.054569237609). Добавим 2-ую строку к 1-ой:
Теперь исходную систему можно записать как:
x4= -1.136176133428/(-0.64)
x3= [-1.214104560623 - ( - 0.66x4)]/(-0.0426)
x2= [-1.156521739132 - ( - 0.0317x3- 0.64x4)]/(-0.0574)
x1= [-1.72 - ( - 0.12x2- 0.47x3- 0.82x4)]/0.12
Из 1-ой строки выражаем x4
Из 2-ой строки выражаем x3
Из 3-ой строки выражаем x2
Из 4-ой строки выражаем x1
Метод Гаусса-Зейделя
n - Количество уравнений; Е - точность; a (n,n)- массив коэфф. . b(n) - массив свободных членов; x(n) - массив решение.
Рассмотрим погрешности. Погрешность метода Е задается. Погрешность вычислений не накапливается, так как в формулах присутствуют величины из исходных уравнений . Недостатком метода по сравнению с прямыми методами является наличие итераций . Иногда количество итераций может быть значительным , поэтому требуется больше времени для решения итерационными методами .
Часто поступает следующим образом . Производят решение методом Гаусса. Если полученная точность не удовлетворяет , то применяют метод Г-З , где за начальное приближение принимают решение , полученное методом Гаусса. Это может значительно уменьшить время вычислений.
Sub g_z()
n = 0: E = 0.001
Dim a(1 To 4, 1 To 4) As Variant
I1 = 2
For i = 1 To 4
J1 = 2
For j = 1 To 4
a(i, j) = Worksheets("СЛАУ").Cells(I1, J1).Value
J1 = J1 + 1
Next j
I1 = I1 + 1
Next i
Dim b(1 To 4) As Variant
I1 = 2
For i = 1 To 4
b(i) = Worksheets("СЛАУ").Cells(I1, 9).Value
I1 = I1 + 1
Next i
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) * x1 - a(2, 3) * x30 - a(2, 4) * x40) / a(2, 2)
x3 = (b(3) - a(3, 1) * x1 - a(3, 2) * x2 - a(3, 4) * x40) / a(3, 3)
x4 = (b(4) - a(4, 1) * x1 - a(4, 2) * x2 - a(4, 3) * x3) / 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("Q9").Value = x1
Worksheets("СЛАУ").Range("Q10").Value = x2
Worksheets("СЛАУ").Range("Q11").Value = x3
Worksheets("СЛАУ").Range("Q12").Value = x4
Worksheets("СЛАУ").Range("Q13").Value = n
End Sub