Решение систем алгебраических уравнений курсовая

Решение систем алгебраических уравнений курсовая

Системы линейных уравнений

1. Теоретическая часть

1.1 Основные понятия и теоремы систем линейных уравнений

1.1.1 Критерий совместности общей системы линейных уравнений

1.1.2 Однородная система п линейных уравнений с n неизвестными

1.1.3 Структура общих решений однородной и неоднородной системы уравнений

1.2 Основные методы решения систем линейных уравнений

1.2.1 Матричный метод решения систем линейных уравнений

1.2.2 Метод Крамера

1.2.3 Метод Гаусса

1.4 Ответы на теоретические вопросы

Курс «Алгебра и геометрия» занимает особенное место в системе математической дисциплины, которая изучается студентами специальностей ПМ, САУ и IНФ, как базовый курс. Наверное, нет ни одной математической дисциплины, в которой бы не применялись понятия алгебры и геометрии.совая работа должна способствовать более углубленному изучению курса «Алгебра и геометрия», осмыслению его и применению для решения задачи практического содержания.

Данная работа содержит раскрытие вопроса решения систем линейных алгебраических уравнений, способы получения результата и применение систем для решения экономических задач.

Работа состоит из двух частей — теоретической и практической. В теоретической части приведены определения таких понятий, как система линейных уравнений, общее и частное решения, совместность и несовместность систем, однородные и неоднородные системы, рассмотрены различные методы решения систем уравнений. Также даны ответы на теоретические вопросы.

В практической части решены системы линейных уравнений, а также рассмотрены экономические задачи, решение которых сводится к решению соответствующей системы.

система линейное уравнение

1. Теоретическая часть

1.1 Основные понятия и теоремы систем линейных уравнений

В самом общем случае система линейных уравнений имеет следующий вид:

a11x1 + a12x2 + …+ a1n xn = b1;x1 + a22x2 + …+ a2n xn = b2;

где х1, х2, …, хn — неизвестные, значения которых подлежат нахождению. В общем случае число неизвестных не обязательно должно быть равно числу уравнений самой системы. Числа а11, а12, …, аmn называются коэффициентами системы, а b1, b2, …, bm — её свободными членами. Для удобства коэффициенты системы аij (i = 1, 2. m; j = 1, 2. n) и свободные члены bi (i=1, 2. m) снабжены индексами. Первый индекс коэффициентов аij соответствует номеру уравнения, а второй индекс — номеру неизвестной хi, при которой коэффициент поставлен. Индекс свободного члена bi соответствует номеру уравнения, в которое входит bi.

Дадим определения некоторых понятий, необходимых при изучении системы уравнений. Решением системы уравнений называется всякая совокупность чисел ?1, ?2, ?n, которая будучи поставлена в систему на место неизвестных х1, х2, …, хn, обращает все уравнения системы в тождества. Система уравнений называется совместной, если она имеет хотя бы одно решение, и несовместной, если не имеет решений. Совместная система уравнений называется определенной, если она имеет одно единственное решение, и неопределенной, если она имеет по крайней мере два различных решения.

Две системы уравнений называются равносильными или эквивалентными, если они имеют одно и тоже множество решений.

Наша задача будет заключаться в нахождении решений системы. При этом могут возникнуть три ситуации:

. Система может иметь единственное решение.

2. Система может иметь бесконечное множество решений.

. И третий случай, когда система вообще не имеет решения.

.1.1 Критерий совместности общей системы линейных уравнений

Как уже было отмечено, под общей системой линейных уравнений мы понимаем систему, в которой число неизвестных необязательно совпадает с числом уравнений.

Пусть дана общая система линейных уравнений и требуется установить признак существования решения этой системы, т.е. условия, при которых система является совместной.

Из коэффициентов при неизвестных и свободных членов системы составим матрицу

которую назовем основной матрицей системы, и матрицу

a11 a12 … a1n b1

a21 a22 … a2n b2

B = ……………………… ……,am2 … amn bm

которую назовем расширенной матрицей системы.

Теорема (Теорема Кронекера — Капелли) Для того чтобы система линейных неоднородных уравнений была совместной, необходимо и достаточно, чтобы ранг расширенной матрицы системы был равен рангу ее основной матрицы.

Пусть система совместна и c1, c2. сп — некоторое ее решение. Тогда имеют место равенства:

а11с1 + а12с2 + …+ а1nсn = b1;

а21с1 + а22с2 + …+ а2nсn = b2;

аm1с1 + аm2с2 + …+ аmnсn = bm

из которых следует, что последний столбец расширенной матрицы есть линейная комбинация остальных ее столбцов с коэффициентами с1, с2. сп. Согласно предложению, последний столбец матрицы В может быть вычеркнут без изменения ее ранга. При этом мы из матрицы В получим матрицу А. Таким образом, если ci, cz. сп — решение системы уравнении, то rang А = rang В.

Достаточность. Пусть теперь rang A = rang В. Покажем, что при этом система уравнений совместна. Рассмотрим r базисных столбцов матрицы А. Очевидно, что они будут базисными столбцами и матрицы В. Согласно теореме о базисных строках и столбцах, последний столбец матрицы В можно представить как линейную комбинацию базисных столбцов, а следовательно, как линейную комбинацию всех столбцов матрицы А, т.е.

b1 = а11с1 + а12с2 + …+ а1nсn;= а21с1 + а22с2 + …+ а2nсn;

где c1, c2. сп — коэффициенты линейных комбинаций. Таким образом, системе удовлетворяют значения x1 = c1. хп = сп, следовательно, она совместна. Теорема доказана.

1.1.2 Однородная система п линейных уравнений с n неизвестными

Линейное уравнение называется однородным, если его свободный член равен нулю. Система линейных уравнений называется однородной, если все входящие в нее уравнения являются линейными однородными уравнениями.

Однородная система п линейных уравнений с п неизвестными имеет вид:

а11х1 + а12х2 + …+ а1nхn = 0;

а21х1 + а22х2 + …+ а2nхn = 0;

аn1х1 + аn2х2 + …+ аnnхn = 0.

Непосредственной проверкой убеждаемся в том, что однородная система линейных уравнений имеет нулевое решение: х1 = 0, х2 = 0. хп = 0.

