Содержание
Метод Гаусса с выбором ведущего элемента по столбцу
Руководство пользователя к программе
Введение
Целью настоящей работы является по определенной электрической схеме нужно составить систему уравнений при помощи законов Кирхгофа. А также создать приложение для решения данной системы методом Гаусса с выбором ведущего элемента по строке. Известные значения сопротивлений нагрузок (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