Решение систем линейных уравнений методом крамера программирование
Обновлено
Поделиться
Программная реализация метода Крамера
Программу на C++, решающую системы линейных уравнений методом Крамера, удобно реализовать с функциями для вычисления определителя системы и определителя при неизвестных.
Рассмотрим вариант программы, решающей методом Крамера системы из трёх линейных уравнений с тремя неизвестными. В ней требуется объявить четыре функции: одна (determinant) вычисляет определитель системы, а три (determinantX1, determinant X2, determinantX3) вычисляют определители при неизвестных.
Как и положено при объявлении функций, укажем в них формальные параметры — массивы, хранящие значения определителя системы и определителей при неизвестных. Те же формальные параметры указываются и при описании функций (в конце программы, после функции main). Тело каждой функции содержит и запись математических операций вычисления определителей.
А в вызове функций указываются уже фактические параметры — массивы, храняющие перечисленные данные, но уже состоящие из значений, введённых пользователем.
Далее всё предельно просто: в функции main вычисляются и выводятся значения неизвестных как результаты деления определителей при неизвестных на определитель системы, как и должно быть при решении систем линейных уравнений методом Крамера.
Код C++
По тому же алгоритму несложно уже написать программу, вычисляющую мотодом Крамера системы их двух линейных уравнений с двумя неизвестными, а также вариант программы с ветвлением на случаи систем 2х2 и 3х3.
Видео:Метод Крамера за 3 минуты. Решение системы линейных уравнений - bezbotvyСкачать
Курсовая работа: Решение системы линейных алгебраических уравнений методом Крамера
Название: Решение системы линейных алгебраических уравнений методом Крамера Раздел: Рефераты по информатике Тип: курсовая работа Добавлен 14:23:38 18 июня 2010 Похожие работы Просмотров: 950 Комментариев: 21 Оценило: 2 человек Средний балл: 5 Оценка: неизвестно Скачать
РЕШЕНИЕ СИСТЕМЫ ЛИНЕЙНЫХ АЛГЕБРАИЧЕСКИХ УРАВНЕНИЙ МЕТОДОМ КРАМЕРА
2. Постановка задачи
3. Метод Крамера
4. Программная реализации алгоритма метода Крамера
Список использованных источников
На практике в большинстве случаев найти точной решение возникшей математической задачи не удается. Это происходит главным образом не потому, что мы не умеем этого сделать, а поскольку искомое решение обычно не выражается в привычных для нас элементарных или других известных функциях. Поэтому большое значение приобрели численные методы, особенно в связи с возрастанием роли математических методов в различных областях науки и техники и с появлением высокопроизводительных ЭВМ.
В настоящей курсовой работе рассмотрена важная, с точки зрения прикладных задач: метод Крамера для решение линейных алгебраических уравнений.
Зачастую слишком многого требований от инструментов, с которыми работаем, особенно, когда это касается языков программирования. Хотя таких языков существует великое множество, но только некоторые из них по-настоящему сильны. Эффективность языка заключается в его мощности и одновременно — в гибкости. Синтаксис языка должен быть лаконичным, но ясным. Он должен способствовать созданию корректного кода и предоставлять реальные возможности, а не ультрамодные (и, как правило, тупиковые) решения. Наконец, мощный язык должен иметь одно нематериальное качество: вызывать ощущение гармонии. Как раз таким языком программирования и является С#. Созданный компанией Microsoft для поддержки среды .NET Framework, язык С# опирается на богатое наследие в области программирования. Его главным архитектором был ведущий специалист в этой области — Андерс Хейлсберг (Anders Hejlsberg).
С# -— прямой потомок двух самых успешных в мире компьютерных языков: С и C++. От С он унаследовал синтаксис, ключевые слова и операторы. Он позволяет построить и усовершенствовать объектную модель, определенную в C++. Кроме того, С# близко связан с другим очень успешным языком: Java. Имея общее происхождение, но различаясь во многих важных аспектах, С# и Java — это скорее «двоюродные братья». Например, они оба поддерживают программирование распределенных систем и оба используют промежуточный код для достижения переносимости, но различаются при этом в деталях реализации. Опираясь на мощный фундамент, который составляют унаследованные характеристики, С# содержит ряд важных новшеств, поднимающих искусство программирования на новую ступень. Например, в состав элементов языка С# включены такие понятия, как делегаты (представители), свойства, индексаторы и события. Добавлен также синтаксис, который поддерживает атрибуты; упрощено создание компонентов за счет исключения проблем, связанных с COM (Component Object Model — модель компонентных объектов Microsoft — стандартный механизм, включающий интерфейсы, с помощью которых объекты предоставляют свои службы другим объектам).
И еще. Подобно Java язык С# предлагает средства динамического обнаружения ошибок, обеспечения безопасности и управляемого выполнения программ. Но, в отличие от Java, C# дает программистам доступ к указателям. Таким образом, С# сочетает первозданную мощь C++ с типовой безопасностью Java, которая обеспечивается наличием механизма контроля типов (type checking) и корректным использованием шаблонных классов (template class). Более того, язык С# отличается тем, что компромисс между мощью и надежностью тщательно сбалансирован и практически прозрачен (не заметен для пользователя или программы).
На протяжении всей истории развития вычислительной техники эволюция языков программирования означала изменение вычислительной среды, способа мышления программистов и самого подхода к программированию. Язык С# не является исключением. В непрекращающемся процессе усовершенствования, адаптации и внедрения нововведений С# в настоящее время находится на переднем крае. Это — язык, игнорировать существование которого не может ни один профессиональный программист.
2. Постановка задачи
К решению систем линейных уравнений сводятся многочисленные практические задачи. Можно с полным основанием утверждать, что решение линейных систем является одной из самых распространенных и важных задач вычислительной математики [1,2].
(1)
Совокупность коэффициентов этой системы запишем в виде таблицы:
Запишем систему n линейных алгебраических уравнений с n неизвестными.
Данная таблица n 2 элементов, состоящая из n строк и n столбцов, называется квадратной матрицей порядка n . Если подобная таблица содержит nm элементов, расположенных в n строках и m столбцах, то она называется прямоугольной матрицей.
Используя понятие матрицы А , систему уравнений (3) можно записать в векторно-матричном виде:
,
или, в более компактной записи,
где х и b — вектор-столбец неизвестных и вектор-столбец правых частей соответственно.
3. Метод Крамера
Алгоритм Крамера, согласно [1,2], выражается формулами
где
…,
При этом необходимым и достаточным условием существование единственного решения, является не равенство нулю главного определителя системы
.
Блок-схема алгоритма представлена на рисунке.
4. Программная реализации алгоритма МЕТОДА КРАМЕРА
Основным методом класса Programm, является метод Main. С него начинается выполнение программы. В нашем случае, он содержит простейший пользовательский интерфейс, по средством которого пользователь вводит размерность системы, элементы матрицы системы А и вектора правых частей b (1, глава 1), а после необходимых вычислений на экране появляется результат – элементы вектора x .
В работе, алгоритм Крамера для большей читабельности, разбит на отдельные функции – методы:
staticdoubledet(intn, double [,]B) – метод вычисляющий определитель матрицы. Параметрами этого метода являются – количество уравнений (n ), а так же матрица, в нашем случае B . Определитель матрицы вычисляется непосдедственно, т.е. разложением по первой строке [3];
staticvoidequal(intn, double [,]A, double [,]B) – метод присваивающий матрицы (), где n -размерность матриц;
staticintSLAU_kramer(intn, double[,] A, double[] b, double[] x) – метод реализующий метод Крамера, согласно блок схеме главы 2.
В качестве языка программирования мы использовали объектно – ориентированный язык С#. Наш выбор обусловлен его гибкостью в разработке и создании программых продуктов 7.
Текст программы приведет ниже.
static void Main(string[] args)
int n; /* количество уравнений */
double [,] A = new double [3,3]; /* матрица системы */
double [] b = new double [3]; /* вектор правых частей */
double [] x = new double [3]; /* вектор решения */
Видео:Решение систем линейных алгебраических уравнений методом Крамера.Скачать
Привет студент
ПРОГРАММНАЯ РЕАЛИЗАЦИЯ РЕШЕНИЯ СИСТЕМ ЛИНЕЙНЫХ УРАВНЕНИЙ
Приднестровский государственный университет им. Т.Г. Шевченко
Кафедра программного обеспечения вычислительной техники
и автоматизированных систем
КУРСОВАЯ РАБОТА
«Информатика и программирование»
Видео:Решение системы уравнений методом Крамера.Скачать
тема: «ПРОГРАММНАЯ РЕАЛИЗАЦИЯ РЕШЕНИЯ СИСТЕМ ЛИНЕЙНЫХ УРАВНЕНИЙ»
студентка группы ИТ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 постановка задачи
В данной курсовой работе необходимо создать программный продукт при помощи WindowsForms на языке 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-1b. В противном случае либо размерность пространства решений больше нуля, либо их нет вовсе.
3 ПРОграммная реализация решения задачи
3.1 Введение и общие сведения
Одна из основных задач линейной алгебры – решение систем линейных алгебраических уравнений. Эта задача имеет важное прикладное значение при решении научных и технических проблем. Кроме того, является вспомогательной при реализации многих алгоритмов вычислительной математики, математической физики, обработки результатов экспериментальных исследований.
Программа «MATrix» предназначена для решения систем линейных алгебраических уравнений тремя методами:
методом Гаусса;
методом Крамера;
методом обратной матрицы.
Данный программный продукт значительно упрощает получение корней систем линейных уравнений.
3.2 Структура программного продукта
В процессе разработки программного продукта были реализованы следующие формы:
Formcs – форма приветсвия;
MATrix.cs – форма, обеспечивающая решение систем линейных алгебраических уравнений методом Гаусса, методом Крамера или методом обратной матрицы по выбору пользователя;
About.cs – форма, содержащая информацию о программном продукте.
На рисунке 3.1 изображена функциональная схема.
🎦 Видео
Решение системы трех уравнений по формулам КрамераСкачать
Решение системы уравнений методом Крамера 2x2Скачать
Метод Крамера для решения систем линейных алгебраических уравнений (СЛАУ) в ExcelСкачать
10. Метод Крамера решения систем линейных уравнений.Скачать
2 минуты на формулы Крамера ➜ Решение систем уравнений методом КрамераСкачать
Решение системы уравнений методом Крамера 4x4Скачать
Решение СЛАУ методом Крамера. Линейная алгебраСкачать
Решение систем линейных уравнений, урок 2/5. Метод Крамера (метод определителей)Скачать