Таким образом, однородная система линейных уравнений всегда совместна. Поэтому важно выяснить, при каких условиях она является определенной. Покажем, что однородная система п линейных уравнений с п неизвестными имеет ненулевые решения тогда и только тогда, когда определитель ее равен нулю.

В самом деле, пусть D = 0. Так как однородная система уравнений является частным случаем неоднородной системы, то к ней применимо правило Крамера. Но для однородной системы все D xi = 0, так как каждый из этих определителей содержит столбец из нулей (bi = 0). Поэтому система, равносильная системе, будет иметь вид D x1= 0, D x2=0;., D xn= 0

Из этой системы следует, что однородная система имеет единственное нулевое решение, если ? 0; если же D = 0, то из условий следует, что она имеет бесчисленное множество решений.

Теорема. Для заданной однородной системы уравнений , для которой , где — число неизвестных, существует линейно независимых решений и любое решение системы представляется в виде линейной комбинации этих решений.

Максимальное число линейно независимых решений однородной системы называется фундаментальной системой решений этой системы уравнений.

— фундаментальная система решений однородной системы уравнений (Ф.С. Р.). Она содержит решений и получается с общего решения, если свободным переменным придавать последовательно значения: . Полученная таким образом фундаментальная система называется нормированной.

Обратим внимание, что решение однородных систем осуществляется теми же методами, что и неоднородных.

1.1.3 Структура общих решений однородной и неоднородной системы уравнений

Теорема 1. Общие решения однородной системы уравнений

, где , — число неизвестных, представляется в виде:

где — свободные постоянные, , — фундаментальная система решений.

Теорема 2. Общие решения неоднородной системы уравнений

представляется в виде:

где — некоторое частное решение неоднородной системы, — общее решение соответствующей однородной системы.

.2 Основные методы решения систем линейных уравнений

1.2.1 Матричный метод решения систем линейных уравнений

Матрицы дают возможность кратко записать систему линейных уравнений. Пусть дана система из 3-х уравнений с тремя неизвестными:

Рассмотрим матрицу системы

и матрицы столбцы неизвестных и свободных членов

т.е. в результате произведения мы получаем левые части уравнений данной системы. Тогда пользуясь определением равенства матриц данную систему можно записать в виде

Здесь матрицы A и B известны, а матрица X неизвестна. Её и нужно найти, т.к. её элементы являются решением данной системы. Это уравнение называют матричным уравнением.

Пусть определитель матрицы отличен от нуля |A| ? 0. Тогда матричное уравнение решается следующим образом. Умножим обе части уравнения слева на матрицу A-1, обратную матрице A: . Поскольку A-1A = E и E?X = X, то получаем решение матричного уравнения в виде X = A-1B.

Заметим, что поскольку обратную матрицу можно найти только для квадратных матриц, то матричным методом можно решать только те системы, в которых число уравнений совпадает с числом неизвестных. Однако, матричная запись системы возможна и в случае, когда число уравнений не равно числу неизвестных, тогда матрица A не будет квадратной и поэтому нельзя найти решение системы в виде X = A-1B.

Рассмотрим систему 3-х линейных уравнений с тремя неизвестными:

Определитель третьего порядка, соответствующий матрице системы, т.е. составленный из коэффициентов при неизвестных,

называется определителем системы.

Составим ещё три определителя следующим образом: заменим в определителе D последовательно 1, 2 и 3 столбцы столбцом свободных членов

Тогда можно доказать следующий результат.

Теорема (правило Крамера). Если определитель системы ? ? 0, то рассматриваемая система имеет одно и только одно решение, причём

Доказательство. Итак, рассмотрим систему 3-х уравнений с тремя неизвестными. Умножим 1-ое уравнение системы на алгебраическое дополнение A11 элемента a11, 2-ое уравнение — на A21 и 3-е — на A31:

Сложим эти уравнения:

Рассмотрим каждую из скобок и правую часть этого уравнения. По теореме о разложении определителя по элементам 1-го столбца

Далее рассмотрим коэффициенты при x2:

Аналогично можно показать, что и .

Наконец несложно заметить, что

Таким образом, получаем равенство: .

Аналогично выводятся равенства и , откуда и следует утверждение теоремы.

Таким образом, заметим, что если определитель системы ? ? 0, то система имеет единственное решение и обратно. Если же определитель системы равен нулю, то система либо имеет бесконечное множество решений, либо не имеет решений, т.е. несовместна.

Метод Гаусса основывается на следующей теореме: элементарным преобразованиям строк расширенной матрицы системы отвечает превращение этой системы в эквивалентную.

С помощью элементарных преобразований строки расширенной матрицы, а также перемены местами столбцов, что отвечает перепозначенню переменной, матрица сводится к ступенчатой (или трапециевидной) форме. Этой матрице ставится в соответствие система, эквивалентная исходной. Это прямой ход метода Гаусса. Решение полученной системы осуществляется снизу вверх (обратный ход метода Гаусcа).

Более детально этот процесс выглядит так: матрица в результате элементарных преобразований принимает такой вид:

Тогда возможны несколько случаев:

. Хотя б одно с чисел отличное от нуля, тогда і система несовместная.

а) , система совместная, имеет единственное решение;

б) , система совместная, имеет бесконечное множество решений.

В случае совместимости системы, ставим последней матрице в соответствие систему уравнений вида

Эту систему переписываем, оставляя базисные переменные слева, свободные — справа

Именно эту систему решаем, начиная снизу вверх.

В результате получаем или единственное решение, или множество решений, которые записываются в виде общего решения.

Метод Гаусса представляет собой метод последовательного исключения переменной. Вычислительная процедура гауссових исключений может быть формализирована с помощью простых правил.

Назовем переменную, которая исключалась, разрешающей, коэффициент при ней — разрешающим элементом, строку и столбец матрицы, в которой размещен разрешающий элемент — разрешающими.

Перечисление элементов расширенной матрицы при выполнении элементарных преобразований выполняется по таким правилам:

) элементы разрешающей строки и всех вышерасположенных строк остаются неизменными;

) элементы разрешающего столбца, которые расположены ниже разрешающего элемента, обращаются в нуль;

) все другие элементы матрицы вычисляются по правилу прямоугольника: преобразовываемый элемент равняется разности произведений элементов главной и побочной диагонали.

