Метод Гаусса для расчета электрических цепей

2





Содержание



Введение

Метод Гаусса

Метод Гаусса с выбором ведущего элемента по столбцу

Описание программы

Руководство пользователя к программе

Заключение

Список литературы

Приложение А




Введение



Целью настоящей работы является по определенной электрической схеме нужно составить систему уравнений при помощи законов Кирхгофа. А также создать приложение для решения данной системы методом Гаусса с выбором ведущего элемента по строке. Известные значения сопротивлений нагрузок (R) и ЭДС источников должны вводятся из файла, и отображаться в главном окне приложения. Результаты расчета выводиться на экран. В одном из окон приложения должна отображаться данная электрическая схема.


Метод Гаусса



Метод Гаусса - один из самых распространенных методов решения систем линейных алгебраических уравнений. Этот метод (который называют также метолом последовательного исключения неизвестных) известен в различных вариантах уже более 2000 лет.

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



Метод Гаусса с выбором ведущего элемента по столбцу



Описание метода. На k-м шаге прямого хода коэффициенты уравнений системы с номерами i= k+1, …,m преобразуется по формулам (1.1)



 (1.1)



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

В методе Гаусса с выбором главного элемента по столбцу гарантируется что  для всех k = 1, 2, …, m-1 и i= k+1, …,m.

Отличие этого метода Гаусса от схемы единственного деления заключается в том, что на k-м шаге исключения в качества главного элемента выбирают максимальный по модулю коэффициент  при неизвестной  в уравнениях с номерами i=k, k+1, …,m. Затем соответствующее выбранному коэффициенту уравнение с номером  меняют местами с k-м уравнением системы для того, что бы главный элемент занял место коэффициента .

После этой перестановки исключение неизвестного  производят, как в схеме единственного деления.



Блок-схема Гаусса с выбором ведущего элемента по столбцу








Описание программы



При запуске программы появляется окно заставки frmSplash (рисунок 2.1).





Рисунок 2.1



При нажатии кнопки "ОК" открывается форма изображенная на рисунке 2.2 Открытие файла для введения необходимых данных и вывода системы уравнений на элемент FlexGrid, осуществляется при помощи нажатие кнопки "Ввести данные" или вызовом меню Файл > Открыть файл, либо с помощью нажатия комбинации клавиш "Ctrl+A". Далее при нажатий кнопки "Вычислить или вызовом меню Файл > Вычислить выводятся результаты расчетов на элемент TextBox. Значения сопротивлений и ЭДС вводится из файла, ранее вызванного при помощи меню.





Рисунок 2.2



Таблица 2.1 Функции выполняемые пунктами меню

Заголовок

Имя

Действие

Файл

mnFile



--открыть файл

mnOpen

Открывает файл

--сохранить файл

mnSave

Сохраняет файл

--Вычисить

mnGauss

Нахождение неизвестных значений

--Выход

mnExit

Завершение работы приложения

Электрическая схема

mnES

Открываем форму Form2

О программа

mnAbout

Открывает форму frmSplash



Это меню создается с помощью мастера MenuEditor, который вызывается из меню Tools, либо с помощью нажатия на клавиатуре Ctrl+E (рисунок 2.3).





Рисунок 2.3



Электрическая схема показана на "Form2". эту форму со схемой можно вызвать при помощи вызовом меню "Электрическая схема" (рисунок 2.4).





Рисунок 2.4.



В форме "О программе" приведенной на рисунке 2.5 дано краткое описание программы.





Рисунок 2.5



Руководство пользователя к программе



Запускаем исполняемый файл “ Расчет токов разветвленной цепи. exe" или открываем файл “ Проект1" и запускаем (F5). В появившемся окне выведено окно заставки. По нажатию кнопки “ok, открывается главная форма.

С помощью текстового меню открываем файл, который осуществляется при помощи нажатие кнопки "Ввести данные" или сопровождается вызовом меню Файл > Открыть файл, либо с помощью нажатия на клавиатуре Ctrl+А, создается текстовый документ, куда вводятся в одну строчку значения сопротивлений нагрузок, в следующую строчку значения ЭДС источников через пробел, а также выводится исходная система уравнений в виде таблице на элемент FlexGrid

