Зміст
Введення
Метод Гауса
Метод Гаусса з вибором ведучого елемента за стовпцем
Опис програми
Керівництво користувача до програми
Висновок
Список літератури
Додаток А
Введення
Метою цієї роботи є по певній електричної схемі потрібно скласти систему рівнянь за допомогою законів Кірхгофа. А також створити додаток для вирішення даної системи методом Гаусса з вибором ведучого елемента по рядку. Відомі значення опорів навантажень (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
Електрична схема показана на "Form 2". цю форму зі схемою можна викликати за допомогою викликом меню "Електрична схема" (рисунок 2.4).
Малюнок 2.4.
У формі "Про програму" наведена на рисунку 2.5 даний короткий опис програми.
Рисунок 2.5
Керівництво користувача до програми
Запускаємо виконуваний файл "Розрахунок струмів розгалуженої ланцюга. Exe" або відкриваємо файл "Проект1" і запускаємо (F 5). У вікні виведено вікно заставки. По натисненню кнопки "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
'Встановлюємо число рядків і слобцов
MSFlexGrid 1. 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