Тут — разрешающий элемент, — преобразуемый элемент. Обозначим — элемент, который получен вычислением по правилу прямоугольника. Тогда

Модификацией метода Гаусса является метод полного исключения или метод Жордана — Гаусса.

Метод полного исключения (метод Жордана-Гаусса) заключается в том, что в результате преобразований расширенной матрицы в ней выделяется диагональная подматриця и тогда решение исходной системы выписывается просто.

Метод полного исключения работает за такими правилами:

) назначается разрешающий элемент; им будет коэффициент при неизвестной, которая исключается;

) элементы разрешающей строки остаются неизменными;

) все элементы разрешающего столбца (кроме разрешающего элемента) заменяются нулями и остаются такими до конца преобразований;

) все другие элементы матрицы пересчитываются по правилу прямоугольника.

Метод полного исключения может быть использован для обращения матрицы (известен также под названием метод элементарных превращений).

Для данной матрицы -го порядка строится прямоугольная матрица размера , к которой применяется преобразование по алгоритму полного исключения, в результате чего матрица сводится к виду , где . Это всегда возможно, если матрица невырожденная.

Обобщим знания о системах уравнений с помощью таблицы 1.1.

Понятия Или соотношенияФормулаОбщая система линейных алгебраических уравненийОсновная матрица системыМатрица-столбец свободных членовМатрица-столбец неизвестныхМатричная форма записи системыРасширенная матрица системыУсловие совместимости системыСистема имеет единственное решениеСистема имеет бесконечное множество решенийСистема несовместнаяКвадратная система линейных алгебраических уравненийКвадратная система имеет единственное решениеКвадратная система бесконечное множество решений, Квадратна система несовместная, Однородная система уравненийОднородная система имеет только нулевое решениеОднородная система имеет нетривиальные решенияКвадратная однородная система имеет только нулевое решениеКвадратная однородная система имеет нетривиальные решенияСтруктура общего решения однородной системы,

— произвольные числа; , — число неизвестных. Структура общего решения неоднородной системы,

где — некоторое частное решение неоднородной системы, — общее решение соответствующей однородной системы.

1.4 Ответы на теоретические вопросы

1. Теорема Кронекера-Капелли: для совместности системы необходимо и достаточно, чтобы ранг матрицы этой системы был равен рангу ее расширенной матрицы

2. Система имеет единственное решение, если ранг матрицы этой системы был равен рангу ее расширенной матрицы и равен количеству неизвестных системы.

3. Система имеет бесконечное множество решений, если ранг матрицы меньше количества неизвестных системы.

. Свободные переменные — те переменные, которые задаются произвольными значениями, а базисные переменные — те, которые выражаются через свободные.

5. Количество базисных переменных равняется рангу матрицы системы.

. Если ранг матрицы равен r, а количество неизвестных равняется n, то система может иметь (n-r) свободных переменных.

. Система называется однородной, если она имеет вид: АХ=0, т.е. все свободные члены равны нулю.

. Решение называется ненулевым, если все переменные одновременно не принимают значение 0.

. Для того, чтобы однородная система имела только тривиальное решение, необходимо и достаточно, чтобы ранг матрицы равнялся количеству неизвестных системы.

. Для того, чтобы однородная система имела нетривиальные решения, необходимо и достаточно, чтобы ранг матрицы был меньше количества неизвестных системы.

. Максимальное число линейно независимых решений однородной системы называется фундаментальной системой решений.

. Однородная система уравнений имеет фундаментальную систему решений, если ранг матрицы системы не равен количеству переменных системы.

. Фундаментальная система решений однородной системы содержит (n-r) решений, где n — число неизвестных системы, r-ранг матрицы системы.

. Однородная система уравнений может иметь от 0 до (n-1) фундаментальных систем решений, где n — число неизвестных системы.

. Если свободным переменным поочередно придавать значения: 1, 0,0…0; 0, 1, 0…0; …; 0, 0, …, 1, то полученная фундаментальная система решений называется нормированной.

Kypсовая работа посодействовала более углубленному изучению курса «Алгебра и геометрия», осмыслению его и применению для решения задач практического содержания.

Данная работа раскрыла вопрос решения систем уравнений, а также определила, как на практике использовать знания из курса «Алгебра и геометрия» для решения задач различного типа.

В теоретической части были полностью раскрыты значения тех понятий, которые приводились во вступлении, а именно система линейных уравнений, общее и частное решения, совместность и несовместность систем, однородные и неоднородные системы, рассмотрены различные методы решения систем уравнений. Также даны ответы на теоретические вопросы.

В практической части были решены все поставленные задачи, а именно: решены предложенные системы, выполнена проверка, решены экономические задачи, сводящиеся к системам уравнений.

1. Апатенок Р.Ф. и др. Элементы линейной алгебры и аналитической геометрии. — Минск: Вышейш. шк., 1986. — 272 с.

2. Тевяшев А.Д., Литвин О.Г. Алгебра і геометрiя: Лiнiйна алгебра. Аналітична геометрія: — Харків: ХТУРЕ, 2000. — 388 с.

. Данко П.Е. и др. Высшая математика в упражнениях и задачах. Ч.I. — М.: Высш. шк., 1986. — 304 с.

. Апатенок Р.Ф. и др. Сборник задач по линейной алгебре и аналитической геометрии. — Минск. Вышейш. шк., 1990. — 286 с.

. Тевяшев А.Д., Литвин О.Г. Вища математика. Загальний курс: Збiрник задач та вправ. — Х.: Рубiкон, 1999. — 320 с.

. Барковский В.В., Барковская Н.В. Математика для экономистов. Высшая математика. — К.: Национальная академия управления, 1999. — 399 с.

Теги: Системы линейных уравнений Курсовая работа (теория) Математика

Курсовая работа на тему: Решение систем линейных уравнений. Метод Гаусса

ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ

ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ПРОФЕСИОНАЛЬНОГО ОБРАЗОВАНИЯ

«РОССИЙСКИЙ ГОСУДАРСТВЕННЫЙ ПЕДАГОГИЧЕСКИЙ УНИВЕРСИТЕТ им А. И.ГЕРЦЕНА»

Кафедра информационных и коммуникационных технологий

