Симплекс метод жордана гаусса

Симплекс метод жордана гаусса

Данный онлайн калькулятор находит общее решение системы линейных уравнений методом Жордана-Гаусса. Дается подробное решение. Для вычисления выбирайте количество уравнений и количество переменных. Затем введите данные в ячейки и нажимайте на кнопку "Вычислить." Теоретическую часть нахождения решения системы линейных уравнений методом Жордана-Гаусса смотрите ниже.

Предупреждение

Инструкция ввода данных. Числа вводятся в виде целых чисел (примеры: 487, 5, -7623 и т.д.), десятичных чисел (напр. 67., 102.54 и т.д.) или дробей. Дробь нужно набирать в виде a/b, где a и b (b>0) целые или десятичные числа. Примеры 45/5, 6.6/76.4, -7/6.7 и т.д.

Метод Жордана-Гаусса

Метод Жордана-Гаусса − это метод для решения систем линейных уравнений а также метод нахождения обратной матрицы. Данный метод является модификацией метода Гаусса.

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

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

(1)

Запишем систему (1) в матричном виде:

Ax=b (2)
(3)

A-называется матрица коэффициентов системы, b − правая часть ограничений, x− вектор переменных, которую нужно найти. Пусть rang(A)=p.

Построим расшренную матрицу системы:

(4)

После прямого хода Гаусса (подробнее о прямом ходе Гаусса посмотрите на странице "Метод Гаусса онлайн") получим следующую расширенную матрицу:

(5)

Если . равны нулю, то система линейных уравнений имеет решение, если же хотя бы один из этих чисел отлично от нуля, то система несовместна. Иными словами, система (2) совместна тогда и только тогда, когда ранг матрицы A навен рангу расширенной матрицы (A|b).

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

Итак, обнуляем все элементы, стоящие в столбце p, выше элемента . Так как ≠0, то сложим строки 1,2. p−1 со строкой p, умноженной на соответственно.

Расширенная матрица примет следующий вид:

Аналогичным методом обнуляем элементы столбцов p−1, p−2, . 2 выше ведущих элементов .

Расширенная матрица примет следующий вид:

Делим каждую строку на соответствующий ведущий элемент (если ведущий элемент существует):

Тогда решение можно записать так:

где − произвольные вещественные числа.

Отметим, что при m=n и rangA=n система линейных уравнений (2) имеет единственное решение.

Рассмотрим численные примеры.

Примеры решения системы линейных уравнений методом Жордана-Гаусса

Пример 1. Найти решение системы линейных уравнений методом Жордана-Гаусса:

Матричный вид записи: Ax=b, где

.

Для решения системы, построим расширенную матрицу:

.

Обозначим через aij элементы i-ой строки и j-ого столбца.

Первый этап. Прямой ход Гаусса

Исключим элементы 1-го столбца матрицы ниже элемента a11. Для этого сложим строки 2,3 со строкой 1, умноженной на 1/2,-3/2 соответственно:

.

Исключим элементы 2-го столбца матрицы ниже элемента a2 2. Для этого сложим строку 3 со строкой 2, умноженной на 1/5:

.

Второй этап. Обратный ход Гаусса

Исключим элементы 3-го столбца матрицы выше элемента a33. Для этого сложим строки 1, 2 со строкой 3, умноженной на -3/2, -5/4 соответственно:

.

Исключим элементы 2-го столбца матрицы выше элемента a22. Для этого сложим строку 1 со строкой 2, умноженной на -2/5:

.

Делим каждую строку матрицы на соответствующий ведущий элемент (если ведущий элемент существует):

.
.

Векторный вариант решения:

.

Пример 2. Найти решение системы линейных уравнений методом Жордана-Гаусса:

Матричный вид записи: Ax=b, где

Для решения системы, построим расширенную матрицу:

Обозначим через aij элементы i-ой строки и j-ого столбца.

Первый этап. Прямой ход Гаусса.

Исключим элементы 1-го столбца матрицы ниже элемента a11. Для этого сложим строки 2,3 со строкой 1, умноженной на 4/3, 5/3 соответственно:

Исключим элементы 2-го столбца матрицы ниже элемента a2 2. Для этого сложим строку 3 со строкой 2, умноженной на -2:

Второй этап. Обратный ход Гаусса

Исключим элементы 2-го столбца матрицы выше элемента a22. Для этого сложим строку 1 со строкой 2, умноженной на -3/10:

Читайте также:  Установить старое устройство windows 10

Делим каждую строку матрицы на соответствующий ведущий элемент (если ведущий элемент существует):

Выразим переменные x1, x2 относительно остальных переменных.

x3− произвольное действительное число.

Векторный вариант решения:

Запишем вышеизложенное решение, представив свободные переменные в виде тождеств:

Тогда векторное решение можно представить так:

,

x3− произвольное действительное число.

БлогNot. Преобразование Жордана-Гаусса и симплекс-метод в Excel

Преобразование Жордана-Гаусса и симплекс-метод в Excel

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

Метод базируется на элементарных преобразованиях (переводящих систему в эквивалентную), к которым относятся:

  • прибавление к обеим частям уравнения системы другого уравнения той же системы, умноженного на число, отличное от нуля;
  • перестановка местами уравнений в системе;
  • удаление из системы уравнений вида 0 = 0.

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

Шаг метода состоит в следующем:

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

Алгоритмизировать это можно так:

Для СЛАУ в матричном виде A*x=b (матрица A размерности m*n , совсем необязательно квадратная) составляется следующая таблица:

В таблице выбран разрешающий элемент ar,s≠0 , тогда r — разрешающая строка, s — разрешающий столбец.

Переход к следующей таблице выполняется по правилам:

1. вычисляются элементы разрешающей строки: a’r,j=ar,j/ar,s — то есть, r-строка таблицы делится на разрешающий элемент;

2. все элементы разрешающего столбца, кроме ar,s, равного единице, становятся равны нулю;

3. элементы вне разрешающих строки и столбца вычисляются по формуле, изображённой ниже:

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

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

Возможны следующие случаи:

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

2. Получается тождество 0 = 0 — уравнение является линейной комбинацией остальных и строка нулей может быть вычеркнута из системы.

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

Запрограммируем метод в Excel одной формулой, изменять которую должно быть не слишком трудоёмко. Например, для решения СЛАУ

заполним коэффициентами системы ячейки листа от A1 до D4 включительно, выберем разрешающий элемент a1,1=1 , а первый шаг метода сделаем в ячейке A6 , куда загоним "универсальную" формулу для преобразования Жордана-Гаусса:

=ЕСЛИ(СТРОКА($A$1)=СТРОКА(A1);A1/$A$1;
ЕСЛИ(СТОЛБЕЦ($A$1)=СТОЛБЕЦ(A1);0;(A1*$A$1-
ДВССЫЛ(АДРЕС(СТРОКА(A1);СТОЛБЕЦ($A$1)))*
ДВССЫЛ(АДРЕС(СТРОКА($A$1);СТОЛБЕЦ(A1))))/$A$1))

Здесь ссылка $A$1 показывает разрешающий элемент, а ссылка на текущий элемент не закреплена. Остаётся только растянуть формулу на ячейки A6:D9 :

На следующем шаге разрешающим элементом может быть, например, a2,2=1 (ячейка B7 ). Нам останется скопировать формулу из A6 в A11 (по пустой строке оставляем, чтоб визуально разделить шаги метода), войти в режим редактирования формулы (двойной щелчок по ячейке или выбрать её и нажать клавишу F2 ) и поправить (аккуратно перетащить мышкой за границу) все закреплённые ссылки с ячейки A1 на B7 .

Конечно, можно заменить везде в формуле закреплённую ссылку $A$1 на конструкцию вида ДВССЫЛ(ЯЧЕЙКА) , образующую динамический адрес ссылки. Скажем, ДВССЫЛ(F8) , а в ячейке F8 будет автоматически формироваться адрес ячейки разрешающего элемента по заданным пользователем номеру строки и столбца. Тогда для этих номеров строки и столбца придётся предусмотреть отдельные ячейки, например, так:

Увы, всё это ничего не даст — вместо $A$1 мы просто вынуждены будем закрепить в формуле ДВССЫЛ($F$8) и всё равно потом перетаскивать столько же ссылок при копировании формулы. Кроме того, "вручную" введённые номера строки и столбца придётся ещё и проверять на допустимость (хотя бы как на рисунке), так что, не будем умножать сущностей.

Читайте также:  Убрать графический ключ через гугл

Посмотреть метод в работе можно на двух первых листах приложенного файла Excel (2 разных примера).

На преобразовании Жордана-Гаусса основан и такой универсальный метод решения линейных задач оптимизации, как симплекс-метод. Описания его обычно страшны, длинны и перегружены теоремами. Попробуем сделать простое описание и разработать пригодный для расчёта в Excel алгоритм. На самом деле, симплекс-метод уже встроен в стандартную надстройку Пакет анализа, и программировать его "вручную" не нужно, так что наш код имеет, скорее, учебную ценность.

Сначала минимум теории.

Если вектор-столбцы СЛАУ линейно независимы, соответствующие им переменные являются базисными, а остальные – свободными. Например, в СЛАУ

переменные x2 и x4 — базисные, а x1 и x3 — свободные. Базисные переменные между собой независимы, а свободные можно сделать, например, нулями и получить < x2=2, x4=1 > – базисное решение системы.

Выбирая различные разрешающие элементы, можно получить решения СЛАУ с различными базисами. Любое неотрицательное базисное решение СЛАУ называется опорным.

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

Алгоритм симплекс-метода состоит в следующем:

1. Задача ЛП преобразуется к каноническому виду:

Это всегда можно сделать следующим образом: к задаче, записанной в стандартной постановке

добавляются дополнительные балансовые переменные, число которых соответствует числу ограничений-неравенств m (ограничения на неотрицательность значений неизвестных не учитываются). После этого неравенства со знаком " ≤ " превращаются в равенства, например, система ограничений вида

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

Если в исходной задаче искался не минимум, а максимум, целевая функция Z заменятся на Z1 = -Z . Решения задач совпадают, при этом min Z = — max Z1 . Например, цель

переписывается в виде

Если в исходной задаче были уравнения-неравенства со знаками " ≥ " вместо " ≤ ", обе части каждого такого неравенства умножаются на -1 , а знак неравенства меняется на противоположный, например,

Канонический вид модели получен, для него выписывается симплекс-таблица:

В левом столбце записываются базисные переменные (БП), если они ещё не выделены – пусто.

2. С помощью шагов Жордана–Гаусса ищется первоначальный опорный план, т.е. СЛАУ приводится к базисному виду с неотрицательными свободными членами bi>0 . При этом целевая функция Z должна быть выражена только через свободные неизвестные (нулевые коэффициенты в Z-строке стоят только под переменными xi , которые есть в базисе). При выборе разрешающего элемента ar,s в строку r столбца БП выписываем переменную xs , если там уже была переменная – вычеркиваем её (выводим из базиса).

3. Выписываем под столбцами xi опорный план X * : под свободными переменными — нули, под базисными – соответствующие базисной переменной коэффициенты из столбца b .

Ниже выписываем вектор R по правилу: под базисными переменными – нули, под свободными Ri=Zi .

Если все Ri≥0 , найдено оптимальное решение X * и значение цели Zmin = -q , иначе нужен новый план, а у вас он есть, товарищ Жюков? (п. 4).

4. Для выбора разрешающего столбца s выбираем максимальную по модулю отрицательную компоненту вектора R , разрешающий столбец s выбран. Затем анализируем коэффициенты s-го столбца матрицы системы ограничений. Если все ai,s≤0 , решения нет и Zmin стремится к минус бесконечности, иначе переходим к п.5.

5. Для выбора разрешающей строки r составляем неотрицательные отношения bi/Ai,s≥0 , i=1,2. m , и выбираем среди них наименьшее. Если минимум достигается для нескольких строк, за разрешающую можно принять любую из них, при этом, в новом опорном плане значения некоторых базисных переменных станут равными 0, т.е., получаем вырожденный опорный план.

