Умножать строки на любые отличные от нуля числа, что соответствует умножению соответствующих уравнений на эти числа;
Прибавлять к любой строке матрицы другую, умноженную на отличное от нуля число, что соответствует прибавлению к одному уравнению системы другого, умноженного на число.
С помощью этих преобразований каждый раз получается расширенная матрица новой системы, равносильной исходной, т. е. такой системы, решение которой совпадает с решением исходной системы.
Пример
Решить СЛАУ
Для начала избавимся от переменной 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