«Решение систем линейных уравнений. Метод Гаусса. Алгоритм оптимального исключения неизвестных по столбцам с выбором главных элементов по строкам преобразовав матрицу А в эквивалентную верхнюю левую треугольную матрицу»

студентка 2 курса 1 гр

кандидат педагогических наук, доцент

Введение Постановка задачи

1) вывод рекуррентной формулы

3) код программы

4) контрольный пример

Введение

Решение систем линейных алгебраических уравнений – одна из основных задач вычислительной линейной алгебры. Хотя задача решения системы линейных уравнений сравнительно редко представляет самостоятельный интерес для приложений, от умения эффективно решать такие системы часто зависит сама возможность математического моделирования самых разнообразных процессов с применением ЭВМ. Значительная часть численных методов решения различных (в особенности – нелинейных) задач включает в себя решение систем линейных уравнений как элементарный шаг соответствующего алгоритма.

Одна из трудностей практического решения систем большой размерности связанна с ограниченностью оперативной памяти ЭВМ. Хотя объем оперативной памяти вновь создаваемых вычислительных машин растет очень быстро, тем не менее, еще быстрее возрастают потребности практики в решении задач все большей размерности. В значительной степени ограничения на размерность решаемых систем можно снять, если использовать для хранения матрицы внешние запоминающие устройства. Однако в этом случае многократно возрастают как затраты машинного времени, так и сложность соответствующих алгоритмов. Поэтому при создании вычислительных алгоритмов линейной алгебры большое внимание уделяют способам компактного размещения элементов матриц в памяти ЭВМ.

К счастью, приложения очень часто приводят к матрицам, в которых число ненулевых элементов много меньше общего числа элементов матрицы. Такие матрицы принято называть разреженными. Одним из основных источников разреженных матриц являются математические модели технических устройств, состоящих из большого числа элементов, связи между которыми локальны. Простейшие примеры таких устройств – сложные строительные конструкции и большие электрические цепи.

Известны примеры решенных в последние годы задач, где число неизвестных достигало сотен тысяч. Естественно, это было бы невозможно, если бы соответствующие матрицы не являлись разреженными (матрица системы из 100 тыс. уравнений в формате двойной точности заняла бы около 75 Гбайт).

Множество прикладных и чисто математических задач приводят к необходимости решения систем линейных алгебраических уравнений. Без преувеличения можно утверждать, что это одна из важнейших задач вычислительной математики.

Значимость задачи породила целый ряд методов ее решения. Среди этих методов есть универсальные и специализированные (т. е. применимые лишь к системам, имеющим некоторые специальные свойства). Методы отличаются друг от друга эффективностью, требованиями к объемам машинной памяти (при реализации на ЭВМ), закономерностями накопления ошибок в ходе расчетов. Не существует одного метода, который можно было бы во всех случаях предпочесть всем остальным, и поэтому знакомство с несколькими методами является обязательным для квалифицированного вычислителя.

Как известно из курса алгебры, число неизвестных в системе может быть больше числа уравнений или равно ему. Если число неизвестных больше числа уравнений, то на первом этапе стандартными алгебраическими методами задача сводится к промежуточной задаче, в которой число неизвестных равно числу уравнений. С точки зрения вычислителя истинная проблема состоит именно в решении такой системы, и поэтому в данной работе я рассмотрю лишь такую ситуацию.

Итак, перед нами система n линейных алгебраических уравнений с n неизвестными:

(1.1)

Запись матрицы в такой форме достаточно громоздка, и при первой возможности я буду впредь использовать матричную форму записи, совершенно равносильную (1.1):

А — матрица, X – вектор-столбец неизвестных, B- вектор-столбец свободных членов.

Методы решения систем вида (1.1) можно разделить на два класса. К первому относятся прямые методы. С помощью таких методов в принципе можно в результате конечного числа шагов получить точные значения неизвестных. При этом предполагается, что и коэффициенты в правой части, и элементы столбца свободных членов – числа точные, а все вычисления производятся без округлений. Однако практически такое может произойти и в исключительных случаях или может быть связано с решением специального класса задач (например, когда решениями являются только целые числа). К подобным методам относятся:

o Метод определителей (метод Крамера) хорошо известный из курса алгебры;

o Матричное решение: X=A-1B (если известна обратная матрица);

o Различные варианты метода исключения неизвестных (метода Гаусса).

Чаще всего прямые методы реализуются на ЭВМ, и в процессе вычислительной ошибки округления и погрешности арифметических действий неизбежны. В силу этого название «точный» не вполне соответствует существу дела (но является традиционным).

Практическое применение первых двух методов может оказаться неэффективным или вообще невозможным. Если попробовать решать «в лоб» систему 15 линейных уравнений с 15 неизвестными с помощью формулы Крамера, то придется вычислить 16 определителей порядка 15, что приведет к выполнению примерно 2*16*15!*14 умножений и сложений. Для выполнения этих вычислений на ЭВМ с быстродействием 106 арифметических операций в секунду потребуется почти 10 недель непрерывной работы. С практической точки зрения при достаточно больших размерах системы матричное решение также является малопривлекательным, поскольку задача нахождения обратной матрицы сама по себе не проще задачи решения системы.

Ко второму классу методов решения систем линейных алгебраических уравнений относятся различные итерационные методы. К ним относятся:

o Метод простой итерации;

o Метод Зейделя.

Системы линейных алгебраических уравнений можно решать как с помощью прямых, так и итерационных методов. Для систем уравнений средней размерности чаще используют прямые методы.

Итерационные методы применяют главным образом для решения задач большой размерности, когда использование прямых методов невозможно из-за ограничений в доступной оперативной памяти ЭВМ или из-за необходимости выполнения чрезмерно большого числа арифметических операций. Большие системы уравнений, возникающие в основном в приложениях, как правило, являются разреженными. Методы исключения для систем с разреженными матрицами неудобны, например, тем, что при их использовании большое число нулевых элементов превращается в ненулевые и матрица теряет свойство разреженности. В противоположность им при использовании итерационных методов в ходе итерационного процесса матрица не меняется, и она, естественно, остается разреженной. Большая эффективность итерационных методов по сравнению с прямыми методами тесно связанна с возможностью существенного использования разреженности матриц.

Применение итерационных методов для качественного решения большой системы уравнений требует серьезного использования ее структуры, специальных знаний и определенного опыта.

