close

Вход

Забыли?

вход по аккаунту

?

Kursach(13)

код для вставкиСкачать
Министерство образования и науки Республики Башкортостан
ГАОУ СПО "Стерлитамакский колледж строительства, экономики и права"
Специальность 230115
"Программирование в компьютерных системах"
КУРСОВОЙ ПРОЕКТ
по разделу 1 Объектно-ориентированное программирование
междисциплинарного курса 01.02. Прикладное программирование
Решение системы линейных алгебраических уравнений
методом Гаусса средствами языка программирования Visual Basic
Выполнил студент 3 курса, группы ПО-31
Хуснияров И. З.
Руководитель
Аришина В. Ф.
Оценка ______________
2013
Содержание
Введение3Теоретическая часть4Системы линейных алгебраических уравнений4Решение систем линейных уравнений графическим способом6Метод Гаусса8Visual Basic12Практическая часть17Описание программы17Работа программы21Заключение23Список использованной литературы24Приложение А (программный код)25 Ведение
В курсовом проекте рассмотрена программа, реализующая приближенное решение систем линейных уравнений графическим способом, с подключением модуля "Метод Гаусса", созданная в среде программирования Visual Basic 2010.
Системы линейных уравнений, описывают экономические процессы в обществе и производстве. Навыки решения таких систем я вляются профессионально необходимыми и демонстрируют готовность студента к профессионльной деятельности. Автоматизировать процесс решения таких систем поможет программный продукт, представленный в данном курсовом проекте. Программа написана средствами языка программирования Visual Basic, обладающего возможностями, которые помогут решить графически систему линейных уравнений, а так же реализовать метод Гаусса. Метод Гаусса выбран ак универсальный для систем линейных уравнений.
Цель курсового проекта: Разработать код программного продукта, реализующего приближенное решение систем линейных уравнений графическим способом, с подключением модуля, реализующего метод Гаусса решения систем линейных уравнений.
Задачи курсового проекта:
1. Разработать программный код модуля, реализующего приближенное решение систем линейных уравнений графическим способом.
2. Выполнить отладку программного модуля "Метод Гаусса" и приближенного решения с использованием специализированных программных средств.
3. Выполнить тестирование программного модуля "Метод Гаусса" и приближенного решения по составленным тестовым заданиям.
4. Подготовить документацию с использованием информационно-коммуникационных технологий.
Теоретическая часть
Системы линейных алгебраических уравнений.
Система m линейных алгебраических уравнений с n неизвестными (или, линейная система, также употребляется аббревиатура СЛА́У) в линейной алгебре - это система уравнений вида
Где m-количество линейных уравнений;
n-количество переменных;
x1, x2, ..., xn - неизвестные, которые надо определить;
a11, a12, ..., amn - коэффициенты системы;
b1, b2, ... bm - свободные члены;
Система называется однородной, если все её свободные члены равны нулю (b1 = b2 = ... = bm = 0), иначе - неоднородной.
Система называется квадратной, если число m уравнений равно числу n неизвестных.
Решение системы - совокупность n чисел c1, c2, ..., cn, таких что подстановка каждого ci вместо xi в систему обращает все её уравнения в тождества.
Система называется совместной, если она имеет хотя бы одно решение, и несовместной, если у неё нет ни одного решения.
Совместная система вида может иметь одно или более решений.
Совместная система вида называется определённой, если она имеет единственное решение; если же у неё есть хотя бы два различных решения, то она называется неопределённой. Если уравнений больше, чем неизвестных, она называется переопределённой.
Матричная форма.
Система линейных уравнений может быть представлена в матричной форме как:
Или:
Где A - это матрица системы, x - столбец неизвестных, b - столбец свободных членов. Если к матрице A приписать справа столбец свободных членов, то получившаяся матрица называется расширенной.
Эквивалентные системы линейных уравнений
Системы линейных уравнений называются эквивалентными, если множество их решений совпадает, то есть любое решение одной системы одновременно является решением другой, и наоборот.
Систему, эквивалентную данной, можно получить, в частности, заменив одно из уравнений на это уравнение, умноженное на любое отличное от нуля число. Эквивалентную систему можно получить также, заменив одно из уравнений суммой этого уравнения с другим уравнением системы. В общем, замена уравнения системы на линейную комбинацию уравнений даёт систему, эквивалентную исходной.
Система линейных алгебраических уравнений
эквивалентна системе
,
Где C - невырожденная матрица.
В частности, если сама матрица A - невырожденная, и для неё существует обратная матрица A-1, то решение системы уравнений можно формально записать в виде
.
Решение систем линейных уравнений графическим способом
Решение систем линейных уравнений графическим способом заключается в построении графика каждого уравнения, входящего в данную систему, в одной координатной плоскости и нахождении точки пересечения этих графиков. Координаты этой точки (x; y) и будут являться решением данной системы уравнений.
Если прямые, являющиеся графиками уравнений системы, пересекаются, то система уравнений имеет единственное решение.
Если прямые, являющиеся графиками уравнений системы, параллельны, то система уравнений не имеет решений.
Если прямые, являющиеся графиками уравнений системы, совпадают, то система уравнений имеет бесконечное множество решений.
Примеры
Графиком каждого уравнения служит прямая линия, для построения которой достаточно знать координаты двух точек. Мы составили таблицы значений х и у для каждого из уравнений системы.
Прямую y=2x-3 провели через точки (0; -3) и (2; 1).
Прямую y=x+1 провели через точки (0; 1) и (2; 3).
Графики данных уравнений системы 1) пересекаются в точке А(4; 5). Это и есть единственное решение данной системы.
Ответ: (4; 5).
Выражаем у через х из каждого уравнения системы, а затем составим таблицу значений переменных х и у для каждого из полученных уравнений.
Прямую y=2x+9 проводим через точки (0; 9) и (-3; 3). Прямую y=-1,5x+2 проводим через точки (0; 2) и (2; -1).
Наши прямые пересеклись в точке В (-2; 5).
Ответ: (-2; 5).
Метод Гаусса
Метод Гаусса - классический метод решения системы линейных алгебраических уравнений (СЛАУ). Это метод последовательного исключения переменных, когда с помощью элементарных преобразований система уравнений приводится к равносильной системе треугольного вида, из которой последовательно, начиная с последних (по номеру), находятся все переменные системы.
Пусть исходная система выглядит следующим образом
Где A называется основной матрицей системы, b - столбцом свободных членов.
Тогда, согласно свойству элементарных преобразований над строками, основную матрицу этой системы можно привести к ступенчатому виду (эти же преобразования нужно применять к столбцу свободных членов):
При этом будем считать, что базисный минор (ненулевой минор максимального порядка) основной матрицы находится в верхнем левом углу, то есть в него входят только коэффициенты при переменных xj1 ,..., x jr.
Тогда переменные xj1 ,..., x jr называются главными переменными. Все остальные называются свободными.
Если хотя бы одно число Bi ≠0, где i>r,то рассматриваемая система несовместна, т.е. у неё нет ни одного решения.
Пусть Bi =0 для любых i>r.
Перенесём свободные переменные за знаки равенств и поделим каждое из уравнений системы на свой коэффициент при самом левом x:
Если свободным переменным системы придавать все возможные значения и решать новую систему относительно главных неизвестных снизу вверх (то есть от нижнего уравнения к верхнему, то мы получим все решения этой СЛАУ. Так как эта система получена путём элементарных преобразований над исходной системой, то по теореме об эквивалентности при элементарных преобразованиях системы эквивалентны, то есть множества их решений совпадают.
Разрешается:
1) изменять порядок строк матрицы, что соответствует изменению порядка уравнений;
2) умножать строки на любые отличные от нуля числа, что соответствует умножению соответствующих уравнений на эти числа;
3) прибавлять к любой строке матрицы другую, умноженную на отличное от нуля число, что соответствует прибавлению к одному уравнению системы другого, умноженного на число. С помощью этих преобразований каждый раз получается расширенная матрица новой системы, равносильной исходной, т. е. такой системы, решение которой совпадает с решением исходной системы.
Пример
Решить СЛАУ Для начала избавимся от переменной x1 во втором уравнении. Для этого из второго уравнения вычтем первое уравнение, предварительно умноженное на 3: Из уравнения
имеем: . Переменная x2 найдена. Осталось определить значение переменной x1. Для этой цели преобразуем первое уравнение, убрав из него переменную x2. Вычтем из первого уравнения второе уравнение, предварительно умноженное на 2. Первое уравнение станет таким:
Ответ найден. Запишем то же решение, но уже без промежуточных пояснений. Римскими цифрами I и II будем обозначать первое и, соответственно, второе уравнения. означает, что из второго уравнения вычли утроенное первое уравнение
означает, что левую и правую части второго уравнения разделили на (-7). Итак, решение методом Гаусса заданной СЛАУ будет иметь вид:
Обычно работают с матричной формой записи
В матричной форме записи метод Гаусса станет таким:
Ответ.x1=5;x2=3.
Visual Basic
Visual Basic - это простой и быстрый способ создания программ для Microsoft Windows. Даже если вы не знакомы с программированием для Windows, с Visual Basic вы получите полный набор средств для упрощения разработки.
Так что же такое Visual Basic? Слово "Visual" относится к методу, используемому для создания того, что видит пользователь -графического пользовательского интерфейса, или GUI. Слово "Basic" относится к аббревиатуре BASIC (Beginners All-Purpose Symbolic Instruction Code - многоцелевой код символьных инструкций для начинающих) языка программирования, который используется программистами намного чаще, чем любой другой язык в истории вычислений. Для создания различных полезных программ достаточно изучить лишь некоторые из его возможностей. Форма
Окно Form является вашей программы. Его можно двигать по экрану, увеличивать, уменьшать, менять его свойства в окне свойств, упорядочивать на нём объекты и в окне Code писать для него процедуры. Само окно тоже считается как объект, так сказать, "высший объект". Один из объектов всегда является "актуальным объектом", чьи свойства будут перечислены в окне свойств. Объект становится актуальным, когда на него кликнут. Узнают это чаще всего по обрамлению или по какой-нибудь другой маркировке.
Окно свойств
Здесь всегда перчислены свойства актуального объекта (см. выше). Свойство, представленное синим, может быть изменено в строке справа. Иногда нужно вносить данные самому, иногда можно выбирать из выпадающего списка, который отображён в строке справа в виде маленькой стрелки вниз. Заметьте, что при изменении свойств окна, изменения происходят синхронно.
Окно инструментов
Здесь можно выбрать объекты, которые нужно поместить на форме. Например, чтобы нарисовать линию, кликните на символ линии. Теперь кликните на то место на форме, где должна начинаться линия и тяните мышь с нажатой кнопкой туда, где эта линия должна кончаться. Отпустите кнопку мышки. Готово! Отдельные объекты будут описаны позже.
Процедуры
В Basic'e процедуры начинаются с команды Sub, потом идёт имя процедуры и (). Оканчиваются процедуры командой End Sub (англ. subroutine: подпрограмма). Между этим стоят команды, принадлежащие этой процедуре. Они будут, при вызове процедуры, следовать одна за другой.
В большинстве своём процедуры - это процедуры события: для каждого события, на которое должна реагировать программа, нужно писать процедуру. Причём Sub, имя процедуры, () и End Sub будут заданы самим Basic'ом.
Событие Form_Load
Процедура события Form_Load выполняется каждый раз при запуске вашего приложения прежде, чем окно появится на экране. Поэтому бесполезно уже в этой процедуре что-либо писать в окне или рисовать (например Print), т.к. это просто не будет сделанно. Окна-то ещё нет!
Событие Click
Событие Click происходит в том случае, если на объекте кликнуть левой кнопкой мыши. Если, к примеру, пользователь щёлкнет на одном из элементов управления, событие Click этого объекта будет тут же исполнено. Можно кликнуть по форме - для этого имеется событие Form_Click, которое может содержать различные процедуры.
Событие DblClick
Это событие происходит при двойном клике мышкой на каком-либо объекте. Внимание: ещё при первом нажатии произойдёт событие Click, но при мнгновенном втором уже нет.
Свойство Name
Это то свойство имеется у всех объектов. Оно определяет имя объекта, под которым этот объект будет применяться в Basic-содах. Это свойство может быть изменено только в режиме design и не в самой программе. Предустановки для этого свойства - это, например, "Form1" у окна. Если где-нибудь в программе нужно обратиться к этому объекту, к примеру, если надо поменять его свойство, то надо использовать имя этого объекта.
Свойство Caption
Это свойство имеется у окон, кнопок, "этикеток" и у могих других элемнтов управления. У окон это свойство задаёт текст, который будет отображён в заголовке этого окна. Этот текст отображается также в иконке окна в таскбаре. У элементов управления это свойство определяет текст, который находится на самих элементах управления или в близи них. Это свойство может быть изменено как в режиме design, так и в ходе самой программы.
Свойство Visible
Это свойство имеется у окон и всех элементов управления, кроме таймера (он всегда "невидим"). Это свойство определяет, видим или скрыт объект, и может быть изменено, как в режиме design, так и в ходе программы. Это свойство может принимать значения только True или False.
Свойство Enabled
Это свойство присутсвует у всех окон и элементов управления. Оно определяет будет ли форма или элемент управления реагировать на события произведённые пользователем. Этим свойством они будут либо включены либо выключены. Если элементы управления будут выключены они станут серыми вместо чёрных и становятся неактивными, "потушенными". Это свойство также, как и свойство Visible принимает значения только True или False
Свойства Left, Top
Эти свойства имеются у окон и почти всех элементов управления. Они определяют координаты левого верхнего угла объекта. У окон это координаты относительно экрана, а у элементов управления относительно к верхнему левому углу "внутренней" площади, т.е. окна, в котором они находятся. В режиме design эти свойства могут быть изменены при перетягивании мышкой и в окне свойств. В ходе программы эти свойства могут быть изменены тоже, но уже путём присвоения.
Свойства Width, Height
Эти свойства определяют ширину и высоту объекта. Также Вы можете изменять их как в режиме design, так и в ходе программы. Размеры объекта изменяются тогда сразу.
Кнопки Командные кнопки (button) применяются чаще всего и являются простейшими элементами управления: как правило - это такие серые ящички, на которых находится текст, как например, "OK" или "Отмена", и по которым просто кликают.
Таймер
Таймер назван так правильно: он никакой не настоящий элемент управления и на окне невидим, если программа запущена. Всё, что он делает - это в через определённые отрезки времени выполняет какое-нибудь событие, событие Timer'a. Много таймеров применять не надо, т.к. в Windows'e постоянно имеется максимум 16 таймеров одновременно.
Текстовое поле и поле надписи
В текстовомм поле пользователь должен вводить текст, который потом может быть использован в программе, например его имя или очки игры. На экране видно ящичек, в котором, если на него кликнуть, появится курсор. Поле надписи (этикетка, Label) используется, чтобы показывать текст, который пользователь не может изменить.
Графическое поле
Графическое поле отображает графику, которая была сохранена, как .bmp или .ico файл. При этом будет показана только часть картинки. которая, которая поместилась в размеры графического поля. Если написать процедуру для события Click, можно использовать графическое поле, как красивую кнопку.
Практическая часть
Описание программы
Общие сведения:
Наименование: Программа реализующаяриближенное решение систем линейных уравнений графическим способом, с подключением модуля "Метод Гаусса".
Программаное обеспечение необходимое для функционирования программы:
Microsoft Visual Studio 2010
Операционные системы: Windows Xp, Windows Vista, Windows 7
Язык программирования:
Visual Basic 2010.
Функциональное назначение:
Программа создана для решения систем линейных алгебраических уравнений графическим способом, а так же методом Гаусса.
Программа вычисляет корни одновременно только 2 уравнений, методом Гаусса, а так же графическим способом.
Описание логической структуры:
Используемые методы:
Технология визуального программирования. Визуальная технология программирования позволяет программисту легко и быстро легко и быстро строить нагшлядный графический интерфейс для своих программ на основе стандартного набора шаблонов, графически отображаемых на экране объектов.
Алгоритм:
Метод Гаусса
Структура программы с описанием функций составных частей и связи между ними:
Этот блок программы отвечает за построение системы координат на форме. Первые 2 цикла это разметка по оси Х и по оси Y. Следующие 4 строки, это оси X и Y. И наконец оставшиеся 2 цикла это Засечки по осям координат.
Этот блок отвечает за ввод данных. Решение поставленной задачи. Первые 4 строки нужны для построения прямых на графике. Остальное, это решение методом Гаусса.
Вывод корней, полученных методом Гаусса.
Построение прямых на графике.
Связи программы с другими программами:
Связи программы с другими программами отсутствуют.
Используемые технические характеристики:
Оперативная память: 2Гб;
Процессор: Intel Pentium 4, 3.00 Ггц;
Тип системы: 32 разрядная ОС;
Вызов и загрузка:
Запуск программы происходит через редактор Visual Studio 2010.
В пункте "Файл" нажимаем на "Открыть проект", далее на жестком диске находим папку с названием SLAU, в ней находим файл SLAU.vbproj. Кликаем на него, после чего запускается программа.
Входные данные:
В левом верхнем углу программы, есть несколько текстовых полей, под строкой "Введите коэффициенты при x". В эти текстовые поля нужно ввести коэффициенты при переменных, а так же свободные члены.
Выходные данные:
После нажатия на кнопку "Построить график", в правом верхнем углу будет построен график. На это графике будут построены 2 прямые, точка пересечения которых и будет являться примерным решением системы линейных алгебраических уравнений, которые вы ввели в правом углу.
Внизу написаны 2 переменные x1 и x2, а так же их значения. Эти переменные были найдены с помощью метода Гаусса, и являются точным решением системы линейных алгебраических уравнений.
Работа программы
Постановка задачи.
Рис1.Форма программы.
Введем систему:
Рис2.Ввод данных
После нажмите на кнопку "Построить график".
Рис3. Выполненная программа.
Заключение
В ходе курсового проекта рассмотрен метод решения систем линейных уравнений графическим способом, а так же метод Гаусса решения систем линейных уравнений. Для достижения этой цели выполнена систематизация знаний и умений по теме "Решение систем линейных уравнений", применение графики в Visual Basic 2010. Язык программирования Visual Basic отлично подошел для выполнения данного проекта, так как среда разработки языка Visual Basic, включает в себя инструменты для визуального построения интерфейса.
Были выполнены все задачи, а именно:
Построение кода модуля с заданной функциональностью; отладка программных модулей с использованием специализированных программных средств; выполнено тестирование готовых программных модулей и составил отчетную документацию с использованием информационно-коммуникационные технологий.
В ходе работы над курсовым проектом я научился работать с графикой в Visual Basic, применил свои знания в области решения систем линейных уравнений графическим способом, а так же с помощью метода Гаусса.
Список использованной литературы
http://ru.wikipedia.org
http://mathprofi.ru/kak_reshit_sistemu_uravnenii.html
http://mathprofi.ru/metod_gaussa_dlya_chainikov.html
http://www.webmath.ru/poleznoe/formules_5_5.php
http://gauss.h1.ru/
http://msdn.microsoft.com/ru-ru/library/dd831853.aspx
http://gospodaretsva.com/urok-26-postroenie-grafika-funkcii.html
http://www.rugost.com/index.php?option=com_content&view=article&id=58:19402-78&catid=19&Itemid=50
ПРИЛОЖЕНИЕ А
Программный код
Public Class Form1
Dim Graph1 As Graphics
Dim Pen1 As New Pen(Color.Black, 2)
Dim Pen2 As New Pen(Color.Black, 1)
Dim brush1 As New SolidBrush(Color.Black)
Dim font1 As New Font("times new roman", 7)
Dim X, Y, a1, a2, b1, b2, c1, c2, k1, k2, m1, m2, d, z1, z2, x1, y1 As Single
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Label1.Text = "Введите коэфициенты при х"
Label2.Text = "X1+"
Label3.Text = "X2="
Label4.Text = "X1+"
Label5.Text = "X2="
Label6.Text = ""
Label7.Text = ""
Label8.Text = ""
Button1.Text = "Построить граффик"
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Graph1 = Me.PictureBox1.CreateGraphics()
For X = -15 To 15 Step 3
Graph1.DrawString(X, font1, brush1, X * 10 + 150, 150)
Next X
For Y = -15 To 150 Step 3
Graph1.DrawString(Y, font1, brush1, 150, 150 - Y * 10)
Next Y
Graph1.ScaleTransform(1, -1)
Graph1.TranslateTransform(150, -150)
Graph1.DrawLine(Pen1, -150, 0, 150, 0)
Graph1.DrawLine(Pen1, 0, -150, 0, 150)
For X = -150 To 150 Step 30
Graph1.DrawLine(Pen2, X, -3, X, 3)
Next X
For Y = -150 To 150 Step 30
Graph1.DrawLine(Pen2, -3, Y, 3, Y)
Next Y
a1 = TextBox1.Text
b1 = TextBox2.Text
c1 = TextBox5.Text
a2 = TextBox3.Text
b2 = TextBox4.Text
c2 = TextBox6.Text
k1 = (-1) * (a1 / b1)
m1 = (-1) * (c1 / b1)
k2 = (-1) * (a2 / b2)
m2 = (-1) * (c2 / b2)
d = -(a2 / a1)
a2 = a2 + (a1 * d)
b2 = b2 + (b1 * d)
c2 = c2 + (c1 * d)
z2 = c2 / b2
z1 = (c1 - (z2 * b1)) / a1
Label6.Text = "X1=" + z1.ToString
Label7.Text = "X2=" + z2.ToString
Label8.Text = "Из решения методом гаусса получено:"
For X = -150 To 150 Step 1
Y = k1 * X + m1
y1 = k1 * (X + 1) + m1
Graph1.DrawLine(Pen2, X * 10, Y * 10, (X + 1) * 10, y1 * 10)
Next X
For X = -150 To 150 Step 1
Y = k2 * X + m2
y1 = k2 * (X + 1) + m2
Graph1.DrawLine(Pen2, X * 10, Y * 10, (X + 1) * 10, y1 * 10)
Next X
End Sub
End Class
2
Документ
Категория
Рефераты
Просмотров
68
Размер файла
650 Кб
Теги
kursach
1/--страниц
Пожаловаться на содержимое документа