При нажатии на кнопку “Вычислить” или вызовом меню Файл > Вычислить происходить реализация программного кода, включающего в себя метод Гаусса с выбором ведущего элемента по строке, результаты расчетов токов выводятся на элемент TextBox.

Можно просмотреть данную электрическую схему через вызов меню "Электрическая схема".

Также в программе реализована функция сохранения результатов, которая осуществляется вызовом меню Файл > сохранить файл. При нажатие кнопки "выход" закрывается данное приложение.


Заключение



В результате данной курсовой работы были рассчитаны токи разветвленной цепи при помощи законов Кирхгофа. Система линейных уравнений была решена методом Гаусса с выбором ведущего элемента по строке и выведена на элемент FlexGrid. Результаты расчета выведены на элемент TextBox.

Данная программа может использоваться при анализе конкретной электрической цепи в электротехники.


Список литературы



Амосов, А.А. Вычислительные методы для инженеров: учеб. пособие / А.А. Амосов, Ю.А. Дубинский, Н.А. Копченова; под общ. ред. - М.: Высш. шк., 1994. - 544 с.: ил

ГОСТ 2.105 - 95. Общие требования к текстовым документам. Дата введения 1996-07-01. Взамен ГОСТ 2.105-79, ГОСТ 2.906-71

ГОСТ 19.701-90 схемы алгоритмов программ, данных и систем. Дата введения 1992-01-01. Взамен ГОСТ 19.002-80

Нейман Ю.М., Хлебников В.А. Введение в теорию моделирования и параметризации педагогических тестов. М.: Адепт, 2000.168 с.

Гайдамакин Н.А. Автоматизированные информационные системы, базы и банки данных. Москва: Гелиос АРВ, 2002.225 с.

Хомоненко А.Д. Базы данных. СП: Корона принт, 2000.637 с.

Письменный Д.Т. Конспект лекций по высшей математике. М.: Айрис-пресс, 2005. - 228 с.: ил.


Приложение А



Dim a (6,6) As Double

Dim X (6) As Double

Dim rr (4) As Double

Dim e (5) As Double

Private Sub Command1_Click ()

Call Gauss

End Sub

Private Sub Command2_Click ()

Call Vectidan

End Sub

Private Sub mnES_Click ()

Form2. Show

End Sub

Private Sub mnGauss_Click ()

Call Gauss

End Sub

Private Sub mnOpen_Click ()

Call Vectidan

End Sub

Private Sub mnSave_Click ()

Dim sfilename As String, sdark As String

Dim stext As String

'вводим диалог сохранения файла

CommonDialog1. FileName = ""

CommonDialog1. ShowSave

If CommonDialog1. FileName <> "" Then

sfilename = CommonDialog1. FileName

'открываем диалог на запись

Open sfilename For Output As #2

Print #2, Text1. Text + " "

Print #2, Text2. Text + " "

Print #2, Text3. Text + " "

Print #2, Text4. Text + " "

Print #2, Text5. Text + " "

Print #2, Text6. Text + " "

Close #2

End If

End Sub

Sub Vectidan ()

Dim sfilename As String, sdark As String

Dim stext As String

'ввод диалога открытия файла

CommonDialog1. FileName = ""

CommonDialog1. ShowOpen

If CommonDialog1. FileName <> "" Then

sfilename = CommonDialog1. FileName

'открываем файл на чтение

Open sfilename For Input As #1

stext = ""

'читаем текст

Input #1, stext

t = Split (stext, " ")

For i = 1 To 4

rr (i) = t (i - 1)

Next i

Input #1, stext

t = Split (stext, " ")

For i = 1 To 5

e (i) = t (i - 1)

Next i

n = 6

m = 7

Call dann

'устанавливаем число строк и слобцов

MSFlexGrid1. Rows = n + 1

MSFlexGrid1. Cols = m + 1

MSFlexGrid1. ColWidth (0) = 300

'вывод нуемерации столбцов

MSFlexGrid1. Row = 0

For i = 1 To m

MSFlexGrid1. Col = i

MSFlexGrid1. Text = Str (i)

MSFlexGrid1. ColWidth (i) = 400

Next i

'вывод нуемерации строк

MSFlexGrid1. Col = 0

For i = 1 To n

MSFlexGrid1. Row = i