2. Постановка задачи:

Решение систем линейных уравнений. Метод Гаусса. Алгоритм оптимального исключения неизвестных по столбцам и с выбором главных элементов по строкам, преобразовав матрицу А в эквивалентную верхнюю левую треугольную матрицу.

2.1. Вывод рекуррентной формулы

Рассмотрим метод Гаусса оптимального исключения неизвестного по столбцам. В методе оптимального исключения принцип преобразования матрицы аналогичен классическому методу последовательного исключения.

В численном методе Гаусса решения систем линейных уравнений АХ=В преобразуем в эквивалентную треугольную систему.

Решение этой задачи сводится сводиться к двум этапам.

1 этап. Прямой ход.

Матрица А преобразуется в эквивалентную ей левую верхнюю треугольную матрицу, таким же преобразованиям подвергается и вектор-столбец свободных членов В, который обычно присоединяется к матрице А справа как n+1 столбец, но я присоединю его слева как 1 столбец для того, чтобы удобнее было вычислять неизвестные данной нам матрицы.

2 этап. Обратный ход.

На этом ходе находятся корни уравнений методом обратной подстановки.

Алгоритм действия на 1 этапе.

На этапе прямого хода мы должны получить левую верхнюю треугольную матрицу, диагональные элементы должны быть не единичными.

Для этого необходимо:

1. преобразование матрицы А начнем из верхнего правого угла, где расположен элемент а1n+1 и будем двигаться сверху вниз и справа налево

2. двигаясь сверху вниз под диагональю в каждом (n-i+1)-том столбце будем получать нули

3. двигаясь справа налево включая столбец свободных членов обеспечивает эквивалентное преобразование элементов начиная с (n+1) столбца.

Рассмотрим подробно вывод рекуррентных формул для первого этапа.

1.Для получения нуля на месте ведомого элемента ak(n-i+1) необходимо получить новый коэффициент преобразования для k-той строки. Он равен:

(2.1)

2.Далее в каждом цикле частичного обнуления (n-i+1)-го столбца из каждой ведомой k-той строки вычитается ведущая строка кратная коэффициенту преобразования , с точки зрения математики это описывается следующим образом:

(2.2)

В данном методе на этапе прямого кода выполняется на n операций делений меньше, чем в методе последовательного исключения поскольку в каждом цикле обнуления столбца на подготовку коэффициентов преобразования требуется на одно деление меньше по сравнению с количеством делений элементов ведущей строки вместе с тем этот выигрыш является кажущимся, так как на втором этапе (обратный код) требуется ровно на n операций деления больше, чем в методе последовательного исключения диагональные элементы не равны единице.

Алгоритм действий на этапе обратного хода.

В результате преобразования имеем:

Обобщенные формулы для нахождения корней систем линейных уравнений имеет следующий вид:

(2.3)

(2.4)

Dim x(3), p, p5, S As Decimal

Dim i, k, n, j, i1, j1, t, m, m5, l, m1, max As Integer

Dim strSt As String

Console. WriteLine(«Метод оптимального исключения по столбцам «)

Console. WriteLine(«с выбором главного элемента по строкам»)

‘вывод матрицы на экран

Console. WriteLine(«Исходная матрица»)

For i = 0 To n — 1

strSt = FormatNumber(mas(i, j), 2)

Console. Write(» <0>«, strSt)

‘выбор главного элемента по строкам

For i = 0 To n — 1

max = Math. Abs(mas(i, n — i))

For j = n — i To 1 Step -1

m5 = Math. Abs(mas(i, j))

If m5 > max Then

If j1 = n — i Then

‘конец алгоритма выбора главного элемента

For l = 0 To n — 1

mas(l, n — i) = mas(l, j1)

Console. WriteLine(«Преобразованная матрица»)

For t = 0 To n — 1

strSt = FormatNumber(mas(t, j), 2)

Console. Write(» <0>«, strSt)

Console. WriteLine(«Преобразовываем матрицу в треугольную левую верхнюю»)

‘процедура прямого хода

‘преобразовываем матрицу в левую верхнюю треугольную

For i = 0 To n — 2

For k = i + 1 To n — 1

p = mas(k, n — i) / mas(i, n — i)

For j = n — i To 0 Step -1

mas(k, j) = mas(k, j) — p * mas(i, j)

‘вывод преобразованной матрицы

For t = 0 To n — 1

strSt = FormatNumber(mas(t, j), 2)

Console. Write(» <0>«, strSt)

‘вывод полученной матрицы

Console. WriteLine(«Полученная матрица»)

For i = 0 To n — 1

strSt = FormatNumber(mas(i, j), 2)

Console. Write(» <0>«, strSt)

‘процедура обратного кода

x(0) = mas(n — 1, 0) / mas(n — 1, 1)

For j = 0 To n — i — 2

S = S + mas(i, j + 1) * x(j)

x(n — i — 1) = (mas(i, 0) — S) / mas(i, n — i)

Loop While i >= 0

Console. WriteLine(«Полученные значения х»)

For i = 0 To n — 1

Console. Write(«x<0>=», i + 1)

strSt = FormatNumber(x(i), 2)

Решить систему линейных уравнений методом Гаусса оптимального исключения неизвестных по столбцам, преобразовав данную матрицу в эквивалентную ей левую верхнюю треугольную матрицу с выбором главного элемента по строкам.

1. Получим новый коэффициент преобразования для каждой k-ой строки.

2. Для обнуления 5-го столбца из каждой ведомой k-той строки вычитается ведущая строка кратная коэффициенту преобразования .

3. Получим новый коэффициент преобразования для каждой k-ой строки.

4. Для обнуления 4-го столбца из каждой ведомой k-той строки вычитается ведущая строка кратная коэффициенту преобразования .

5. Получим новый коэффициент преобразования для каждой k-ой строки.

6. Для обнуления 3-го столбца из каждой ведомой k-той строки вычитается ведущая строка кратная коэффициенту преобразования .

7. Вычислим переменные х:

Сравним полученные результаты с результатом программы

Метод оптимального исключения по столбцам

с выбором главного элемента по строкам

17,00 5,00 2,00 4,00 6,00

13,00 4,00 3,00 1,00 5,00

22,00 6,00 5,00 3,00 8,00

