Решение систем линейных уравнений "матричным методом"
Сущность матричного метода. Разработка программы решения системы уравнений линейных алгебраических уравнений методом решения через обратную матрицу на языке программирования Delphi. Представление блок-схемы и графического интерфейса программного продукта.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 27.09.2014 |
Размер файла | 1,0 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Курсовая работа
по междисциплинарному курсу 01.02. Прикладное программирование
Тема: Решение систем линейных уравнений "матричным методом"
СОДЕРЖАНИЕ
ВВЕДЕНИЕ
1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
1.1 Описание метода
1.2 Вывод формул
1.3 Примеры решения систем линейных алгебраических уравнений матричным методом
2. ПРАКТИЧЕСКАЯ ЧАСТЬ
2.1 Блок схема программы
2.2 Разработка интерфейса
2.3 Описание объектов программы
2.4 Тестирование программы
2.5 Руководство пользователя
ЗАКЛЮЧЕНИЕ
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
ПРИЛОЖЕНИЕ А
ВВЕДЕНИЕ
Решение систем линейных алгебраических уравнений (СЛАУ) является одной из основных задач линейной алгебры. Эта задача имеет важное прикладное значение при решении научных и технических проблем. Кроме того, является вспомогательной при реализации многих алгоритмов вычислительной математики, математической физики, обработки результатов экспериментальных исследований. В нашей программе мы реализуем решение систем линейных уравнений "матричным методом".
Сначала выясним смысл решения систем линейных уравнений "матричным методом", выведем формулу для вычисления линейных уравнений. Следом перейдем к решению характерных примеров, снабдим их подробными комментариями.
После проведенного обзора программных средств мы выбрали среду программирования наиболее подходящую нам как очень удобное средство для разработки данного программного продукта. Delphi 7 является наиболее выгодной нам средой программирования.
матричный программирование линейный алгебраический
1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
1.1 Описание метода
Матричный метод решения (метод решения через обратную матрицу) систем линейных алгебраических уравнений с ненулевым определителем состоит в следующем.
Пусть дана система линейных уравнений с -неизвестными (над произвольным полем):
Тогда её можно переписать в матричной форме:
где -- основная матрица системы, и -- столбцы свободных членов и решений системы соответственно:
A = , B = , X =
Умножим это матричное уравнение слева на -- матрицу, обратную к матрице A:
Умножим это матричное уравнение слева на -- матрицу, обратную к матрице A:
Так как , получаем . Правая часть этого уравнения даст столбец решений исходной системы. Условием применимости данного метода (как и вообще существования решения неоднородной системы линейных уравнений с числом уравнений, равным числу неизвестных) является не вырожденность матрицы A. Необходимым и достаточным условием этого является неравенство нулю определителя матрицы A:
.
Для однородной системы линейных уравнений, то есть когда вектор , действительно обратное правило: система имеет нетривиальное (то есть ненулевое) решение только если . Такая связь между решениями однородных и неоднородных систем линейных уравнений носит название альтернативы Фредгольма.
1.2 Ввод формул
Пусть для матрицы А порядка n на n существует обратная матрица . Умножим обе части матричного уравнения слева на (порядки матриц и В позволяют произвести такую операцию, смотрите статью операции над матрицами, свойства операций). Имеем . Так как для операции умножения матриц подходящих порядков характерно свойство ассоциативности, то последнее равенство можно переписать как , а по определению обратной матрицы (E - единичная матрица порядка n на n), поэтому
Таким образом, решение системы линейных алгебраических уравнений матричным методом определяется по формуле Другими словами, решение СЛАУ находится с помощью обратной матрицы .
Мы знаем, что квадратная матрица А порядка n на n имеет обратную матрицу только тогда, когда ее определитель не равен нулю. Следовательно, систему n линейных алгебраический уравнений. С n неизвестными можно решать матричным методом только тогда, когда определитель основной матрицы системы отличен от нуля.
1.3 Примеры решения систем линейных алгебраических уравнений матричным методом
Рассмотрим матричный метод на примерах. В некоторых примерах мы не будем подробно описывать процесс вычисления определителей матриц, при необходимости обращайтесь к статье вычисление определителя матрицы.
Пример.
С помощью обратной матрицы найдите решение системы линейных уравнений .
Решение.
В матричной форме исходная система запишется как , где
.
Вычислим определитель основной матрицы и убедимся, что он отличен от нуля. В противном случае мы не сможем решить систему матричным методом. Имеем
,
следовательно, для матрицы А может быть найдена обратная матрица . Таким образом, если мы отыщем обратную матрицу, то искомое решение СЛАУ определим как . Итак, задача свелась к построению обратной матрицы . Найдем ее.
Мы знаем, что для матрицы обратная матрица может быть найдена как
,
где - алгебраические дополнения элементов a_11,a_12,a_21,a_22
В нашем случае:
Тогда:
Выполним проверку полученного решения , подставив его в матричную форму исходной системы уравнений . Это равенство должно обратиться в тождество, в противном случае где-то была допущена ошибка.
Следовательно, решение найдено верно.
Ответ: или в другой записи .
2. ПРАКТИЧЕСКАЯ ЧАСТЬ
2.1 Блок-схема программы
На рисунке 1 представлена блок-схема программы:
Рисунок 1 - Блок-схема матричного метода
2.2 Разработка интерфейса
Графический интерфейс представляет собой стандартный набор компонентов Delphi. Были использованы компоненты Form, Edit, Label, Button, MainMenu, StringGrid.
Компонент Label предназначен для показа текста на форме нашей программы.
Компонент Edit предназначен для ввода пользовательских данных и представляет собой однострочное поле.
Компонент Button это стандартная кнопка Delphi, кнопка имеет на поверхности надпись (описывающая её назначение при нажатии).
Компонент MainMenu - это не визуальный компонент delphi(место размещения которого на форме не имеет значения для пользователя, так как он увидит не сам компонент, а меню, сгенерированное им), предназначенный для вывода главного меню на форме.
Компонент Form - это важнейший визуальный компонент, который представляет собой видимое окно Windows.
Компонент StringGrid - предназначен для отображения различных данных в табличной форме.
На рисунке 2 отображена начальная форма программы:
Рисунок 2 - Объекты формы
2.3 Описание объектов программы
В таблице №1 представлено описание всех объектов, которые задействованы в программе:
Таблица №1 - Описание объектов:
Объекты |
Описание объекта |
|
Button1 |
Кнопка создания размерности массива. |
|
Button2 |
Кнопка, вычисления метода. |
|
Edit1 |
Ввод размерности. |
|
Label1 |
Надпись для поля StringGrin1. |
|
Label2 |
Надпись для поля StringGrin2. |
|
Label3 |
Надпись для поля Edit1. |
|
StringGrit1 |
Ввод данных. |
|
StringGrit2 |
Вывод данных. |
|
MainMenu |
Главное меню окна программы. |
2.4 Тестирование программы
Пример 1.
В поле Edit1 вводим размерность таблици 3.
Нажмём кнопку "Создать таблицу", в StringGrid1 появится 3 строки и 4 столбца.
В StringGrid1 вводим необходимые значения, как показано в таблице№2
Таблица№2 - Ввод значений:
3 |
2 |
-1 |
4 |
|
2 |
-1 |
5 |
23 |
|
1 |
7 |
-1 |
5 |
Нажимаем кнопку "Выполнить решение", в компонент StringGrid2 получаем результат показаный в таблице№3
Таблица№3 - Вывод значений:
X(1) |
2.000 |
|
X(2) |
1.000 |
|
X(3) |
4.000 |
Для подтверждения этих данных сделаем перевод математическим способом: Сначала убедимся в том, что определитель матрицы из коэффициентов при неизвестных СЛАУ не равен нулю.
=3 - 14 + 10 - 1 - 105 + 4 = - 103;
Теперь вычислим алгебраические дополнения для элементов матрицы, состоящей из коэффициентов при неизвестных. Они нам понадобятся для нахождения обратной матрицы.
Далее найдём союзную матрицу, транспонируем её и подставим в формулу для нахождения обратной матрицы.
Подставляя переменные в формулу, получаем:
Осталось найти неизвестные. Для этого перемножим обратную матрицу и столбец свободных членов.
Итак, x=2; y=1; z=4.
2.5 Руководство пользователя
Открываем каталог практика, и запускаем файл ObrMatP1.exe, откроется главное окно программы (Рисунок 3):
Рисунок 3 - Интерфейс программы
1. В поле Edit1 вводим размерность таблицы;
2. Нажмём на кнопку Button1 "Создать таблицу";
3. В поле StringGrid1 вводим значения;
4. Нажмём на кнопку Button2 "Выполнить решение";
5. В поле StringGrid2 появится результат вычисления;
6. Для дополнительных сведений, нажмите на компонент меню: "Справка";
7. Если необходимо очистить поля для ввода данных, нажмите на компонент меню "Очистить";
8. Если необходимо выйти из формы, нажмите на компонент меню "Выход";
На рисунке 4 показана выполненная программа, в которой введены значения. Выведен результат.
Рисунок 4 - Руководство пользователя
ЗАКЛЮЧЕНИЕ
В данной курсовой работе решена задача решения систем линейных уравнений "матричным методом".
В ходе тестирования был получен результат решения систем линейных уравнений "матричным методом", по которому видно, что результат метода совпадает с достаточной точностью.
Программа является полностью работоспособной, что подтверждается результатами её тестированием.
Данная программа была написана на языке Delphi 7.0. При разработке программы были учтены все требования к программе и выполнены в полной мере.
При разработке данной программы я закрепил знания по программированию в среде Delphi 7.0, также получил некоторые новые знания при разработке этой программы.
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
1. Абрамовица М. Справочник по специальным формулам и функциям / М. Абрамовица, И. Стиган. - М.: Наука, 2010. - 832 с.
2. Боглаев Ю.П. Вычислительная математика и программирование / Ю.П. Боглаев. - М.: Высшая школа, 2011. - 554 с.
3. Березин И.С., Жидков Н.П. Методы вычислений т.2 / И.С. Березин.- М.: Физматгиз, 2012.- 264 с.
4. Вычислительная математика / Н.И. Данилина, Н.С. Дубровская, О.П. Кваша, Г.С. Смирнов. - М.: Высшая школа, 2011.- 472 с.
5. Гаврилов М.В. Информатика и ИТ: учебное пособие / М.В. Гаврилов. - М: Гардарик, 2010. - 656 с.
6. Данилина Н.И., Дубровская Н.С. Численные методы для техникумов / Н.И. Данилина, Н.С. Дубровская. - М.: Высшая школа, 2012. - 368 с.
7. Демидович Б.П. Основы вычислительной математики / Б.П. Демидович, И.А. Марон. - М.: Наука, 2011. - 664 с.
8. Киреев В.И., Пантелеев А.В. Численные методы в примерах и задачах / В.И. Киреев, А.В. Пантелеев. - М.: Высшая школа, 2010. - 480 с.
9. Кузнецов В.В. Основы объектно-ориентированного программирования в Delphi: учебное пособие / В.В. Кузнецов, И.В. Абдрашитова. - Томск: ТУСУР, 2010. - 180 с.
10. Марчук Г.И. Методы вычислительной математики / Г.И. Марчук.- М.: Наука, 2010. - 456 с.
11. Поршнев С.В. Вычислительная математика. Курс лекций / С.В. Поршнев. - С-Пб.: БХВ-Петербург, 2012.- 320 с.
12. Пирумов У.Г. Численные методы / У.Г. Пирумов. - М.: Издательство МАИ, 2010. - 188 с.
13. Т Сухарев М.В. Delphi. Профессиональный подход: учебное пособие для студентов среднего профессионального образования / М.В.Сухарев. - М.: Наука и техника, 2010. - 600 с.
14. Тимошевская Н.Е. Основы алгоритмизации и программирования: учебное пособие / Н.Е. Тимошевская, Е.А. Перышкина. - Томск: ТУСУР, 2010. - 135 с.
15. Мальцев А. И. Основы линейной алгебры. М.: Наука, 2010.
ПРИЛОЖЕНИЕ А
unit ObrMatU1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls, XPMan, Menus;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Label1: TLabel;
Tab1: TStringGrid;
Label2: TLabel;
XPManifest1: TXPManifest;
Tab2: TStringGrid;
Label5: TLabel;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses ObrMatM, Unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var n,col,row:integer;
begin
n:=strtoint(edit1.Text);
tab1.ColCount:=n+1; // Колонки в таблице
tab1.RowCount:=n; // Количество строк в таблице
tab2.ColCount:=2; // Колонки в таблице
tab2.RowCount:=n; // Количество строк в таблице
col:=0;
for row:=0 to n do
begin
tab2.Cells[col,row]:='X('+inttostr(row+1)+')';
end; end;
procedure TForm1.Button2Click(Sender: TObject);
var a,b,c:Tmatrix;f,x:Tmass;
det:Real;
n,k,j:integer;
begin
n:=strtoint(edit1.Text);
Setlength(a,n,n); //транспонированная матрица A
for k:=0 to n-1 do
for j:=0 to n-1 do begin
a[k,j]:=strtofloat(Tab1.Cells[k,j]);
end;
Setlength(b,n,n);//присоединенная матрица В
Peresch(n,a,b); // вычисление присоединенной матрицы
Setlength(c,n,n); //обратная матрица С
for k:=0 to n-1 do
for j:=0 to n-1 do
begin
c[k,j]:=strtofloat(Tab1.Cells[j,k]);//исходная матрица
end;
Opr(n,det,c);//вычисление определителя
if c[n-1,n-1]=0 then Showmessage('Обратная матрица не существует');
for k:=0 to n-1 do
for j:=0 to n-1 do
begin
b[k,j]:=b[k,j]/det;//деление на определитель
end;
//нахождение корней
Setlength(f,n);//массив сободных членов
for k:=0 to n-1 do begin
f[k]:=strtofloat(Tab1.Cells[n,k]);
end;
Setlength(x,n);//массив корней
Resh(n,b,f,x);//нахождение корней
for j:=0 to n-1 do
begin
tab2.Cells[1,j]:=floattostrF(x[j],ffFixed,5,3);
end; end;
procedure TForm1.N1Click(Sender: TObject);
begin
Form2.Showmodal;
end;
procedure TForm1.N2Click(Sender: TObject);
var i: Integer;
begin
for i := 0 to Tab1.ColCount - 1 do Tab1.Cols[i].Clear;
for i := 0 to Tab2.ColCount - 1 do Tab2.Cols[i].Clear;
Edit1.Clear;
end;
procedure TForm1.N3Click(Sender: TObject);
begin Form1.Close; end;
end.
Размещено на Allbest.ru
Подобные документы
Проектирование приложения, позволяющего находить решение системы алгебраических линейных уравнений матричным методом. Выбор количества уравнений, заполнение значений коэффициентов системы уравнений и свободных членов, алгоритм решения линейных уравнений.
курсовая работа [939,4 K], добавлен 16.01.2014Разработка программного продукта на языке Delphi 7.0. Матричный метод решения однородных и неоднородных систем линейных уравнений. Разработка интерфейса. Тестирование и описание объектов программы. Описание процесса вычисления определителей матриц.
курсовая работа [366,1 K], добавлен 04.02.2015Решение систем алгебраических линейных уравнений методом Крамера. Сущность метода прогонки. Программная реализация метода: блок-схема алгоритма, листинг программы. Проверка применимости данного способа решения для конкретной системы линейных уравнений.
курсовая работа [581,0 K], добавлен 15.06.2013Общее понятие о линейных уравнениях и их системах. Разработка программного продукта в среде Delphi 7 для решения методом Крамера квадратных систем линейных алгебраических уравнений с ненулевым определителем основной матрицы. Описание конкретных примеров.
курсовая работа [193,7 K], добавлен 07.07.2013Преобразование матрицы системы линейных алгебраических уравнений (СЛАУ) с помощью алгоритма Гаусса. Решение задачи методом простой итерации. Создание блок-схемы и текста программы для решения СЛАУ, реализованной на языке программирования Turbo Pascal.
курсовая работа [1,2 M], добавлен 15.06.2013Системы линейных алгебраических уравнений. Матричный метод решения систем линейных уравнений. Решение задачи математическим методом. Блок-схема алгоритма и листинг программы. Расчет трудоемкости разработки программы. Расчет себестоимости и цены программы.
дипломная работа [144,8 K], добавлен 25.04.2012Системы линейных алгебраических уравнений. Код программы для решения систем линейных алгебраических уравнений. Математические и алгоритмические основы решения задачи методом Гаусса. Программная реализация решения. Алгоритмы запоминания коэффициентов.
лабораторная работа [23,5 K], добавлен 23.09.2014Метод Гаусса-Зейделя как модификация метода Якоби, его сущность и применение. Разработка программы решения системы линейных алгебраических уравнений на языке VB, проверка правильности работы программы в MS Excel и математических пакетах MathCad и MatLab.
курсовая работа [325,5 K], добавлен 27.10.2013Алгоритм решения систем линейных уравнений методом Гаусса, его этапы. Система уравнений для определения коэффициентов сплайна, представляющая собой частный случай систем линейных алгебраических уравнений. Программная реализация, тестовый пример.
курсовая работа [431,8 K], добавлен 15.06.2013Сущность и особенности языка программирования Си. Основные этапы алгоритма решения системы линейных алгебраических уравнений методом Гаусса, реализация программы для их расчета. Инструкции пользователя и программиста. Тестирование функции решения.
курсовая работа [153,9 K], добавлен 18.02.2013