MSFlexGrid1. Text = Str (i)

Next i

'устанавливаем адрес ячейки для вывода

For i = 1 To n

For j = 1 To m - 1

MSFlexGrid1. Row = i

MSFlexGrid1. Col = j

MSFlexGrid1. Text = CStr (a (i, j))

Next j

MSFlexGrid1. Row = i

MSFlexGrid1. Col = j

MSFlexGrid1. Text = CStr (X (i))

Next i

MSFlexGrid1. Row = 4

MSFlexGrid1. Col = 1

MSFlexGrid1. CellForeColor = vbRed

MSFlexGrid1. Row = 5

MSFlexGrid1. Col = 5

MSFlexGrid1. CellForeColor = vbRed

MSFlexGrid1. Row = 6

MSFlexGrid1. Col = 5

MSFlexGrid1. CellForeColor = vbRed

MSFlexGrid1. Row = 6

MSFlexGrid1. Col = 6

MSFlexGrid1. CellForeColor = vbRed

MSFlexGrid1. Row = 6

MSFlexGrid1. Col = 7

MSFlexGrid1. CellForeColor = vbGreen

MSFlexGrid1. Row = 5

MSFlexGrid1. Col = 7

MSFlexGrid1. CellForeColor = vbGreen

MSFlexGrid1. Row = 4

MSFlexGrid1. Col = 7

MSFlexGrid1. CellForeColor = vbGreen

'закрываем файл

Close #1

End If

End Sub

Sub Gauss ()

Dim i, j, k, r As Double

Call dann

n = 6

' метод

'поиск главного элемента в i-том столбце

For i = 1 To n

k = i

r = Abs (a (i, i))

For j = i + 1 To n

If Abs (a (j, i)) > r Then

k = j

r = a (j, i)

End If

Next j

If r = 0 Then Exit For

If k <> i Then

'перестоновка

r = X (k)

X (k) = X (i)

X (i) = r

For j = 1 To n

r = a (k, j)

a (k, j) = a (i, j)

a (i, j) = r

Next j

End If

'исключение i-ого неизвестного

r = a (i, i)

X (i) = X (i) / r

For j = 1 To n

a (i, j) = a (i, j) / r

Next j

For k = i + 1 To n

r = a (k, i)

X (k) = X (k) - r * X (i)

For j = 1 To n

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

Next j

Next k

Next i

'обратный ход

For i = n - 1 To 1 Step - 1

For j = i + 1 To n

X (i) = X (i) - a (i, j) * X (j)

Next j

Next i

Text1. Text = Format (X (1), "0.000") & " A"

Text2. Text = Format (X (2), "0.000") & " A"

Text3. Text = Format (X (3), "0.000") & " A"

Text4. Text = Format (X (4), "0.000") & " A"

Text5. Text = Format (X (5), "0.000") & " A"

Text6. Text = Format (X (6), "0.000") & " A"

End Sub

Private Sub mnAbout_Click ()

frmAbout. Show

End Sub

Private Sub mnExit_Click ()

End

End Sub

Private Sub dann ()

n = 6

m = 7

a (1,1) = - 1

a (1,2) = 1

a (1,3) = 1

a (1,4) = 0

a (1,5) = 0

a (1,6) = 0

a (2,1) = 0

a (2,2) = 0

a (2,3) = - 1

a (2,4) = - 1

a (2,5) = 0

a (2,6) = 0

a (3,1) = 0

a (3,2) = 1

a (3,3) = 0

a (3,4) = 0

a (3,5) = 1

a (3,6) = 1

a (4,1) = rr (1)

a (4,2) = 0

a (4,3) = 0

a (4,4) = 0

a (4,5) = 0

a (4,6) = 0

a (5,1) = 0

a (5,2) = 0

a (5,3) = 0

a (5,4) = 0

a (5,5) = rr (2)

a (5,6) = 0

a (6,1) = 0

a (6,2) = 0

a (6,3) = 0

a (6,4) = 0

a (6,5) = rr (2)

a (6,6) = - rr (4) - rr (3)

X (1) = 0

X (2) = 0

X (3) = 0

X (4) = e (2) - e (3)

X (5) = e (1)

X (6) = e (1) + e (4) - e (5)

End Sub