Автоматизация решения системы линейных алгебраических уравнений (методы Крамера и Зейделя)

Использование MS Excel для математических расчетов. Описание численных методов решения системы линейных алгебраических уравнений. Решение систем линейных алгебраических уравнений с методами Крамера и Зейделя и с помощью табличного процессора MS Excel.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 14.02.2021
Размер файла 1,6 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Министерство сельского хозяйства РФ

Кафедра информационных технологий и таможенного дела

КУРСОВАЯ РАБОТА

по дисциплине «Информатика» на тему

«Автоматизация решения системы линейных алгебраических уравнений (методы Крамера и Зейделя)»

Оглавление

Введение

1. Описание численных методов решения СЛАУ

1.1 Решение линейных уравнений методом Крамера

1.2 Решение линейных уравнений методом Зейделя

2. Прикладное ПО, применяемое для решения СЛАУ

3. Автоматизация решения СЛАУ

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

3.2 Традиционный способ решения СЛАУ

3.2.1 Решение СЛАУ методом Крамера

3.2.2 Решение СЛАУ методом Зейделя

3.3 Решение СЛАУ с помощью табличного процессора MS Excel

3.3.1 Решение СЛАУ методом Крамера

3.3.2 Решение СЛАУ методом Зейделя

3.4 Решение СЛАУ на VBA

3.4.1 Формализация задачи

3.4.2 Алгоритмизация

3.4.3 Программирование

3.4.4 Отладка программы

Заключение

Список используемых источников

Введение

В наше время, во многих сферах деятельности человека необходимы различные виды вычислений. В сфере инженерии такие задачи представляют сложность при вычислении обычными людьми.

Раньше, до появления компьютера, людям приходилось решать сложные математические уравнения вручную, используя только свои знания. К счастью в наше время больше не приходится вычислять поставленные задачи вручную на бумаге. Большинство задач могут решить Электронные Вычислительные Машины (сокращенно ЭВМ). Простые пользователи обычно используют уже готовые программы, которые способны решать поставленные задачи (например MathCad и Scilab). Электронные Вычислительные Машины способны решать задачи без вмешательства человека, человеку остаётся только вводить исходные данные в программу и получать готовый ответ. Благодаря Электронным Вычислительным машинам и созданным программам, инженерам учёным и другим профессиям, которые связаны с решением сложных математических задач и уравнений, не нужно тратить огромное время на решение этих самых задач.

Цель курсового проектирования включает 2 основных аспекта:

1. Закрепление и углубление теоретических знаний и практических навыков, полученных при изучении курса «Информатика».

2. Приобретение навыков самостоятельного решения инженерных задач с использованием современных информационных технологий.

Задачи курсового проектирования:

1. Изучить предложенные методы решения систем линейных алгебраических уравнений.

2. Реализовать поставленную задачу в двух интегрированных средах:

в табличном процессоре MS Excel;

в среде программирования VBA.

3. Дать сравнительную характеристику полученных результатов и методов решения задачи.

1. Описание численных методов решения СЛАУ

1.1 Решение линейных уравнений методом Крамера

Метод Крамера применяется для решения систем линейных алгебраических уравнений (СЛАУ), в которых число неизвестных переменных равно числу уравнений и определитель основной матрицы отличен от нуля.

Алгебраическим дополнением элемента определителя n-го порядка называется определитель (n-1)-го порядка, полученный из исходного вычеркиванием i-й строки и ј-го столбца и умноженный на .

где:

Мij -- минор элемента aij

Минором Mij, элемента аij определителя n-го порядка называется определитель (n-1)-го порядка, полученный из исходного вычеркиванием i-й строки и ј-го столбца, на пересечении которых находится данный элемент.

Вычисление определителя.

1. Определитель 1-го порядка равен самому элементу.

Например: =2,

2. Определитель 2-го порядка вычисляется по формуле

Например:

3.Определитель 3-го порядка находится путем разложения определителя по элементам строки или столбца.

При этом используется правило:

Определитель равен сумме произведений элементов какой-либо строки или столбца на соответствующие им алгебраические дополнения.

Например, разложение определителя по элементам 1-ой строки будет иметь вид:

Вычисляем искомые неизвестные переменные по формулам

Выполняем проверку результатов, подставляя в исходную СЛАУ. Все уравнения системы должны обратиться в тождества. Можно также вычислить произведение матриц , если в результате получилась матрица, равная B, то решение системы найдено верно. В противном случае в ходе решения была допущена ошибка.

Замечание

Если система линейных алгебраических уравнений однородная, то есть , то она имеет лишь тривиальное решение (при ). Действительно, при нулевых свободных членах все определители , будут равны нулю, так как будут содержать столбец нулевых элементов. Следовательно, формулы

дадут

1.2 Решение линейных уравнений методом Зейделя

Метод Зейделя Зейделя (метод Зейделя, процесс Либмана, метод последовательных замещений) -- является классическим итерационным методом решения системы линейных уравнений. Представляет собой модификацию метода простых итераций. Процесс Зейделя сходится к точному решению СЛАУ быстрее метода простых итераций.

Это численный метод решения системы линейных уравнений вида с заданной точностью .

Рассмотрим применение метода простой итерации для решения системы из трех уравнений с тремя неизвестными. Пусть дана система линейных алгебраических уравнений:

Система (1) приведена к нормальному виду:

Начальное приближение выбираем аналогично методу простых итераций:

В методе Зейделя при вычислении (k+1)-го приближения неизвестного xi (i>0) учитываются уже найденные ранее (k+1)-е приближения неизвестных X1, X2,...., Xi-1.

К моменту нахождения уже найдено , его и нужно использовать при вычислении, а не , как в методе простых итераций. К моменту нахождения х уже найдены , , они и используются вместо , ,

Таким образом, на каждой итерации используется информация, полученная на этой же итерации.

Условие окончания

Условие окончания итерационного процесса Зейделя при достижении точности в упрощённой форме имеет вид:

Более точное условие окончания итерационного процесса имеет вид

и требует больше вычислений. Метод Зейделя хорошо подходит для разреженных матриц.

Неоспоримыми плюсами этого метода являются:

· простая вычислительная процедура

· метод не требуют сложных специальных процедур для экономии памяти ЭВМ под нулевые элементы матрицы коэффициентов, как метод Гаусса;

· самоисправление ошибок

Однако метод Зейделя имеет и недостатки:

· не всегда есть возможность решить систему уравнений (требуется выполнение условий сходимости)

· сходимость итерационных процессов может быть медленной;

· корни системы могут быть определены только приближенно с точностью .

2. Прикладное ПО, применяемое для решения СЛАУ

Для автоматизации решения системных линейных алгебраических уравнений используются многие программы, например: MathCad, Microsoft Excel, C++

Для решения СЛАУ мы будем использовать таблицы Microsoft Excel и VBA.

Microsoft Excel - программа для работы с электронными таблицами, созданная корпорацией Microsoft. Она предоставляет возможности экономико-статистических расчетов, графические инструменты, язык макропрограммирования VBA (Visual Basic for Application). Microsoft Excel входит в состав Microsoft Office и на сегодняшний день Excel является одним из наиболее популярных приложений в мире. Excel был первым табличным процессором, позволявшим пользователю менять внешний вид таблицы на экране: шрифты, символы и внешний вид ячеек. Он также первым представил метод умного пересчёта ячеек - обновления только ячеек, зависящих от изменённых ячеек: раньше табличные процессоры пересчитывали все ячейки; это делалось либо после каждого изменения (что на больших таблицах долго), либо по команде пользователя.

