Решение системы линейных алгебраических уравнений методом Гаусса средствами языка программирования Visual Basic
Министерство образования и науки Республики Башкортостан
ГАОУ СПО «Стерлитамакский колледж строительства, экономики и права»
«Программирование в компьютерных системах»
по разделу 1 Объектно-ориентированное программирование
междисциплинарного курса 01.02. Прикладное программирование
Решение системы линейных алгебраических уравнений
методом Гаусса средствами языка программирования Visual Basic
3 курса, группы ПО-31
Системы линейных алгебраических уравнений
Решение систем линейных уравнений графическим способом
Список использованной литературы
Приложение А (программный код)
В курсовом проекте рассмотрена программа, реализующая приближенное решение систем линейных уравнений графическим способом, с подключением модуля “Метод Гаусса”, созданная в среде программирования Visual Basic 2010.
Системы линейных уравнений, описывают экономические процессы в обществе и производстве. Навыки решения таких систем я вляются профессионально необходимыми и демонстрируют готовность студента к профессионльной деятельности. Автоматизировать процесс решения таких систем поможет программный продукт, представленный в данном курсовом проекте. Программа написана средствами языка программирования Visual Basic , обладающего возможностями, которые помогут решить графически систему линейных уравнений, а так же реализовать метод Гаусса. Метод Гаусса выбран ак универсальный для систем линейных уравнений.
Цель курсового проекта:
Разработать код программного продукта, реализующего прибл иженно е решение систем линейных уравнений графическим способом, с подключением модуля, реализующего метод Гаусса решения систем линейных уравнений.
Задачи курсового проекта:
1. Разработать программный код модуля, реализующего прибл иженно е решение систем линейных уравнений графическим способом.
2. Выполнить отладку программного модуля «Метод Гаусса» и приближенного решения с использованием специализированных программных средств.
3. Выполнить тестирование программного модуля «Метод Гаусса» и приближенного решения по составленным тестовым заданиям.
Системы линейных алгебраических уравнений.
Система m линейных алгебраических уравнений с n неизвестными (или, линейная система, также употребляется аббревиатура СЛА́У) в линейной алгебре — это система уравнений вида
Где m -количество линейных уравнений;
n -количество переменных ;
x 1 , x2, …, xn — неизвестные, которые надо определить;
Система называется однородной, если все её свободные члены равны нулю ( b 1 = b2 = … = bm = 0 ), иначе — неоднородной.
Система называется квадратной, если число m уравнений равно числу n неизвестных.
Решение системы — совокупность n чисел c 1 , 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 — столбцом свободных членов.
Тогда, согласно свойству элементарных преобразований над строками, основную матрицу этой системы можно привести к ступенчатому виду (эти же преобразования нужно применять к столбцу свободных членов):
При этом будем считать, что базисный минор (ненулевой минор максимального порядка) основной матрицы находится в верхнем левом углу, то есть в него входят только коэффициенты при переменных xj 1 ,…, x jr .
Тогда переменные xj 1 ,…, x jr называются главными переменными. Все остальные называются свободными.
Если хотя бы одно число Bi ≠0 , где i > r ,то рассматриваемая система несовместна, т. е. у неё нет ни одного решения.
Перенесём свободные переменные за знаки равенств и поделим каждое из уравнений системы на свой коэффициент при самом левом x :
Если свободным переменным системы придавать все возможные значения и решать новую систему относительно главных неизвестных снизу вверх (то есть от нижнего уравнения к верхнему, то мы получим все решения этой СЛАУ . Так как эта система получена путём элементарных преобразований над исходной системой, то по теореме об эквивалентности при элементарных преобразованиях системы эквивалентны, то есть множества их решений совпадают.
Разрешается:
1) изменять порядок строк матрицы, что соответствует изменению порядка уравнений;
2) умножать строки на любые отличные от нуля числа, что соответствует умножению соответствующих уравнений на эти числа;
3) прибавлять к любой строке матрицы другую, умноженную на отличное от нуля число, что соответствует прибавлению к одному уравнению системы другого, умноженного на число.
С помощью этих преобразований каждый раз получается расширенная матрица новой системы, равносильной исходной, т. е. такой системы, решение которой совпадает с решением исходной системы.
Для начала избавимся от переменной x 1 во втором уравнении. Для этого из второго уравнения вычтем первое уравнение, предварительно умноженное на 3:
.
Переменная x 2 найдена. Осталось определить значение переменной x 1 . Для этой цели преобразуем первое уравнение, убрав из него переменную x 2 . Вычтем из первого уравнения второе уравнение, предварительно умноженное на 2. Первое уравнение станет таким:
Ответ найден. Запишем то же решение, но уже без промежуточных пояснений. Римскими цифрами I и II будем обозначать первое и, соответственно, второе уравнения.
означает, что из второго уравнения вычли утроенное первое уравнение
означает, что левую и правую части второго уравнения разделили на (-7).
Итак, решение методом Гаусса заданной СЛАУ будет иметь вид:
Обычно работают с матричной формой записи
В матричной форме записи метод Гаусса станет таким:
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 выполняется каждый раз при запуске вашего приложения прежде, чем окно появится на экране. Поэтому бесполезно уже в этой процедуре что-либо писать в окне или рисовать (например Print), т. к. это просто не будет сделанно. Окна-то ещё нет!
Событие Click происходит в том случае, если на объекте кликнуть левой кнопкой мыши. Если, к примеру, пользователь щёлкнет на одном из элементов управления, событие Click этого объекта будет тут же исполнено. Можно кликнуть по форме — для этого имеется событие Form_Click, которое может содержать различные процедуры.
Это событие происходит при двойном клике мышкой на каком-либо объекте. Внимание: ещё при первом нажатии произойдёт событие Click, но при мнгновенном втором уже нет.
Это то свойство имеется у всех объектов. Оно определяет имя объекта, под которым этот объект будет применяться в Basic-содах. Это свойство может быть изменено только в режиме design и не в самой программе. Предустановки для этого свойства — это, например, «Form1» у окна. Если где-нибудь в программе нужно обратиться к этому объекту, к примеру, если надо поменять его свойство, то надо использовать имя этого объекта.
Это свойство имеется у окон, кнопок, «этикеток» и у могих других элемнтов управления. У окон это свойство задаёт текст, который будет отображён в заголовке этого окна. Этот текст отображается также в иконке окна в таскбаре. У элементов управления это свойство определяет текст, который находится на самих элементах управления или в близи них. Это свойство может быть изменено как в режиме design, так и в ходе самой программы.
Это свойство имеется у окон и всех элементов управления, кроме таймера (он всегда «невидим»). Это свойство определяет, видим или скрыт объект, и может быть изменено, как в режиме design, так и в ходе программы. Это свойство может принимать значения только True или False.
Это свойство присутсвует у всех окон и элементов управления. Оно определяет будет ли форма или элемент управления реагировать на события произведённые пользователем. Этим свойством они будут либо включены либо выключены. Если элементы управления будут выключены они станут серыми вместо чёрных и становятся неактивными, «потушенными». Это свойство также, как и свойство 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 переменные x 1 и x 2, а так же их значения. Эти переменные были найдены с помощью метода Гаусса, и являются точным решением системы линейных алгебраических уравнений.
После нажмите на кнопку “Построить график”.
Рис3. Выполненная программа.
В ходе курсового проекта рассмотрен метод решения систем линейных уравнений графическим способом, а так же метод Гаусса решения систем линейных уравнений. Для достижения этой цели выполнена систематизация знаний и умений по теме «Решение систем линейных уравнений», применение графики в Visual Basic 2010. Язык программирования Visual Basic отлично подошел для выполнения данного проекта, так как среда разработки языка Visual Basic , включает в себя инструменты для визуального построения интерфейса.
Были выполнены все задачи, а именно:
Построение кода модуля с заданной функциональностью; отладка программных модулей с использованием специализированных программных средств; выполнено тестирование готовых программных модулей и составил отчетную документацию с использованием информационно-коммуникационные технологий.
В ходе работы над курсовым проектом я научился работать с графикой в Visual Basic , применил свои знания в области решения систем линейных уравнений графическим способом, а так же с помощью метода Гаусса.
Список использованной литературы
http://ru. wikipedia. org
http://www. /index. php? option=com_content&view=article&id=58:&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 = «Введите коэфициенты при х»
Button1.Text = » Построить граффик «
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)
For Y = -15 To 150 Step 3
Graph1.DrawString(Y, font1, brush1, 150, 150 — Y * 10)
Привет студент
ПРОГРАММНАЯ РЕАЛИЗАЦИЯ РЕШЕНИЯ СИСТЕМ ЛИНЕЙНЫХ УРАВНЕНИЙ
Приднестровский государственный университет им. Т.Г. Шевченко
Кафедра программного обеспечения вычислительной техники
и автоматизированных систем
КУРСОВАЯ РАБОТА
«Информатика и программирование»
тема: «ПРОГРАММНАЯ РЕАЛИЗАЦИЯ РЕШЕНИЯ СИСТЕМ ЛИНЕЙНЫХ УРАВНЕНИЙ»
студентка группы ИТ13ДР62ИС1
Арабаджи Федор Иванович
ЗАДАНИЕ
на курсовую работу по дисциплине
«ПРОГРАММИРОВАНИЕ»
Студента группы ________ — ___________________
утверждена протоколом кафедры _________ № _____ от «____» ____________ 20___ г.
Цель курсовой работы:
Задачи курсовой работы:
Результаты курсовой работы:
График обязательных консультаций:
Дата сдачи записки на регистрацию «_____» __________20__ г.
Дата защиты курсовой работы «_____» __________20__ г.
Задание принял к исполнению «_____» __________20__ г. ___________/________________/
Руководитель работы ______________________ /________________/
СОДЕРЖАНИЕ
2 ОПИСАНИЕ ПРЕДМЕТНОЙ ОБЛАСТИ………………………………….
2.3 Метод обратной матрицы…………………………………………….
3 РУКОВОДСТВО ПРОГРАММИСТА………………………………………..
3.1 Введение и общие сведения……………………………………………
3.2 Структура программного продукта………………………………….
3.4 Описание исходных текстов программного продукта…………….
3.5 Аппаратная и программная часть…………………………………….
3.6 Результаты тестирования и опытной эксплуатации………………….
4 РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ……………………………………….
4.3 Установка программного продукта……………………………….…..
4.4 Запуск и работа с программным продуктом…………………….……
4.5 Удаление программного продукта…………………………………….
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ…………………………….
Введение
Последние десятилетия характеризуются бурным развитием вычислительной техники. Расширяются области применения вычислительных машин и совершенствуются методы их использования. Созданы универсальные языки программирования и разработаны мощные операционные системы.
Сейчас невозможно представить себе какую-либо область деятельности, обходящуюся без применения компьютерной техники.
Компьютеры используются при проведении различных инженерных расчётов, при решении экономических задач, в процессе управления производством, при получении оценок производственных ситуаций и во многих других случаях.
Решение систем линейных алгебраических уравнений является одной из основных задач линейной алгебры. Эта задача имеет важное прикладное значение при решении научных и технических проблем. Кроме того, является вспомогательной при реализации многих алгоритмов вычислительной математики, математической физики, обработки результатов экспериментальных исследований.
Алгебраическое уравнение называется линейным, если оно содержит переменные только в первой степени и не содержит произведений переменных.
Решение систем линейных алгебраических уравнений является одной из фундаментальных задач математики. В частности, она возникает при решении краевых задач для дифференциальных и интегральных уравнений, к которым сводятся реальные проблемы техники, физики, экономики, математики и др. Подобные программы довольно популярны, в особенности среди пользователей глобальной сети Интернет. Они могут быть широко применимы в среде образовательных учреждений. Например, преподавателю необходимо проверить десятки работ студентов в короткий срок или составить варианты контрольных работ, помочь студенту в решении систем линейных уравнений и в их объяснении, так как программа будет содержать краткую теоретическую справку.
Чтобы быстро справится с решением системы линейных уравнений, можно воспользоваться средствами вычислительной техники – написать программу на языке программирования.
Учитывая современные возможности, можно облегчить процесс решения систем линейных уравнений. Данную задачу можно выполнить программно для упрощения и автоматизации процесса решения систем линейных уравнений методом Гаусса, методом Крамера, а также методом обратной матрицы с помощью Windows-приложения, реализованного средствами языка высокого уровня С#.
Данный продукт найдёт своё применение в сфере образования. В частности, например, учащиеся с помощью данной программы смогут проверить правильность решения систем линейных уравнений.
1 постановка задачи
В данной курсовой работе необходимо создать программный продукт при помощи Windows Forms на языке C#, который представлял бы возможность:
- ввода данных с клавиатуры или считывания их из файла с представлением права выбора пользователю;
- решения системы линейных уравнений;
- запись данных в файл;
- доступа к файлу, куда записываются входные и выходные данные.
Программа должна выполнять решение систем линейных уравнений методом Гаусса, методом Крамера или методом обратной матрицы.
Окно программы должно содержать:
- пункты меню: Файл, Правка, Примеры, Справка, О программе;
- поле выбора метода решения системы линейных уравнений;
- поле выбора количества уравнений в системе;
- поля для входных и выходных данных;
- кнопки операций.
Входными данными являются числа вещественного типа, введенные с клавиатуры или считанные из файла. Программа распознает входные данные и производит решение системы одним из выбранных методов.
Результатом работы программы служит отображение получившейся матрицы или определителя (в зависимости от выбранного способа) и корни системы уравнений, полученные в результате решения системы.
2 описание предметной области
Решение систем линейных алгебраических уравнений – одна из фундаментальных задач математики. Система m линейных алгебраических уравнений с n неизвестными (или, линейная система, также употребляется аббревиатура СЛАУ) в линейной алгебре — это система уравнений вида (Рисунок 1)
Рисунок 1- Система уравнений
В системе уравнений (Рисунок 1) m является количеством уравнений, а n – количество неизвестных. x1, x2, … xn – это неизвестные, которые надо определить. a11, a12, … amn – коэффициенты системы, а b1, b2, … bm – свободные члены. Индексы коэффициентов (aij) системы обозначают номера уравнения (i) и неизвестного (j), при котором стоит этот коэффициент, соответственно.
Существуют следующие способы решения систем линейных уравнений:
– метод обратной матрицы.
2.1 Метод Гаусса
Метод Гаусса – классический метод решения системы линейных алгебраических уравнений. Это метод последовательного исключения переменных, когда с помощью элементарных преобразований система уравнений приводится к равносильной системе треугольного вида, из которой последовательно, начиная с последних (по номеру), находятся все переменные системы. Хотя в настоящее время данный метод повсеместно называется методом Гаусса, он был известен и до К.Ф. Гаусса. Первое известное описание данного метода приведено в китайском трактате «Математика в девяти книгах», составленном между первым веком до н. э. и вторым веком н. э.
Далее приведено более подробное описание метода. Пусть исходная система будет вида (Рисунок 2):
Рисунок 2 — Исходная система уравнений
На рисунке 2.1 указана матрица A, вектор x и вектор b. Матрицей А называется основная матрица системы, вектором x – столбец неизвестных, вектором – столбец свободных членов.
Рисунок 2.1 — Матрица A
Согласно свойству элементарных преобразований над строками, основную матрицу этой системы можно привести к треугольному (или ступенчатому) виду (эти же преобразования нужно применять к столбцу свободных членов), что показано на рисунке 2.2
Рисунок 2.2 — Матрица треугольного вида
При этом будем считать, что базисный минор (ненулевой минор максимального порядка) основной матрицы находится в верхнем левом углу, то есть в него входят только коэффициенты при переменных xj1, … , xjr.
Тогда переменные xj1, … , xjr называются главными переменными. Все остальные называются свободными.
Если хотя бы одно число βi ≠ 0, где i > r, то рассматриваемая система несовместна, то есть у неё нет ни одного решения.
Пусть βi ≠ 0 для любых i > r. Перенесём свободные переменные за знаки равенств и поделим каждое из уравнений системы на свой коэффициент при самом левом x (см. рисунок 2.3):
Рисунок 2.3- Несовместная система
Если свободным переменным системы (рисунок 2.3) придавать все возможные значения и решать новую систему относительно главных неизвестных снизу вверх (то есть от нижнего уравнения к верхнему), то мы получим все решения этой системы линейных алгебраических уравнений. Так как эта система получена путём элементарных преобразований над исходной системой, то по теореме об эквивалентности при элементарных преобразованиях системы (рисунок 2) и (рисунок 2.3) эквивалентны, то есть множества их решений совпадают.
2.2 Метод Крамера
Метода Крамера – способ решения систем линейных алгебраических уравнений с числом уравнений равным числу неизвестных с ненулевым главным определителем матрицы коэффициентов системы, причём для таких уравнений решение существует и единственно. Назван по имени Габриэля Крамера, предложившего этот метод в 1750 г.
Рисунок 2.4 — Система линейных уравнений
Для системы n линейных уравнений (рисунок 2.4) с n неизвестными с определителем матрицы системы ≠ 0, решение записывается по формуле показанном на рисунке 2.5:
Рисунок 2.5 — Нахождение решения
i-ый столбец матрицы системы заменяется столбцом свободных членов.
2.3 Метод обратной матрицы
Метод обратной матрицы – метод решения системы линейных алгебраических уравнений, использующий понятие обратной матрицы.
Обратная матрица – такая матрица A −1 , при умножении на которую, исходная матрица A даёт в результате единичную матрицу E (формула 2.6).
Обратная матрица находится по формуле 2.7.
В формуле 2.7 det обозначает определитель.
Если необходимо решить систему линейных уравнений Ax = b, где b – ненулевой вектор, в который входят свободные члены, x – искомый вектор. Если обратная матрица A -1 существует, то x = A -1 b. В противном случае либо размерность пространства решений больше нуля, либо их нет вовсе.
3 ПРОграммная реализация решения задачи
3.1 Введение и общие сведения
Одна из основных задач линейной алгебры – решение систем линейных алгебраических уравнений. Эта задача имеет важное прикладное значение при решении научных и технических проблем. Кроме того, является вспомогательной при реализации многих алгоритмов вычислительной математики, математической физики, обработки результатов экспериментальных исследований.
Программа «MATrix» предназначена для решения систем линейных алгебраических уравнений тремя методами:
- методом Гаусса;
- методом Крамера;
- методом обратной матрицы.
Данный программный продукт значительно упрощает получение корней систем линейных уравнений.
3.2 Структура программного продукта
В процессе разработки программного продукта были реализованы следующие формы:
- Formcs – форма приветсвия;
- MATrix.cs – форма, обеспечивающая решение систем линейных алгебраических уравнений методом Гаусса, методом Крамера или методом обратной матрицы по выбору пользователя;
- About.cs – форма, содержащая информацию о программном продукте.
На рисунке 3.1 изображена функциональная схема.
Курсовая работа: Разработка программы решения системы линейных уравнений
Название: Разработка программы решения системы линейных уравнений Раздел: Рефераты по информатике, программированию Тип: курсовая работа Добавлен 22:38:32 18 июля 2010 Похожие работы Просмотров: 1002 Комментариев: 21 Оценило: 3 человек Средний балл: 5 Оценка: неизвестно Скачать | |
Заключение
В данной курсовой работе рассмотрены математические методы решения систем линейных уравнений: матричный метод и метод Гаусса, приводятся основные конструкции языка Паскаль. Рассмотренные теоретические вопросы дают возможность создания программы на Паскале для решения систем линейных уравнений. В курсовой работе приводится текст данной программы, рассматривается структура программы, анализируются все подпрограммы. Данная программа может быть использована в различных областях, где требуется решение систем линейных уравнений.
Список используемых источников и литературы
1. А.В. Могилев, Н.И. Пак, Е.К. Хеннер «Информатика», Москва, ACADEMA, 2000 г.
2. « Турбо Паскаль 7.0″, Киев, Торгово-издательское бюро BHV, 1997г.
3. С.А. Немнюгин, «Турбо ПАСКАЛЬ», Практикум, Питер, 2002г.
Приложение
«Решение систем линейных уравнений матричным способом и методом Гаусса»
type matr=array [1. n,1. n] of real;
mas=array [1. n] of real;
procedure PrintMatr2 (m,m1: matr; n,nz,nd: integer);
for i: =1 to n do
if (i=1) then write (np: 2,’: ‘)
for j: =1 to n do
write (m [i,j]: nz: nd); write (‘ ‘);
for j: =1 to n do
write (m1 [i,j]: nz: nd);
procedure MultString (var a,b: matr; i1: integer; r: real);
for j: =1 to n do
procedure AddStrings (var а,b: matr; i1, i2: integer; r: real);
for j: =1 to n do
a [i1,j]: =a [i1,j] +r*a [i2,j] ;
b [i1,j]: =b [i1,j] +r*b [i2,j] ;
procedure MultMatr (a,b: matr; var c: matr);
for i: =1 to n do
for j: =1 to n do
for k: =1 to n do
function sign (r: real): shortint;
if (r>=0) then sign: =1 else sign: =-1;
procedure GetMatr (a: matr; var b: matr; m, i,j: integer);
var ki,kj,di,dj: integer;
for ki: =1 to m-1 do
if (ki=i) then di: =1;
for kj: =1 to m-1 do
if (kj=j) then dj: =1;
b [ki,kj]: =a [ki+di,kj+dj] ;
procedure gauss (a: matr; b: mas; var x: mas; n: integer);
For k: =1 to N-1 do
For i: =k+1 to n do
For j: =k+1 to N do
writeln (‘Вывод результатов решения системы уравнений методом Гаусса’);
writeln (‘x [‘,n,’] =’,x [n]: 6: 2);
for i: = (n-1) downto 1 do
For j: =i+1 to n do
x [i]: = (b [i] +s) /a [i, i] ;
writeln (‘x [‘, i,’] =’,x [i]: 6: 2);
procedure matrica (a: matr; y: mas; n: integer);
for i: =1 to n do
for j: =1 to n do z [i,j]: =0;
for i: =1 to n do
for j: =1 to n do
for i: =1 to n do
взятую со знаком i-того элемента j-ой строки. Таким образом,
на месте элементова a [i, i] возникает сумма модулей элементов i-того
столбца (ниже i-ой строки) взятая со знаком бывшего элемента a [i, i],
равенство нулю которой говорит о несуществовании обратной матрицы >
for j: =i+1 to n do
AddStrings (a,z, i,j,sign (a [i, i]) *sign (a [j, i]));
if (abs (a [i, i]) >eps) then
MultString (a,z, i,1/a [i, i]);
for j: =i+1 to n do
AddStrings (a,z,j, i,-a [j, i]);
writeln (‘Обратной матрицы не существует. ‘);
if (a [n,n] >eps) then
for i: =n downto 1 do
for j: =1 to i-1 do
AddStrings (a,z,j, i,-a [j, i]);
else writeln (‘Обратной матрицы не существует. ‘);
writeln (‘Начальная матрица, обратная к ней матрица: ‘);
for i: =1 to n do s [i]: =0;
for i: =1 to n do
for j: =1 to n do
s [i]: =s [i] +z [i,j] *y [j] ;
writeln (‘Вывод результатов решения системы уравненй матричным способом’);
for i: =1 to n do write (‘ ‘, s [i]: 5: 2);
writeln (‘ввод матрицы коэффициентов при неизвестных х’);
for i: =1 to N do
for j: =1 to N do
write (‘ введите a [‘, i,’,’,j,’] => ‘);
writeln (‘ввод столбца свободных членов’);
for i: =1 to N do
write (‘ введите b [‘, i,’] => ‘);
writeln (‘введите вариант ‘);
writeln (‘ 1 — решение системы линейных уравнений методом Гаусса ‘);
write (‘ 2 — решение системы линейных уравнений матричным методом => ‘);
http://privetstudent.com/kursovyye/kompiuternye-tekhnologii-kursovye/4172-programmnaya-realizaciya-resheniya-sistem-lineynyh-uravneniy.html
http://www.bestreferat.ru/referat-142074.html