6. Выполняем преобразование Жордана-Гаусса с разрешающим элементом ar,s и переходим к п.3

Геометрически симплекс-методу соответствует кратчайший обход вершин n-мерного выпуклого многогранника, образующего область допустимых решений задачи:

Здесь мы перешли от опорного плана C , представляющего собой одну из вершин многомерного многоугольника, к оптимальному плану E=X * .

Читайте также:  Сколько длится оптимизация жесткого диска

Запрограммировать это всё в Excel нелегко, но можно. В прилагаемом документе приведены 3 примера, реализующие решение задач симплекс-методом. Правда, при выполнени шага менять уже придётся 3 формулы, на листе первого примера на симплекс-метод они выделены жёлтым цветом: расчёт отношений для выбора разрешающей строки в ячейке I2 , заполнение столбца БП в ячейке A12 , шаг преобразования Жордана-Гаусса в ячейке B12 . Как и в примере на преобразование Жордана-Гаусса, изменение формул связано только с необходимостью сослаться на новую строку, содержащую адрес ячейки с разрешающим элементом (для первого шага — ячейка C9 ).

Скачать примеры на преобразование Жордана-Гаусса и симплекс-метод в архиве .ZIP с документом Excel (73 Кб)

23.03.2014, 08:18; рейтинг: 27828

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

4.1 Метод Жордана – Гаусса — метод решения систем линейных уравнений

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

Рассмотрим систему m уравнений с n неизвестными:

Алгоритм метода Жордана — Гаусса:

Все коэффициенты системы и свободные члены (элементы расширенной матрицы системы) записывают в таблицу

Выбирают ведущий элемент0 (k=1,2. m; s=1,2. n) ,

где k- тую строку называют ведущей, s- тый столбец — ведущим.

Все элементы ведущей строки пересчитывают по формуле:

т.е. элементы ведущей строки делятся на ведущий элемент.

В ведущем столбце элементы записывают нулями, кроме ведущего.

Остальные элементы таблицы пересчитывают по формуле «определителя второго порядка»:

,

полагая главной диагональю ту, где находится ведущий элемент:

и полученный результат всегда делится на ведущий элемент

Итак, для любого элемента таблицы получим:

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

Систему r- уравнений, в которой столбцы коэффициентов при r неизвестных являются единичными векторами: e1=(1,0,. . . ,0), e2=(0,1,. . .,0), er=(0,0,. . .,1) называют системой уравнений, приведенной к единичному базису:

Очевидно, ранг системы равен r.

Выразив базисные переменные x1,x2,…,xr через свободные xr+1,xr+2,…,xn, получим общее решение системы линейных уравнений:

Если число r базисных неизвестных равно n- числу неизвестных системы, т.е. r=n то система имеет единственное решение:

X=( ,,,. . .,)

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

Если r

Выбран ведущий элемент а11=1 в первой таблице, составленной по условию задачи.

Вторую таблицу начинают заполнять с элементов ведущей строки (она не изменилась)

В первом столбце записывают нули, кроме а11=1.

а13=0, следовательно, третий столбец не изменится.

Вычисление остальных элементов производят по формуле « определителя второго порядка »:

После окончания I итерации получаем в первом столбце (1,0,0,0) и базисную переменную х1.

Выбран в качестве ведущего элемента а22=5.

Элементы ведущей строки делят на 5.

Во втором столбце записывают нули, кроме а22=1

Вычисление остальных элементов производят по формуле «определителя второго порядка». После итерации I получили три совпадающих строки, откуда следует, что два уравнения «лишние». При выполнении итерации II эти строки превратились в нулевые строки. В результате получаем два уравнения (ранг r=2), которые разрешены относительно базисных переменных х1 и х2.

Таким образом, данная система совместна и не определена, ее общее решение имеет вид:

Частное решение Х=(1,2,0,0) — базисное решение. Всего базисных решений будет шесть, так как

.

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

Ссылка на основную публикацию
Adblock detector