VBA (Visual Basic for Applications) -- это упрощенная версия Visual Basic, встроенная в множество продуктов линейки Microsoft Office. Она позволяет писать программы прямо в файле конкретного документа. Вам не требуется устанавливать различные IDE -- всё, включая отладчик, уже есть в Excel. VBA покрывает и расширяет функциональность ранее использовавшихся специализированных макро-языков. VBA является интерпретируемым языком. Как и следует из его названия, VBA близок к Visual Basic. VBA, будучи языком, построенным на COM, позволяет использовать все доступные в операционной системе COM объекты и компоненты ActiveX. К достоинствам языка можно отнести сравнительную лёгкость освоения, благодаря которой приложения могут создавать даже пользователи, не программирующие профессионально. К особенностям VBA можно отнести выполнение скрипта именно в среде офисных приложений. Недостатком являются проблемы с обратной совместимостью разных версий. Эти проблемы в основном связаны только с тем, что код программы обращается к функциональным возможностям, появившимся в новой версии программного продукта, которые отсутствуют в старой. Также к недостаткам часто относят и слишком высокую открытость кода для случайного изменения, тем не менее, многие программные продукты позволяют пользователю использовать шифрование исходного кода и установку пароля на его просмотр.

3. Автоматизация решения СЛАУ

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

Решить систему линейных алгебраических уравнений 2-мя способами: методом Крамера и методом Зейделя с точностью

3.2 Традиционный способ решения СЛАУ

3.2.1 Решение СЛАУ методом Крамера

Для решения данного линейного уравнения необходимо вычислить определитель.

В случае если определитель матрицы системы отличен от нуля , то по теореме Крамера система совместна и имеет единственное решение. Вычислим вспомогательные определители. Определитель получим из определителя заменой его первого столбца столбцом свободных коэффициентов. Будем иметь:

Аналогично, определитель получается из определителя матрицы системы заменой второго столбца столбцом свободных коэффициентов:

Аналогично, определитель получается из определителя матрицы системы заменой третьего столбца столбцом свободных коэффициентов:

Получаем:

3.2.2 Решение СЛАУ методом Зейделя

1. Проверяем условие сходимости

2. Приводим систему к нормальному виду, т.е. из первого уравнения выражаем х1, из второго х2, из третьего х3.

3. Делим первое уравнение на -3, второе на 2, третье на 3.

4. Выбираем начальное приближение

5. Итерационный процесс

1-я итерация:

Точность 0,01 не достигнута, продолжаем итерационный процесс.

2-я итерация:

Точность 0,01 не достигнута, продолжаем итерационный процесс.

3-я итерация:

Точность 0,01 не достигнута, продолжаем итерационный процесс.

4-я итерация:

Точность 0,01 достигнута, следовательно, результаты 4 итерации являются решениями СЛАУ.

3.3 Решение СЛАУ с помощью табличного процессора MS Excel

3.3.1 Решение СЛАУ методом Крамера

1)В ячейки C7:E9 введём коэффициенты (ai) и в ячейки F7:F9 введём свободные члены системы (bi).

Для вычисления определителя системы линейных алгебраических уравнений в Microsoft Excel используется функция МОПРЕД(массив) категории Математические (где: массив - числовой массив с равным количеством строк и столбцов).

Далее с помощью функции ЕСЛИ проанализируем значение определителя основной матрицы и выведем его с помощью функции МОПРЕД(_), если он не равен нулю.