20,00 3,00 10,00 5,00 2,00

17,00 4,00 2,00 5,00 6,00

13,00 1,00 3,00 4,00 5,00

22,00 3,00 5,00 6,00 8,00

20,00 5,00 10,00 3,00 2,00

Преобразовываем матрицу в треугольную левую верхнюю

17,00 4,00 2,00 5,00 6,00

-1,17 -2,33 1,33 -0,17 0,00

-0,67 -2,33 2,33 -0,67 0,00

14,33 3,67 9,33 1,33 0,00

17,00 4,00 2,00 5,00 6,00

-1,17 -2,33 1,33 -0,17 0,00

4,00 7,00 -3,00 0,00 0,00

5,00 -15,00 20,00 0,00 0,00

17,00 4,00 2,00 5,00 6,00

-1,17 -2,33 1,33 -0,17 0,00

4,00 7,00 -3,00 0,00 0,00

31,67 31,67 0,00 0,00 0,00

17,00 4,00 2,00 5,00 6,00

-1,17 -2,33 1,33 -0,17 0,00

4,00 7,00 -3,00 0,00 0,00

31,67 31,67 0,00 0,00 0,00

Полученные значения х

. Теория матриц (издание третье)./. Москва: „Наука”, главная редакция физико-математической литературы, 1967г. Математический энциклопедический словарь. Москва: „Советская энциклопедия”, 1988г. Интернет-ресурсы (*****) Выводила рекуррентные формулы студентка 2 курса института информационных технологий

Курсовая работа: Разработка программы решения системы линейных уравнений

Дальневосточная академия государственной службы

Факультет государственного и муниципального управления

по курсу: Информатика

Разработка программы решения системы линейных уравнений

1 курса 3 годичной

заочной формы обучения

Воищев Алексей Юрьевич

г. Хабаровск 2005

1. Описание математических методов решения систем линейных уравнений

1.1 Метод Гаусса

1.2 Матричный метод

1.3 Вычисление определителей второго и третьего порядка

2. Язык программирования Паскаль

2.1 Структура программы

2.2 Описание переменных

2.3 Основные конструкции языка

2.4 Структуры данных

2.4 Процедуры и функции

3. Описание программы

3.1 Работа программы

3.2 Блок-схема программы

Список используемых источников и литературы

Введение

Последние десятилетия характеризуются бурным развитием вычислительной техники. Расширяются области применения вычислительных машин и совершенствуются методы их использования. Созданы универсальные языки программирования и разработаны мощные операционные системы.

Системы линейных уравнений появляются почти в каждой области прикладной математики. В некоторых случаях эти системы уравнений непосредственно составляют ту задачу, которую необходимо решать, в других случаях задача сводится к такой системе.

Чтобы быстро справится с решением системы линейных уравнений, можно воспользоваться средствами вычислительной техники — составить программу на языке программирования.

1 . Описание математических методов решения систем линейных уравнений

1.1 Метод Гаусса

Идея метода Гаусса состоит в последовательном исключении неизвестных. Алгоритм решения системы уравнений этим методом проследим на примере.

Пример 1.

Выбирается ведущее уравнение с коэффициентом при х1 , равным 1. В нашем примере ведущим уравнением будет второе. Систему лучше переписать, поставив это уравнение на первое место:

Умножаем первое уравнение на 6 и вычитаем из полученного второе, чтобы исключить из второго неизвестное х1 . Первое уравнение записываем, а на место второго — результат вычитания.

Затем первое уравнение умножим на 3 и складываем с третьим уравнением. Тогда получаем систему

Или

первое уравнение переписываем без изменения, а второе умножаем на 7 и вычитаем из него третье уравнение, умноженное на 15, чтобы избавиться от х2 в третьем уравнении. При этом второе записываем без изменения, на месте третьего — результат вычитания. Тогда

Из третьего следует х3 =-3, подставим его во второе, получим х2 = — 2. Далее подставим найденные х2 и х3 в первое уравнение, получим х1 = 1.

Примечание: если система уравнений не содержит уравнения с коэффициентом 1 при х1 , тогда исключение х1 из второго и третьего достигается умножением сначала первого на коэффициент второго, а второго на коэффициент первого. Затем умножаем первое на коэффициент третьего, а третье на коэффициент первого. Таким образом при вычитании исключаем х1 .

1.2 Матричный метод

Запишем систему линейных 3 уравнений с 3 неизвестными

Составим матрицу из коэффициентов при неизвестных

А =

Введем в рассмотрение матрицы — столбцы для неизвестных и свободных членов:

Х = ; В = .

Тогда систему (2) можно переписать в матричной форме

Умножив это уравнение на слева, получим , откуда =или

Следовательно, матрица — решение Х находится как произведение на В .

Пример 2. Решить систему уравнений матричным методом

Решение: определитель матрицы

А=

∆=-1, значит, существует обратная матрица .

Матрица — столбец при неизвестных:

Х =

Матрица — столбец из свободных членов:

В =

Тогда решение запишется в виде

==

1.3 Вычисление определителей второго и третьего порядка

Число (а 11 а 22а 12 а 21 ) называется определителем второго порядка и обозначается символом

Определитель второго порядка содержит две строки и два столбца. Числа а 11 , а 12 , а 21 , а 22 называются элементами определителя. Диагональ определителя, на которой расположены числа а 11 , а 22 — главная, а элементы а 12 , а 21 составляют побочную диагональ.

Определитель 3-го порядка содержит три строки и три столбца:

Для вычисления определителя третьего порядка существует несколько способов.

Рассмотрим метод вычисления определителя разложением по элементам первой строки.

Введем понятие минора и алгебраического дополнения.

Минором некоторого элемента определителя называется определитель, полученный из данного вычеркиванием той строки и того столбца в которых этот элемент расположен. Обозначается Мij ( i — номер строки, j — номер столбца).

Например, минором элемента а12 является определитель

Алгебраическим дополнением данного элемента определителя называется его минор, умноженный на (-1) i+ j . Алгебраические дополнения обозначаются буквами Аij, и тогда Аy = (-1) i+ j My .

Определитель вычисляется так:

=.

Так же можно разложить определитель по любой строке или столбцу.

Изложенный метод применим к вычислению определителей 4-го и т.д. порядков.

Пример3. Вычислить определитель разложением по элементам первой строки

