Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otchet1_1__1.docx
Скачиваний:
10
Добавлен:
23.03.2016
Размер:
973.49 Кб
Скачать

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

Метод обратной матрицы 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

Чтобы решить систему и найти неизвестные, надо:

  1. Выделить область "приемник" равный размеру исходной матрицы

  2. Мастер ф. - Математическая - МОБР

  3. В диалоговое окно ввести исходную матрицу - нажать ОК

  4. Не снимая выделения, поставить курсор в строку формул и нажать три клавиши:CTRL+Shift+Enter

  5. Для нахождения неизв. в таблице выделить область "приемник" равный размеру вектора свободных коэфф.

  6. Мастер ф. - Матем. - МУМНОЖ

1 массив: обратная матрица

2 массив: вектор свободных коэфф-тов

  1. Курсор в строку формул - нажатие трех клавиш.

А=

В=

-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.

  1. Откроем свой пользовательский файл в табл. процессоре ЕХСЕL.

  2. Для отделения корней получим таблицу значений аргумента и функции на интервале [-3;3].Для этого в ячейку А1 на Листе1 введем х=, в B1 введем f(x)=.

  3. В ячейку А2 введем -3,далее выполним команды меню Правка - Заполнить - Прогрессия. В появившемся диалоговом окне Прогрессия укажем расположение по столбцам, тип - арифметический, шаг, равный 1, предельное значение равное 3.

x

fn1

-3

#ЧИСЛО!

-2

#ЧИСЛО!

-1

-3

0

-0,522878745

1

1,698970004

2

3,84509804

3

5,954242509

Реализацияв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

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