Введём в ячейку D12 формулу =ЕСЛИ(МОПРЕД(C9:E9)<>0;МОПРЕД(C7:E9);”Используйте другой метод решения СЛАУ”

Далее вводим дополнительные матрицы системы:

Результат:

Вычисляем определители дополнительных матриц системы с помощью функции МОПРЕД()

После чего находим решение системы:

Результат вычислений:

3.3.2 Решение СЛАУ методом Зейделя

В ячейки C7:E9 введём коэффициенты при неизвестных (а1, а2, а3) и в ячейки F7:F9 введём свободные члены bi

В ячейку E1 введём точность , равной 0,01

Результат ввода данных:

После чего проверяем условие сходимости с помощью функции ЕСЛИ. Для первого уравнения в ячейку D12 вводим формулу: =ЕСЛИ(ABS(C7)>=(ABS(D7)+ABS(E7));”Условие выполняется”; ”Условие не выполняется”. Затем копируем формулу в ячейки D13:D14.

Результаты полученных вычислений:

В ячейки C19:E19 вводим формулы, вычисляющие начальные приближения к точному значению x1, x2, x3, в ячейки C20:E20 - итерационные формулы, вычисляющие последовательные приближения к точному значению x1, x2, x3. Затем округляем полученные значения до четырёх знаков после запятой.

Результат вычислений:

Затем в ячейки G20:I20 вводим формулы, вычисляющие критерии окончании итерационного процесса для x1, x2, x3.

В ячейку K20 вводим условие окончания итерационного процесса с помощью функции ЕСЛИ.

Результат вычислений:

Копируем формулы итерационного процесса, критериев и условия окончания итерационного процесса до тех пор, пока критерии E1,E2,E3 не достигнут значения, меньше заданного (E=0,01)

Результаты вычислений:

3.4 Решение СЛАУ на VBA

3.4.1 Формализация задачи

Метод Зейделя

Входные данные

а - вещественная, коэффициенты исходной матрицы при неизвестных

b - вещественная, свободные коэффициенты матрицы

n - вещественная, количество строк и столбцов матрицы

Промежуточные данные

i - целая, количество строк массива

j - целая, количество столбцов массива

Выходные данные

i - вещественная, результат вычислений

k - вещественная, число итераций

Математическая модель

Известно, что каждая итерация проходит по системе уравнений:

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

Входные данные

n - вещественная, количество строк и столбцов матрицы

a - вещественная, коэффициенты матрицы

b - вещественная, свободные коэффициенты матрицы

Промежуточные данные

i - целая, количество строк массива

j - целая, количество столбцов массива

Выходные данные

x - вещественная, результат вычислений

Математическая модель

Известно, что x находится по формуле: x3 = detk/det.

3.4.2 Алгоритмизация

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

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Метод Зейделя

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

3.4.3 Программирование

Таблица 3

Свойства элементов формы

Элемент

Свойства

Значение

Форма

Caption

Программа решения СЛАУ

CommandButton1

Name

РМК

Caption

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

CommandButton2

Name

РМЗ

Caption

Метод Зейделя

Таблица 4

Текст программы

General

Function f(a() As Double, b() As Double) As Variant

f = WorksheetFunction.MDeterm(a())

End Function

РМК_Click()

Private Sub РМК_Click()

n = Val(InputBox("Введите количество строк массива "))

ReDim a(1 To n, 1 To n), c(n, n), b(n, 1)

Range("A1:jj100").Clear

For i = 1 To n

For j = 1 To n

a(i, j) = Val(InputBox("A(" + Str(i) + "," + Str(j) + "=)", "Ввод элементов массива"))

Cells(i, j) = a(i, j)

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

Next j

Next i

Range("A100:B100").Clear

For i = 1 To n

b(i, 1) = Val(InputBox("B(" + Str(i) + "=)", "Ввод элементов массива"))

Cells(i, 1 + n) = b(i, 1)

Next i

det=(WorksheetFunction.MDeterm(WorksheetFunction.MDeterm(a())))

Cells(i + 2, 1) = "det="

Cells(i + 2, 2) = det

If det = 0 Then

Z = MsgBox("Определитель не может равняться нулю", vbInformation, "Ошибка")

End

End If

If det <> 0 Then

For k = 1 To n

For i = 1 To n

For j = 1 To n

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

Next j

a(i, k) = b(i, 1)

Next i

detk=(WorksheetFunction.MDeterm(WorksheetFunction.MDeterm(a())))

xk = detk / det

Cells(i + 4, 1) = "x1="

Cells(i + 5, 1) = "x2="

Cells(i + 6, 1) = "x3="

Cells(k + 7, 2) = xk

Next k

End If

End Sub

РМЗ_Click()

Private Sub РМЗ_Click()

Range("A1:L100").Clear

eps = 0.01

n = Val(InputBox("Введите количество строк массива"))

ReDim a(n, n), b(n), bt(n), at(n, n), x0(n), x(n)

For i = 1 To n

For j = 1 To n

a(i, j) = Val(InputBox("a(" + Str(i) + "," + Str(j) + ")=", "Ввод элементов массива"))

Next j

Next i

For i = 1 To n

b(i) = Val(InputBox("b(" + Str(i) + ")=", "Ввод элементов массива"))

Next i

For i = 1 To n

S = 0

For j = 1 To n

If j <> i Then

S = S + Abs(a(i, j))

End If

If S > Abs(a(i, i)) Then

no = MsgBox("СЛАУ не сходится. Для начала преобразуйте её.", vbCritical, "Ошибка")

End

End If

Next j

Next i

For i = 1 To n

For j = 1 To n

Cells(i, j) = a(i, j)

Cells(i, 5) = b(i)

Next j

Next i

For i = 1 To n

bt(i) = b(i) / a(i, i)

x0(i) = bt(i)

For j = 1 To n

If i = j Then

at(i, j) = 0

Else

at(i, j) = -a(i, j) / a(i, i)

End If

Next j

Next i

k = 0

Do

e = 0

Max = 0

k = k + 1

For i = 1 To n

S = 0

For j = 1 To n

S = S + at(i, j) * x0(j)

Next j

x(i) = x0(i)

x0(i) = bt(i) + S

Next i

For i = 1 To n

e = Abs(x(i) - x0(i))

If e > Max Then

Max = e

End If

Next i

Cells(12, 1) = ("x1=")

Cells(13, 1) = ("x2=")

Cells(14, 1) = ("x3=")

Loop While Max > eps

For i = 1 To n

Cells(i + 11, 2) = x0(i)

Next i

Cells(22, 1) = "ЧЧисло итераций"

Cells(23, 1) = k

End Sub

3.4.4 Отладка программы

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

Результат:

Метод Зейделя

Результат:

Заключение

В нынешнее время на производстве считается не актуальным решение Систем Линейных Алгебраических Уравнений вручную, ведь у нас есть возможность упрощения решения этих уравнений. В этом людям помогают множество программ и инструментов такие как MathCad и Scilab, которые в разы ускоряют решение Систем Линейных Алгебраических Уравнений уравнений и сводят решение этих уравнений к вводу исходных данных и получению ответа. Так, для упрощения обработки Систем Линейных Алгебраических Уравнений используют табличный процессор MS Excel и среду программирования VBA, которые в значительной степени упрощают решение СЛАУ.

Цель исследования: Закрепление и углубление теоретических знаний и практических навыков, полученных при изучении курса «Информатика»; а так же приобретение навыков самостоятельного решения инженерных задач с использованием современных информационных технологий.

В ходе курсового проектирования были изучены две среды MS Excel и VBA, в которых было реализовано решение систем линейных алгебраических уравнений.

Задачами написания курсовой послужили: изучение предложенных методов решения систем линейных алгебраических уравнений; реализация поставленной задачи в двух интегрированных средах:

· В табличном процессоре MS Excel;

· В среде программирования VBA.

Подводя итог данной работы можно сделать вывод о том, что табличный процессор MS Excel и среда программирования VBA являются одними из довольно часто-используемых программ на производстве для проведения математических расчетов и решения Систем Линейных Алгебраических Уравнений. Однако данные программы не всегда дают точный результат, тем самым создавая проблемы и опасность возникновения аварийных ситуаций на производстве.

Список используемых источников

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

1. Метод Крамера для решения систем уравнений: определение, теоремы и примеры решения задач, [Электронный ресурс]: метод Крамера. Режим доступа: http://www.webmath.ru/poleznoe/formules_5_4.php, свободный. Загл. с экрана. Яз. рус.

2. Метод Крамера - Википедия, [Электронный ресурс]: метод крамера. Режим доступа: https://ru.wikipedia.org/wiki/Метод_Крамера#Литература, свободный. Загл. с экрана. Яз. рус

3. Метод Гаусса-Зейделя для решения системы линейных уравнений - Википедия, [Электронный ресурс]: метод гаусса-зейделя. Режим доступа: https://ru.wikipedia.org/wiki/Метод_Гаусса_--_Зейделя_решения_системы_линейных_уравнений, свободный. Загл. с экрана. Яз. рус

4. Метод Гаусса-Зейделя решения системы линейных уравнений: определение, теоремы и примеры решения задач, [Электронный ресурс]: метод Зейделя. Режим доступа: https://studbooks.net/2247200/informatika/metod_zeydelya, свободный. Загл. С экрана. Яз. рус

Размещено на Allbest.ru


Подобные документы

  • Изучение систем линейных алгебраических уравнений (СЛАУ) с использованием табличного процессора MS Excel 2007. Пример решения системы линейных алгебраических уравнений методом Крамера. Прикладное программное обеспечение, применяемое для решения СЛАУ.

    курсовая работа [184,5 K], добавлен 20.11.2013

  • Метод Гаусса-Зейделя как модификация метода Якоби, его сущность и применение. Разработка программы решения системы линейных алгебраических уравнений на языке VB, проверка правильности работы программы в MS Excel и математических пакетах MathCad и MatLab.

    курсовая работа [325,5 K], добавлен 27.10.2013

  • Требования к языкам программирования, их эффективность, лаконичность, ясность, реальные возможности. Создание языка С#. Применение систем линейных алгебраических уравнений для практических задач, сущность и особенности метода Крамера для их решения.

    курсовая работа [118,1 K], добавлен 13.11.2009

  • Рассмотрение двух способов решения систем линейных алгебраических уравнений: точечные и приближенные. Использование при программировании метода Гаусса с выбором главного элемента в матрице и принципа Зейделя. Применение простой итерации решения уравнения.

    курсовая работа [879,8 K], добавлен 05.06.2012

  • Использование метода Зейделя для нахождения корней системы линейных алгебраических уравнений. Суть метода простых итераций. Оценка погрешности нормальной системы. Составление алгоритма, блок-схемы и кода программы. Тестовый пример и проверка в MathCad.

    лабораторная работа [174,8 K], добавлен 02.10.2013

  • Общее понятие о линейных уравнениях и их системах. Разработка программного продукта в среде Delphi 7 для решения методом Крамера квадратных систем линейных алгебраических уравнений с ненулевым определителем основной матрицы. Описание конкретных примеров.

    курсовая работа [193,7 K], добавлен 07.07.2013

  • Системы линейных алгебраических уравнений. Код программы для решения систем линейных алгебраических уравнений. Математические и алгоритмические основы решения задачи методом Гаусса. Программная реализация решения. Алгоритмы запоминания коэффициентов.

    лабораторная работа [23,5 K], добавлен 23.09.2014

  • Этапы развития языков программирования. Способы решения системы линейных алгебраических уравнений методом Крамера, рассмотрение особенностей. Анализ языка программирования С++. С # как прямой потомок двух самых успешных в мире компьютерных языков.

    курсовая работа [770,2 K], добавлен 27.01.2013

  • Методы решения систем линейных алгебраических уравнений. Метод простых итераций и метод Зейделя. разработка программы для решения СЛАУ с произвольным количеством уравнений. Реализация методов Зейделя и простых итераций для получения вектора решений СЛАУ.

    курсовая работа [25,0 K], добавлен 20.11.2008

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

    курсовая работа [939,4 K], добавлен 16.01.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.