Решение: Элементы первой строки

А11 = (-1) 1+1 . М11 ==4+1=5.

М11 получили, вычеркнув первую строку и первый столбец.

А12 = (-1) 1+2 . М12 = — = — (8+3) = — 11.

М12 получили, вычеркнув первую строку и второй столбец.

А13 = (-1) 1+3 . М13 = = 2-3 = — 1.

М13 получили, вычеркнув первую строку и третий столбец.

= 1.5+2. (-11) — 2. (-1) = — 15

2. Язык программирования Паскаль

2.1 Структура программы

Язык Паскаль, начиная с момента своего создания Н. Виртом в 1971г., играет особую роль м в практическом программировании, и в его обучении. С непревзойденной четкостью в нем реализованы принципы структурного программирования. Трансляторы для программ, написанных на Паскале, разработаны для различных компьютеров и в настоящее время имеют множество разновидностей. Они являются компиляторами, обрабатывающими разработанные программистами тексты программ.

Существует много версий языка Паскаль. Различия между ними порой весьма велики. Так, базовая версия Вирта имеет многократно меньше возможностей, чем версия Турбо-Паскаль 7.0. (первая, фактически — язык для обучения будущих программистов, а вторая — орудие профессиональных разработчиков прикладного программного обеспечения) Тем не менее, это версии одного языка.

Любая Паскаль — программа является текстовым файлом с собственным именем и с расширением. pas. Паскаль — программа имеет вид последовательности символов латинских и русских букв, арабских цифр, знаков операций, скобок, знаков препинания и некоторых дополнительных символов. В нем можно выделить описания данных и операторы, описывающие действия, которые надо выполнить машине над этими данными.

Схематически программа представляется в виде последовательности восьми разделов:

описание внешних модулей, процедур и функций;

описание типов переменных;

описание функций и процедур;

Каждый раздел начинается со служебного слова, назначение которого зафиксировано в Паскале так, что его нельзя употреблять для других целей. Так например, описание заголовка начинается со служебного слова program, описание констант -const, описание переменных — var, раздел операторов начинается с begin. Программа заканчивается служебным словом end, после которого ставится точка. Описания величин и операторы друг от друга отделяются знаком «точка с запятой».

2.2 Описание переменных

Для обозначения величин используются имена. Они состоят из латинских букв и цифр, причем первым символом должна быть буква.

Постоянные величины (константы) чаще всего бывают числовыми или символьными. Значения символьных констант заключаются в апострофы.

Постоянные величины описываются в разделе констант по схеме:

Данные, обрабатываемые программой, могут быть различных типов (числовые, символьные, строки, массивы и т.д.). Тип определяет область допустимых значений, а также операции и функции, применяемые к величинам этого типа. В Паскале имеется несколько встроенных простых типов со стандартными именами.

Группа типов, значения каждого из которых можно перечислить в некотором списке — скалярные типы. Для них определен порядковая функция ord (x) — номер значения х в списке; функция pred (x) -значение в списке, предшествующее х, и succ (x) — значение в списке, следующее за х.

Упорядоченный тип — это тип, значения которого упорядочены в обычном смысле.

Переменные описываются в раздел описания переменных по схеме:

Имена в списке разделяются запятой. В этом разделе может быть описано несколько переменных разного типа, например:

Var a,b,c,: real; k, i: integer; p: Boolean;

Над целыми величинами (тип integer) определены арифметические операции: * (умножение), div (деление нацело), mod (вычисление остатка от деления), +, — (сложение и вычитание); операции перечислены в порядке старшинства. Целый результат дают некоторые стандартные функции (аргумент заключается в круглые скобки):

-абсолютная величина целого хж

квадрат значения х;

целая часть вещественной величины х;

целое число, полученное из вещественного ч по правилу округления;

случайное целое число из интервала от 0 до х

Над вещественными величинами определены операции: *, +, -, /, а также стандартные функции, при вещественном или целом аргументе: abs (x), sqr (x), sin (x), cos (x), ln (x), sqrt (x) — квадратный корень из х, int (x) — целая часть из х, random — случайное число от 0 до 1. Указанные операции и функции дают вещественный результат.

Множество всех символов образуют символьные величины (тип char), которые являются упорядоченными.

Выражения — это конструкции, задающие правила вычисления значений переменных. В общем случае выражения строятся из переменных, констант, функций с помощью операций и скобок.

Эта роль выражения отражена в основном операторе языка — операторе присваивания. Он имеет следующий вид:

Тип переменной и тип выражения должны быть согласованы (величины принадлежат к одному и тому же типу).

В Паскале можно вводить с клавиатуры числовые и символьные данные. Имеются две встроенные процедуры (подпрограммы) ввода:

Процедура readln отличается от read только тем, что при завершении ввода курсор перемещается в начало строки.

Программа на Паскале может выводить на экран или на принтер значения числовых или символьных выражений. Имеются две процедуры вывода на экран:

Процедура write (x1,x2,x3,…xn) печатает на экран значения выражения из списка х1, х2,…хn. Для вывода на принтер используются те же процедуры с добавлением служебного слова lst перед списком выражений:

Пример: write (lst,’ нет решений‘);

2.3 Основные конструкции языка

Паскаль — это язык структурного программирования. Это значит, что программа должна выражать свои мысли очень дисциплинированно, с использованием малого числа четко оговоренных конструкций, используя как чередование их, так и вложения друг в друга. Не рекомендуется (хотя и возможно) использовать оператор перехода goto.

Реализация последовательности действий (т.е. структуры следования) выполняется с помощью составного оператора:

Раздел операторов в программе всегда является составным оператором. Служебные слова begin и end часто называют операторными скобками.

Для реализации развилки в Паскале предусмотрены два оператора: условный оператор и оператор варианта (выбора). Они предназначены для выделения из составляющих их операторов одного, который и выполняется.

Структура и действие условного оператора таковы:

Условный оператор может быть неполным, т.е. не содержать часть “else «. В этом случае, если значение логического выражения равно false, условный оператор не вызывает никаких действий.

Оператор варианта имеет следующую форму:

Выражение, стоящее между служебными словами case и of, должно иметь значение ординального типа. Любой список констант может состоять из одной константы.

