Решение системы линейных уравнений методом Крамера
Определение метода решения квадратной системы линейных алгебраических уравнений. Разбор языковых средств в системе Крамера и Гаусса. Блок-схема программы и характеристика ее компонентов и переменных. Описание принципа работы созданной программы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 06.07.2016 |
Размер файла | 163,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
РОССИЙСКОЙ ФЕДЕРАЦИИ
ФГБОУ ВПО «ХАКАССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИМЕНИ Н.Ф. КАТАНОВА»
ИНСТИТУТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ И
ИНЖЕНЕРНОГО ОБРАЗОВАНИЯ
КУРСОВАЯ РАБОТА
по дисциплине «ПРОГРАММИРОВАНИЕ»
ТЕМА: Решение системы линейных уравнений методом Крамера
Разработал
студент гр. 25
Гаврилов .Ю.В.
Руководитель:
Доценткаф. ПОВТиАС, к.ф.-м.н.
СанниковЕ.В.
Абакан, 2016
Введение
Матрицы служат для решения уравнений в математики и в решении задач на движения в физики.
На практике в большинстве случаев найти точной решение возникшей математической задачи не удается. Это происходит главным образом не потому, что мы не умеем этого сделать, а поскольку искомое решение обычно не выражается в привычных для нас элементарных или других известных функциях. Поэтому большое значение приобрели численные методы, особенно в связи с возрастанием роли математических методов в различных областях науки и техники и с появлением высокопроизводительных ЭВМ. Это и стало целью курсовой работы, разработать программу, решающую системы линейных уравнений методом Крамера. программа линейный алгебраический уравнение
Цельразработать программу для решения систем уравнений методом Крамера
В ходе выполнения курсовой работы были поставленные следующие задачи:
1. Изучить решение систем линейных уравнений методом Крамера;
2. Создания алгоритма;
3. Выбор языков программирования;
4. Создание программы
Актуальность данной курсовой работы представлена тем что вычислениес помощью данной программы поможет сэкономить время.
В данной курсовой работе первой части представлен разбор метода решения систем линейных уравнений также разбор языковых средств и выбор подходящего. Во второй части представлена разработка алгоритма и процесс создания программы;А также заключение описание и список литературы.
1. Теоретическая часть
1.1 Метод решения линейных уравнений
Квадратная система линейных уравнений -- система, у которой количество уравнений совпадает с числом неизвестных (m=n). Система, у которой число неизвестных больше числа уравнений является не доопределённой, такие системы линейных алгебраических уравнений также называютсяпрямоугольными. Если уравнений больше, чем неизвестных, то система является переопределённой.[1]
Методы решения
Прямые методы дают алгоритм, по которому можно найти точное решение систем линейных алгебраических уравнений. Итерационные методы основаны на использовании повторяющегося процесса и позволяют получить решение в результате последовательных приближений.
Некоторые прямые методы:
1. Метод Гаусса -- классический метод решения системы линейных алгебраических уравнений (СЛАУ). Это метод последовательного исключения переменных, когда с помощью элементарных преобразований система уравнений приводится к равносильной системе треугольного вида, из которой последовательно, начиная с последних (по номеру), находятся все переменные системы.
2. Метод Гаусса -- (метод полного исключения неизвестных) -- метод, который используется для решения квадратных систем линейных алгебраических уравнений, нахождения обратной матрицы, нахождения координат вектора в заданном базисе или отыскания ранга матрицы. Метод является модификацией метода Гаусса. Назван в честь К. Ф. Гаусса и немецкого геодезиста и математика Вильгельма Йордана.
Текст отформатируй везде размер 14, кроме: титульника, задания, рецензии и приложения
3. Метод Крамера-- способ решения систем линейных алгебраических уравнений с числом уравнений равным числу неизвестных с ненулевым главным определителем матрицы коэффициентов системы (причём для таких уравнений решение существует и единственно).
4. Метод прогонки (для трёхдиагональных матриц) или алгоритм Томаса используется для решения систем линейных уравнений вида Ax=F, где A -- трёхдиагональная матрица. Представляет собой вариант метода последовательного исключения неизвестных. Метод прогонки был предложен И. М. Гельфандом и О. В. Локуциевским (в 1952 году; опубликовано в 1960 и 1962 годах), а также независимо другими авторами.
Разложение Холецкого или метод квадратных корней (для положительно-определённых симметричных и эрмитовых матриц)
5. Метод вращений
Системы линейных уравнений широко используются в задачах экономики в химии и физике в основном в задачах на движение.
Самый подходящий способ решения это метод Крамера так как это маиый простой и удобный метод решений систем уравнений.
К решению систем линейных уравнений сводятся многочисленные практические задачи. Можно с полным основанием утверждать, что решение линейных систем является одной из самых распространенных и важных задач вычислительной математики.[2]
Общий вид системы линейных алгебраических уравнений
Совокупность коэффициентов этой системы запишем в виде таблицы:
Совокупность коэффициентов
Запишем систему n линейных алгебраических уравнений с n неизвестными.
Данная таблица n2 элементов, состоящая из n строк и n столбцов, называется квадратной матрицей порядка n. Если подобная таблица содержит nm элементов, расположенных в n строках и m столбцах, то она называется прямоугольной матрицей.
Используя понятие матрицы А, систему уравнений можно записать в векторно-матричном виде:
,
Матричный вид уравнения
или, в более компактной записи,
Компактный матричный вид
где х и b -- вектор-столбец неизвестных и вектор-столбец правых частей соответственно.
Метод Крамера Алгоритм Крамера, выражается формулами:
Нахождения х1…хn
Алгоритм Крамера для нахождения detA1
Алгоритм Крамера для нахождения detA2
Алгоритм Крамера для нахождения detAn
При этом необходимым и достаточным условием существование единственного решения, является не равенство нулю главного определителя системы .[3]
1.2 Разбор языковых средств
Перед тем как начать разработку следует выбрать подходящий язык программирования разберём наиболее популярные из них.
1 C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java. Язык имеет статическую типизацию, поддерживает полиморфизм, перегрузку операторов (в том числе операторов явного и неявного приведения типа), делегаты, атрибуты, события, свойства, обобщённые типы и методы, итераторы, анонимные функции с поддержкой замыканий, LINQ, исключения, комментарии в форматеXML.[4]
2 Java -- объектно-ориентированный язык программирования, разработанный компанией SunMicrosystems. Приложения Java обычно транслируются в специальный байт-код, поэтому они могут работать на любой виртуальной Java-машине вне зависимости от компьютерной архитектуры.[5]
3 C++ -- компилируемый, статически типизированный язык программирования общего назначения.
Поддерживает такие парадигмы программирования, как процедурное программирование, объектно-ориентированное программирование, обобщённое программирование, обеспечивает модульность, раздельную компиляцию, обработку исключений, абстракцию данных, объявление типов (классов) объектов, виртуальные функции.[6]
Для написания программы был выбран язык программирывания высокого уровня Pascal.
Система PascalABS имеет современный пользовательский интерфейс, с необходимыми программисту инструментами, такими как редактор, поиск, отладчик и т.п. С другой стороны система лишена излишеств (отвлекающих начинающих программистов и вводящих в заблуждение), таких как сложные настройки интерфейса, компилятора и среды.
Pascal ABC поддерживает создание нескольких типов приложений типы приложений:
Консольные приложения, графические приложения, приложения для электронного задачника, приложения для Исполнителя Робот, приложения для Исполнителя Чертежник и большое количество модулей. [7]
2. Практическая часть
2.1 Блок-схема программы
Блок-схема --распространенный тип схем (графических моделей), описывающих алгоритмы или процессы, в которых отдельные шаги изображаются в виде блоков различной формы, соединенных между собой линиями, указывающими направление последовательности.
2.2 Описание компонентов, переменных программы
Вводим размерность матрицы n потом по очерёдно коэффициенты при неизвестных a[i;j] следующим этапом вводим свободный член b[i;j] и получаем решение системы x1,x2..xn
2.3 Описание работы программы
На следующих скриншотах будет представлена работа программы.
Рис.1. Начало работы программы ввод размера матрицы
Рис.2. Ввод данных вводим коэффициенты при неизвестных
Рис.3. Ввод данных вводим свободные члены
Рис.4. Получаем ответ системы уравнений
Program n_2;
usescrt;
var a:array [1..10,1..10] of integer;
b:array [1..4] of integer;
c:array [1..3,1..3] of integer;
f:array [1..3] of integer;
i,j,k,l,n:integer;
d,d1,d2,d3,d4:integer;
x1,x2,x3,x4,z:real;
begin
z:=0.0001;
clrscr;
writeln('Введите n = {2,3,4} ');
readln(n);
//если матрица 2*2 или 3*3
if (n = 2) or (n=3) then
begin
writeln('Введите ',n ,'коэффицентов при неизвестных:');
for i:=1 to n do
for j:=1 to n do
begin
write('a[',i,',',j,']=');
readln(a[i,j]);
end;
writeln('Введите ,',n ,'свободных членов:');
for i:=1 to n do
begin
write('b[',i,']=');
readln(b[i]);
end;
//Находим дельта
writeln('Расширенная матрица коэффициентов:');
for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j]:4);
writeln(b[i]:6);
end;
writeln;
d:= a[1,1]*a[2,2]*a[3,3]+a[1,2]*a[2,3]*a[3,1]+a[2,1]*a[3,2]*a[1,3]-a[1,3]*a[2,2]*
a[3,1]-a[1,2]*a[2,1]*a[3,3]-a[1,1]*a[2,3]*a[3,2];
if d<z then
begin
write('Матрицалинейнозависима');
readln;
exit
end;
d1:=b[1]*a[2,2]*a[3,3]+a[1,3]*a[3,2]*b[2]+a[1,2]*a[2,3]*b[3]-a[1,3]*a[2,2]*b[3]-
a[2,3]*a[3,2]*b[1]-a[1,2]*a[3,3]*b[2];
d2:=a[1,1]*b[2]*a[3,3]+a[2,1]*b[3]*a[1,3]+a[2,3]*a[3,1]*b[1]-a[1,3]*b[2]*a[3,1]-
b[3]*a[2,3]*a[1,1]-b[1]*a[2,1]*a[3,3];
d3:=a[1,1]*a[2,2]*b[3]+a[2,1]*a[3,2]*b[1]+a[1,2]*b[2]*a[3,1]-a[2,2]*a[3,1]*b[1]-
a[3,2]*b[2]*a[1,1]-a[2,1]*a[1,2]*b[3];
x1:=d1/d;
x2:=d2/d;
x3:=d3/d;
writeln('x1=',x1:0:2);
writeln('x2=',x2:0:2);
writeln('x3=',x3:0:2);
readkey;
end
else
//решение для матрицы 4*4
if n=4 then
begin
writeln('Введите ',n ,'коэффицентов при неизвестных:');
for i:=1 to n do
for j:=1 to n do
begin
write('a[',i,',',j,']=');
readln(a[i,j]);
end;
writeln('Введите ,',n ,'свободных членов:');
for i:=1 to n do
begin
write('b[',i,']=');
readln(b[i]);
end;
for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j]:4);
writeln(b[i]:6);
end;
writeln;
d:= a[1,1]*a[2,2]*a[3,3]*a[4,4]+a[1,2]*a[2,3]*a[3,4]*a[4,1]+a[2,1]*a[3,2]*a[4,3]*a[1,4]+a[1,3]*a[2,4]*a[4,2]*a[3,1]-a[1,4]*a[2,3]*
a[3,2]*a[4,1]-a[1,3]*a[2,2]*a[3,1]*a[4,4]-a[4,2]*a[3,3]*a[2,4]*a[1,1]-a[2,1]*a[1,2]*a[4,3]*a[3,4];
if d<z then
begin
write('Матрицалинейнозависима');
readln;
exit
end;
d1:=b[1]*a[2,2]*a[3,3]*a[4,4]+a[1,2]*a[2,3]*a[3,4]*b[4]+b[2]*a[3,2]*a[4,3]*a[1,4]+a[1,3]*a[2,4]*a[4,2]*b[3]-a[1,4]*a[2,3]*
a[3,2]*b[4]-a[1,3]*a[2,2]*b[3]*a[4,4]-a[4,2]*a[3,3]*a[2,4]*b[1]-a[2,1]*a[1,2]*a[4,3]*a[3,4];
d2:=a[1,1]*b[2]*a[3,3]*a[4,4]+b[1]*a[2,3]*a[3,4]*a[4,1]+a[2,1]*b[3]*a[4,3]*a[1,4]+a[1,3]*a[2,4]*b[4]*a[3,1]-a[1,4]*a[2,3]*
b[3]*a[4,1]-a[1,3]*b[2]*a[3,1]*a[4,4]-b[4]*a[3,3]*a[2,4]*a[1,1]-a[2,1]*b[1]*a[4,3]*a[3,4];
d3:=a[1,1]*a[2,2]*b[3]*a[4,4]+a[1,2]*b[2]*a[3,4]*a[4,1]+a[2,1]*a[3,2]*b[4]*a[1,4]+b[1]*a[2,4]*a[4,2]*a[3,1]-a[1,4]*b[2]*
a[3,2]*a[4,1]-b[1]*a[2,2]*a[3,1]*a[4,4]-a[4,2]*b[3]*a[2,4]*a[1,1]-a[2,1]*a[1,2]*b[4]*a[3,4];
d4:= a[1,1]*a[2,2]*a[3,3]*b[4]+a[1,2]*a[2,3]*b[3]*a[4,1]+a[2,1]*a[3,2]*a[4,3]*b[1]+a[1,3]*b[2]*a[4,2]*a[3,1]-b[1]*a[2,3]*
a[3,2]*a[4,1]-a[1,3]*a[2,2]*a[3,1]*b[4]-a[4,2]*a[3,3]*b[2]*a[1,1]-a[2,1]*a[1,2]*a[4,3]*b[3];
x1:=round(d1/d);//округляет
x2:=round(d2/d);
x3:=round(d3/d);
x4:=round(d4/d);
writeln('x1=',x1:0:2);
writeln('x2=',x2:0:2);
writeln('x3=',x3:0:2);
writeln('x4=',x4:0:2);
readkey;
end;
writeln('Введите коэффиценты при неизвестных:');
for i:=1 to 3 do{????}
for j:=1 to 3 do
begin
write('a[',i,',',j,']=');
readln(a[k,l]);
end;
writeln('Введите свободные члены:');
for i:=1 to n do
begin
write('b[',i,']=');
readln(b[i]);
end;
clrscr;
writeln('Расширенная матрица коэффициентов:');
for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j]:4);
writeln(b[i]:6);
end;
writeln;
d:=a[1,1]*a[2,2]-a[1,2]*a[2,1];
if d<z then
begin
write('Матрицалинейнозависима');
readln;
exit
end;
d1:=b[1]*a[2,2]-a[1,2]*b[2];
d2:=a[1,1]*b[2]-a[2,1]*b[1];
x1:=d1/d;
x2:=d2/d;
writeln('x1=',x1:0:2);
writeln('x2=',x2:0:2);
readkey;
end.
Заключение
Выполнение курсовой работы позволило более подробно изучить среду программирования Pascal ABC.
В работе, мною был программно-реализован метод Крамера для решения системы линейных уравнений. Было использовано необходимое условие существования решения, т.е. не равенство нулю главного определителя системы.Отличительная черта этого метода заключается в неоднократном вычислении определителя матрицы. С вычислительной точки зрения это трудоемкая операция с ростом количества элементов. В работе была рассмотрена система 4-го, 3-го, и 2-го порядка, а определители вычислялись непосредственно.
Список литературы
1. С.А. Агофонов Методы решения линейные уравнения
2. В.С Шипачев«высшая математика для ВУЗов »
3. А.П. Рябушко «сборник индивидуальных заданий по высшей математике: учебное пособие», высшая школа, 1 часть, 2006
4. Джеффирсон Рихтер программирывание на языке С#
5. Герберт ШилдтJavaполное руководство
6. Т.А. Павловская с++ программирование на языке высокого уровня, санкт-петербург, ид «питер», 2009
7. В. Камаев «технология программирования»
8. В.Г. Абрамянов, Н.П. Трифонов введение в язык pascal
Размещено на Allbest.ru
...Подобные документы
Решение систем алгебраических линейных уравнений методом Крамера. Сущность метода прогонки. Программная реализация метода: блок-схема алгоритма, листинг программы. Проверка применимости данного способа решения для конкретной системы линейных уравнений.
курсовая работа [581,0 K], добавлен 15.06.2013Разработка программы для решения системы линейных уравнений методом Крамера и с помощью расширенной матрицы на языке С++. Описание метода Крамера. Структура программы: заголовочные файлы, типы данных, переменные, идентификаторы, операторы, массивы.
курсовая работа [32,3 K], добавлен 19.01.2009Использование MS Excel для математических расчетов. Описание численных методов решения системы линейных алгебраических уравнений. Решение систем линейных алгебраических уравнений с методами Крамера и Зейделя и с помощью табличного процессора MS Excel.
курсовая работа [1,6 M], добавлен 14.02.2021Общее понятие о линейных уравнениях и их системах. Разработка программного продукта в среде Delphi 7 для решения методом Крамера квадратных систем линейных алгебраических уравнений с ненулевым определителем основной матрицы. Описание конкретных примеров.
курсовая работа [193,7 K], добавлен 07.07.2013Требования к языкам программирования, их эффективность, лаконичность, ясность, реальные возможности. Создание языка С#. Применение систем линейных алгебраических уравнений для практических задач, сущность и особенности метода Крамера для их решения.
курсовая работа [118,1 K], добавлен 13.11.2009Системы линейных алгебраических уравнений. Матричный метод решения систем линейных уравнений. Решение задачи математическим методом. Блок-схема алгоритма и листинг программы. Расчет трудоемкости разработки программы. Расчет себестоимости и цены программы.
дипломная работа [144,8 K], добавлен 25.04.2012Этапы развития языков программирования. Способы решения системы линейных алгебраических уравнений методом Крамера, рассмотрение особенностей. Анализ языка программирования С++. С # как прямой потомок двух самых успешных в мире компьютерных языков.
курсовая работа [770,2 K], добавлен 27.01.2013Приведение системы линейных алгебраических уравнений к треугольному виду прямым ходом метода Гаусса. Применение обратного хода метода вращений. Создание алгоритма, блок-схемы и кода программы. Тестовый пример решения уравнения и его проверка в MathCad.
лабораторная работа [164,3 K], добавлен 02.10.2013Системы линейных алгебраических уравнений. Код программы для решения систем линейных алгебраических уравнений. Математические и алгоритмические основы решения задачи методом Гаусса. Программная реализация решения. Алгоритмы запоминания коэффициентов.
лабораторная работа [23,5 K], добавлен 23.09.2014История развития алгоритмических языков. Создание языка С++. Разработка программы в Visual C++ для решения линейных уравнений методом Крамера. Структура данных, этапы тестирования программного обеспечения на работоспособность и корректность расчетов.
курсовая работа [390,0 K], добавлен 29.12.2014Метод Гаусса-Зейделя как модификация метода Якоби, его сущность и применение. Разработка программы решения системы линейных алгебраических уравнений на языке VB, проверка правильности работы программы в MS Excel и математических пакетах MathCad и MatLab.
курсовая работа [325,5 K], добавлен 27.10.2013Сущность матричного метода. Разработка программы решения системы уравнений линейных алгебраических уравнений методом решения через обратную матрицу на языке программирования Delphi. Представление блок-схемы и графического интерфейса программного продукта.
курсовая работа [1,0 M], добавлен 27.09.2014Сферы использования компьютеров, сущность и языки программирования. Применение модифицированного метода Гаусса и расширенной матрицы для решения системы линейных алгебраических уравнений (СЛАУ). Разработка программы, системные требования для ее работы.
курсовая работа [657,1 K], добавлен 09.01.2014Применение итерационных методов численного решения системы линейных алгебраических уравнений при вычислении на ЭВМ. Математические и алгоритмические основы решения задачи, метод Гаусса. Функциональные модели и блок-схемы, программная реализация решения.
курсовая работа [527,5 K], добавлен 25.01.2010Преобразование матрицы системы линейных алгебраических уравнений (СЛАУ) с помощью алгоритма Гаусса. Решение задачи методом простой итерации. Создание блок-схемы и текста программы для решения СЛАУ, реализованной на языке программирования Turbo Pascal.
курсовая работа [1,2 M], добавлен 15.06.2013Сущность метода Гаусса при решении систем линейных уравнений. Элементарные преобразования этого метода. Краткое описание среды визуальной разработки Delphi. Описание основных применяемых процедур и алгоритм роботы программы по решению уравнений.
курсовая работа [1,1 M], добавлен 29.08.2010Постановка задачи, математические и алгоритмические основы решения системы линейных алгебраических уравнений. Решение системы данных уравнений методом Гаусса с выбором главного элемента по столбцу. Функциональные модели и блок-схемы решения задачи.
курсовая работа [428,9 K], добавлен 25.01.2010Использование метода Зейделя для нахождения корней системы линейных алгебраических уравнений. Суть метода простых итераций. Оценка погрешности нормальной системы. Составление алгоритма, блок-схемы и кода программы. Тестовый пример и проверка в MathCad.
лабораторная работа [174,8 K], добавлен 02.10.2013Метод Гаусса как прямой метод нахождения решений для систем системы линейных уравнений маленькой и средней размерности с помощью компьютерной техники. Редактор кода и исходный код основной программы в Delphi, блок-схема и графическое решение задачи.
контрольная работа [460,8 K], добавлен 15.06.2015Матричная форма записи системы линейных уравнений, последовательность ее решения методом исключений Гаусса. Алгоритмы прямого хода и запоминания коэффициентов. Решение задачи о сглаживании экспериментальных данных с помощью метода наименьших квадратов.
курсовая работа [610,7 K], добавлен 25.06.2012