Вы находитесь на странице: 1из 13

Министерство образования и науки Российской Федерации

Уфимский Государственный Авиационный Технический Университет

Кафедра информатики

Пояснительная записка
к курсовой работе
«Решение систем линейных уравнений. Метод Гаусса»
Тема 2, Вариант 4

Выполнил:
студент

Проверил:

Белорецк 2008

1
Содержание:

1. Введение.......................................................................................................3
2. Постановка задачи.......................................................................................4
3. Теоретическая часть....................................................................................5
4. Блок-схема метода решения СЛАУ методом Гаусса...............................7
5. Описание программы. Исходный тест программы..................................9
6. Результаты выполнения программы........................................................11
Рис. 4. Вид программы при ее запуске.......................................................11
8. Список использованной литературы.......................................................13

2
1. Введение

В данной курсовой работе рассмотрен один из методов вычислений


системы линейных алгебраических уравнений – метод Гаусса. Для решения
системы составлена программа – приложение win32 в среде Microsoft Visual
Basic 6.0 for 32-bit Windows Development. В пояснительной записке
рассмотрена теория метода Гаусса, представлена блок-схема метода, описана
структура программы и основных компонентов. Дан код ядра программы и
описана графическая часть программы – визуализации с использованием
компонента PictureBox.

3
2. Постановка задачи

Таблица 1.
1 2 3 4
№п/п Методы Визуализация
№ вар.
1 1 1 1
2 2 1 1
3 3 1 1
4 1 2 2 При N=2
5 2 2 2
6 3 2 2
7 1 2 3
8 2 1 3
9 3 2 3

Таблица 2.
1 2 3
Методы Исходные данные Вывод результатов
решения
Порядок системы N<=10.
1. метод Гаусса Коэффициенты задаются следующими
2. метод способами: 1 - FlexGrid
Халецкого 1. из текстового файла 2 –PictureBox
3. метод 2. с клавиатуры 3 - файл
Крамера Перед решением системы проверить
исходные данные на корректность

Решить систему линейных алгебраических уравнений методом Гаусса.


Порядок системы N<=10.
Коэффициенты задаются с клавиатуры. Перед решением системы
проверить исходные данные на корректность. Результат вывести в
PictureBox. Визуализация – при n = 2.

4
3. Теоретическая часть

Метод Гаусса
С помощью этого метода решают неоднородную систему n линейных
алгебраических уравнений с n неизвестными:
a11x1 + a12x2 + ... +a1n xn = a1n+1
a21 x1 + a22 x2 + ... +a2n xn = a2n+1
....
an1 x1 + an2 x2 + ... +ann xn = ann+1
Вначале находим отличный от нуля коэффициент при x1 .
Соответствующее уравнение переставляем с первым (если это
необходимо!!!). Получаем систему с a11 отличным от нуля. Разделив
коэффициенты этого уравнения на a11 , получим:
x1 + b12 x2 + ... + b1n xn = b1n+1
При помощи этого уравнения исключаем x1 из исходной системы:
a (1)22 x2 + a (1)23 x3 + ... + a (1)2n xn = a (1)2n+1
....
a (1)n2 x2 + a (1)n3 x3 + ... + a (1)nn xn = a (1)nn+1
где
a (1)ij = aij - ai1 b1j , i,j= 2...n

и Т.Д.
Полученная система содержит n-1 уравнение. Применяем описанную
выше процедуру к этой системе. Операции повторяем требуемое число раз,
пока не приведем систему к треугольному виду:
x1 + с12 x2 + ... + с1n xn = с1n+1
x2 + ... + c2n xn = c2n+1
....
xn = cnn+1
Теперь легко определить xn , xn-1 , ..., x1 .

5
Если при поиске отличного от нуля коэффициента такого не окажется, то
матрица системы вырождена и алгоритм неприменим. Для сравнения с нолем
в алгоритм передается малое число epsilon, и любое число, по модулю
меньшее epsilon, считается нолем. В случае вырожденной матрицы функция
возвращает False. Если матрица невырождена, то функция возвращает True, а
переменная X содержит решение системы.

6
4. Блок-схема метода решения СЛАУ методом Гаусса

Рис.1. Блок-схема решения СЛАУ методом Гаусса (продолжение на


след.стр.).

7
Рис.2. Блок-схема решения СЛАУ методом Гаусса (продолжение).

8
5. Описание программы. Исходный тест программы.

Эта программа создана, как многооконное приложение. Данные о нашем


линейном уравнении мы вводим с клавиатуры. Далее с помощью падающего
меню «Система линейных уравнений», нажатием кнопки «Вычислить», ответ
выводиться в файл и в PictureBox1, а в PictureBox2 выводиться графическое
решение. Там же можем посмотреть блок-схему самого метода Гаусса. В
меню «Справка» выводится информация об авторе

Программа состоит из нескольких форм. Формы их назначение описаны в


таблице 3.

Таблица 3. Формы программы.


Форма Назначение
Form1 Главное окно программы. На данной форме
расположено главное меню программы:
 Файл
 Решение СЛАУ методом Гаусса
 О программе.