Оператор варианта вычисляет значение выражения, записанного после case. Если его значение совпадает с одной из констант в некотором списке, то выполняется оператор, стоящий после этого списка. Если значение выражения не совпало ни с одной константой во всех вариантах, то оператор варианта ничего не делает.

Для реализации циклов в Паскале имеются три оператора. Если число повторений известно заранее, то удобно воспользоваться оператором цикла с параметром. В других случаях следует использовать операторы цикла с предусловием (цикл «пока») или с постусловием (цикл «до»).

Цикл с предусловием является наиболее мощным в Паскале. Другие операторы цикла можно выразить через него. Его форма такова:

Действие: вычисляется значение логического выражения. Если оно равно true, то выполняется оператор, после чего снова вычисляется значение логического выражения, в противном случае действие заканчивается.

Оператор цикла с постусловием имеет форму:

Действие: выполняется последовательность операторов. Далее вычисляется значение логического выражения. Если оно равно true, то действие заканчивается, в противном случае снова выполняется последовательность операторов цикла и т.д.

Оператор цикла с параметром предусматривает повторное выполнение некоторого оператора с одновременным изменением по правилу арифметической прогрессии значения управляющей переменной (параметра) этого цикла. Оператор цикла с параметром имеет две формы.

Параметр, выражение 1, выражение 2 должны быть одного ординального типа. Параметр в этом цикле возрастает. Действие эквивалентно действию следующего составного оператора:

Если в этом описании отношение =, а функцию succ на pred, то параметр в цикле будет убывать, в этом случае цикл с параметром принимает форму 2.

For : = downto do

2.4 Структуры данных

В Паскале кроме простых типов данных: real, integer, boolean, byte, char, программист по своему желанию может определить новый тип путем перечисления его элементов — перечисляемый тип, который относится к простым ординальным типам.

Описание перечисляемого типа выполняется по схеме:

Например, type operator = (plus, minus, multi, divide);

Интервальный тип — это подмножество другого уже определенного ординального типа, называемого базовым. Интервал можно задать в разделе типов указанием наименьшего и наибольшего значений, входящих в него и разделяющихся двумя последовательными точками, например:

Type days = (mon, tue, wed, thu, fri, sat, sun);

Workdays= mon. fri;

Операции и функции — те же, что и для базового типа. Использование интервальных типов в программе позволяет экономить память и проводить во время выполнения программы контроль присваивания.

Естественно и часто очень удобно группировать однотипные данные в последовательности — массивы, строки символов, объединять разнотипные данные в одном и том же объекте в виде записей. Значительное удобство представляются пользователю в Паскале при организации однотипных величин в виде множества с соответствующим набором операций: объединения, пересечения и т.д. Последовательность однотипных величин переменной длины можно представить в Паскале в виде файла данных и хранить на внешних носителях, используя его в разных программах.

Массив -это последовательность, состоящая из фиксированного числа однотипных элементов. Все элементы массива имеют общее имя и различаются индексами. Индексы можно вычислять, их тип должен быть ординальным. В описании массива используются служебные слова array и of. В описании массива указывается тип его элементов и типы их индексов.

2.4 Процедуры и функции

В Паскале подпрограммы называются процедурами и функциями и описываются в разделе с тем же названием.

Все имена, описанные в программе до процедуры, действуют во всей программе и в любой ее подпрограмме. Они называются глобальными, в отличии от локальных имен, описанных в процедуре и действующих лишь в ней.

Данные для обработки могут передаваться процедуре через глобальные имена или через аргументы процедуры. В процедуре каждый аргумент имеет свое имя — формальный параметр, описываемый в заголовке процедуры по схеме

Описание формальных параметров может иметь вид

Оператор вызова процедуры имеет вид

Указанные выражения называются фактическими параметрами. Их список должен точно соответствовать списку описаний формальных параметров процедуры. Во время вызова процедуры каждому параметру-значению присваивается значение соответствующего фактического параметра и поэтому их используют для передачи входных данных. Параметры — переменные используются для представления результатов процедуры.

Функция — это подпрограмма, определяющая единственное скалярное, вещественное или строковое значение. Отличия подпрограммы — функции от процедуры:

заголовок функции начинается со служебного слова function и заканчивается указанием типа значения функции:

function (список описаний формальных параметров): ;

раздел операторов функции должен содержать хотя бы один оператор присваивания имени функции;

обращение к функции — не оператор, а выражение вида:

3. Описание программы

3.1 Работа программы

Для решения систем линейных уравнений методом Гаусса и матричным методом создана программа на языке Паскаль. Программа запрашивает исходные данные (рис.1):

матрицу коэффициентов при неизвестных х;

столбец свободных членов

способ решения системы линейных уравнений — вариант 1 или 2.

Рисунок 3.1 Ввод исходных данных

В зависимости от выбранного вариант в программе происходит решение системы уравнений методом Гаусса (рис.2) или матричным методом (рис.3) с выдачей на экран результатов:

Рисунок 3.2 Результаты расчетов системы линейных уравнений методом Гаусса.

Рисунок 3.3 Результаты расчетов системы линейных уравнений матричным методом.

Программа состоит из 7 подпрограмм — 6 процедур и одной функции:

процедура Gauss обеспечивает решение системы линейных уравнений по методу Гаусса;

процедура matrica обеспечивает решение системы линейных уравнений матричным методом;

процедура PrintMatr2 предназначена для выдачи на экран исходной и обратной матрицы;

процедура MultString предназначена для умножения строк матрицы на число r;

процедура AddStrings прибавляет к i1-ой строке матрицы i2-ю, умноженную на число r;

процедура MultMatr предназначена для умножения матриц.

Функция Sign используется для изменения знака на противоположный при вычислении обратной матрицы.

Программа настроена на решение системы 3-х линейных уравнений с тремя неизвестными. Чтобы решить систему из 2-х уравнений с 2-мя неизвестными необходимо в программе изменить значение константы N с N=3 на N =2 (рис.4).

Рисунок 3.4. Фрагмент программы с описанием констант и переменных.

3.2 Блок-схема программы

Название: Разработка программы решения системы линейных уравнений
Раздел: Рефераты по информатике, программированию
Тип: курсовая работа Добавлен 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://pandia.ru/text/78/002/10054.php

http://www.bestreferat.ru/referat-142074.html