А так же расположена кнопка «Блок-схема
метода», вызывающую form4, содержащую
рисунок блок-схемы метода Гаусса.
Form2 Форма ввода значений, вычисления корней СЛАУ
и визуализации при n = 2.
Form3 Форма «О программе»
Form4 Форма с алгоритмом метода Гаусса. Вызывается
кнопкой «Блок-схема метода».
Рис. 3. Общий вид программы.

Визуализация вычислений при n=2 сделана автоматически - в зависимости


от вводимого n. При n> 2 графики не выводятся.
Исходный текст программы:
Private Sub Command1_Click()
Picture1.Cls
Picture2.Cls
n = Val(Text1)
Dim A() As Double
Dim B() As Double
Dim x() As Double
ReDim A(1 To n, 1 To n + 1)
ReDim B(1 To n + 1)
ReDim x(1 To n)

p = Split(Text2, "/")
9
k = 0

For i = 1 To n
For j = 1 To n + 1
A(i, j) = p(k)
k = k + 1
Next j
Next i

If n = 2 Then
Picture2.Scale (-10, 25)-(12, -5)

For i = -10 To 12
Picture2.Line (i, -5)-(i, 25), RGB(200, 220, 225)
Picture2.PSet (i, 0)
Picture2.Print i
Next

For i = -5 To 25
Picture2.Line (-10, i)-(12, i), RGB(200, 220, 225)
Picture2.PSet (0, i)
Picture2.Print i
Next

Picture2.Line (-10, 0)-(12, 0), QBColor(8)


Picture2.Line (0, -5)-(0, 25), QBColor(8)

For l = -10 To 20 Step 0.01


y = (A(1, 3) - A(1, 1) * l) / A(1, 2)
Picture2.PSet (l, y)
Y1 = (A(2, 3) - A(2, 1) * l) / A(2, 2)
Picture2.PSet (l, Y1)
Next
End If

u = 2

For r = 1 To n - 1
For j = u To n
q = -A(j, r) / A(r, r)
For i = 1 To n + 1
For t = 1 To n + 1
B(t) = q * A(r, t)
Next t
A(j, i) = A(j, i) + B(i)
Next i
Next j
u = u + 1
Next r

d = A(n, n + 1)
h = 1

For j = 0 To n - 1
x(n - j) = d / A(n - j, n - j)
If (n - j = 1) Then GoTo l1
d = A(n - j - 1, n + 1) - x(n - j) * A(n - (j + 1), n - j)
Next j

l1:
For i = 1 To n
Picture1.Print "x"; i; "="; x(i)
Next

End Sub

10
6. Результаты выполнения программы.

В качестве проверки возьмем систему двух линейных уравнений,


решим ее:
 x  y  1  x  y  1  x  y  1  x  3
   
4 x  4 y  20  x  y  5 2 y  6 y  2

Проверим решение с помощью созданной программы:


Вводим количество уравнений: 2.
Вводим элементы в следующей последовательности (с разбиением чисел
косой чертой «/»): коэффициенты первого ряда – a11, a12, b1; коэффициенты
второго ряда – a21, a22, b2. Получим в результате строку «-1/1/-1/4/4/20».
При нажатии на кнопку программа строит графики (при n=2) и вычисляет
корни системы линейных алгебраических уравнений.

Рис. 4. Вид программы при ее запуске.

Рис. 5. Вид программы при введении коэффициентов,


и визуализации (n=2).

11
7. Заключение.

В ходе курсовой работы был собран материал по методу Гаусса решения


систем линейных алгебраических уравнений. Далее был составлен алгоритм
решения СЛАУ и спроектирована оболочка программа в среде Microsoft
Visual Basic 6.0 for 32-bit Windows Development. Решение контрольного
примера показало, что программа составлена верно. Для решения данной
задачи была прочитана соответствующая литература и справочники -
математические и по среде программирования Visual Basic.

12
8. Список использованной литературы.

1. Ананьев А., Федоров А. «Самоучитель Visual Basic 6.0». БХВ -


Петербург, 2005 г. - 346 с.

2. Бронштейн И.Н., Семендяев К.А. Справочник по математике. Для


инженеров и учащихся ВТУЗов. Гос. издательство физико-
математической литературы. М.: 1962 г. – 608 с.

3. Виленкин Н.Я. Алгебра и математический анализ. Учебное пособие для


учащихся школ и классов с углубленным изучением математики. М.:
«Просвещение», 1998. – 288 с.

4. Ефимов Н.В. Краткий курс аналитической геометрии. М.:


«Академкнига», 1967 – 267 с.

5. Кузьмина Е.А., Минасов Ш.М., Тархов С.В. Электронный


лабораторный практикум 
6. по дисциплине: "Информатика". Уфа, кафедра Информатики УГАТУ,
2004-2005 г.

7. Стойлова Л.П. Математика: Учебник для студ. высш. пед. учеб.


заведений. М.: «Академия», 1999. – 424 с.

13