Алгоритм определения разрешающего элемента симплекс таблицы. Преобразование Жордана-Гаусса и симплекс-метод в Excel. Определение разрешающей колонки

Метод Гаусса-Жордана предназначен для решения систем линейных алгебраических уравнений (СЛАУ). Он является модификацией метода Гаусса . Если метод Гаусса осуществляется в два этапа (прямой ход и обратный) то метод Гаусса-Жордана позволяет решить систему в один этап. Подробности и непосредственная схема применения метода Гаусса-Жордана описаны в примерах.

Во всех примерах $A$ обозначает матрицу системы, $\widetilde{A}$ - расширенную матрицу системы. О матричной форме записи СЛАУ можно прочесть .

Пример №1

Решить СЛАУ $ \left\{ \begin{aligned} & 4x_1-7x_2+8x_3=-23;\\ & 2x_1-4x_2+5x_3=-13;\\ & -3x_1+11x_2+x_3=16. \end{aligned} \right.$ методом Гаусса-Жордана.

Давайте перейдём от последней полученной нами матрице к системе:

$$ \left\{ \begin{aligned} & 0\cdot x_1+1\cdot x_2+0\cdot x_3=1;\\ & 1\cdot x_1+0\cdot x_2+0\cdot x_3=-2;\\ & 0\cdot x_1+0\cdot x_2+1\cdot x_3=-1. \end{aligned} \right. $$

Упрощая полученную систему, имеем:

$$ \left\{ \begin{aligned} & x_2=1;\\ & x_1=-2;\\ & x_3=-1. \end{aligned} \right. $$

Полное решение без пояснений выглядит так:

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

Выбор разрешающих элементов на главной диагонали матрицы системы.

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

Первый шаг

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

$$ \left(\begin{array} {ccc|c} 4 & -7 & 8 & -23\\ 2 & -4& 5 & -13 \\ -3 & 11 & 1 & 16 \end{array} \right)\rightarrow \left(\begin{array} {ccc|c} 2 & -4& 5 & -13\\ 4 & -7 & 8 & -23 \\ -3 & 11 & 1 & 16 \end{array} \right) $$

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

$$ \left(\begin{array} {ccc|c} 2 & -4& 5 & -13\\ 4 & -7 & 8 & -23 \\ -3 & 11 & 1 & 16 \end{array} \right) \begin{array} {l} I:2 \\\phantom{0} \\ \phantom{0} \end{array} \rightarrow \left(\begin{array} {ccc|c} 1 & -2& 5/2 & -13/2 \\4 & -7 & 8 & -23\\ -3 & 11 & 1 & 16 \end{array} \right) \begin{array} {l} \phantom{0} \\ II-4\cdot I\\ III+3\cdot I \end{array} \rightarrow \left(\begin{array} {ccc|c} 1 & -2& 5/2 & -13/2\\0 & 1 & -2 & 3\\ 0 & 5 & 17/2 & -7/2 \end{array} \right). $$

Второй шаг

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

$$ \left(\begin{array} {ccc|c} 1 & -2& 5/2 & -13/2\\0 & 1 & -2 & 3\\ 0 & 5 & 17/2 & -7/2 \end{array} \right) \begin{array} {l} I+2\cdot II \\ \phantom{0}\\ III-5\cdot II \end{array} \rightarrow \left(\begin{array} {ccc|c} 1 & 0 & -3/2 & -1/2 \\ 0 & 1 & -2 & 3\\ 0 & 0 & 37/2 & -37/2 \end{array} \right). $$

Второй шаг окончен. Переходим к третьему шагу.

Третий шаг

На третьем шаге требуется обнулить элементы третьего столбца. В качестве разрешающего элемента выбираем элемент третьей строки, т.е. 37/2. Разделим элементы третьей строки на 37/2 (чтобы разрешающий элемент стал равен 1), а затем обнулим соответствующие элементы третьего столбца:

$$ \left(\begin{array} {ccc|c} 1 & 0 & -3/2 & -1/2 \\ 0 & 1 & -2 & 3\\ 0 & 0 & 37/2 & -37/2 \end{array} \right) \begin{array} {l} \phantom{0}\\ \phantom{0}\\ III:\frac{37}{2} \end{array} \rightarrow \left(\begin{array} {ccc|c} 1 & 0 & -3/2 & -1/2 \\ 0 & 1 & -2 & 3\\ 0 & 0 & 1 & -1 \end{array} \right) \begin{array} {l} I+2\cdot III\\II+3/2\cdot III\\ \phantom{0} \end{array} \rightarrow \left(\begin{array} {ccc|c} 1 & 0 & 0 & -2 \\ 0 & 1 & 0 & 1\\ 0 & 0 & 1 & -1 \end{array} \right). $$

Ответ получен: $x_1=-2$, $x_2=1$, $x_3=-1$. Полное решение без пояснений выглядит так:

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

Ответ : $x_1=-2$, $x_2=1$, $x_3=-1$.

Пример №2

Решить СЛАУ $ \left\{ \begin{aligned} & 3x_1+x_2+2x_3+5x_4=-6;\\ & 3x_1+x_2+2x_4=-10;\\ & 6x_1+4x_2+11x_3+11x_4=-27;\\ & -3x_1-2x_2-2x_3-10x_4=1. \end{aligned} \right.$ методом Гаусса-Жордана.

Запишем расширенную матрицу данной системы : $\widetilde{A}=\left(\begin{array} {cccc|c} 3 & 1 & 2 & 5 & -6\\ 3 & 1& 0 & 2 & -10 \\ 6 & 4 & 11 & 11 & -27 \\ -3 & -2 & -2 & -10 & 1 \end{array} \right)$.

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

Первый шаг

Нам нужно обнулить соответствующие элементы первого столбца. В качестве разрешающего элемента возьмём элемент первой строки, т.е. 3. Соответственно первую строку придётся разделить на 3, чтобы разрешающий элемент стал равен единице. А затем обнулить все элементы первого столбца, кроме разрешающего:

$$ \left(\begin{array}{cccc|c} 3 & 1 & 2 & 5 & -6\\ 3 & 1 & 0 & 2 & -10\\ 6 & 4 & 11 & 11 & -27\\ -3 & -2 & -2 & -10 & 1\end{array}\right) \begin{array} {l} I:3\\ \phantom{0}\\\phantom{0}\\\phantom{0}\end{array} \rightarrow \left(\begin{array}{cccc|c} 1 & 1/3 & 2/3 & 5/3 & -2\\ 3 & 1 & 0 & 2 & -10\\ 6 & 4 & 11 & 11 & -27\\ -3 & -2 & -2 & -10 & 1\end{array}\right) \begin{array} {l} \phantom{0}\\ II-3\cdot I\\III-6\cdot I\\IV+3\cdot I\end{array} \rightarrow\\ \rightarrow\left(\begin{array}{cccc|c} 1 & 1/3 & 2/3 & 5/3 & -2\\ 0 & 0 & -2 & -3 & -4\\ 0 & 2 & 7 & 1 & -15\\ 0 & -1 & 0 & -5 & -5\end{array}\right). $$

Второй шаг

Переходим к обнулению соответствующих элементов второго столбца. В качестве разрешающего элемента мы уславливались взять элемент второй строки, но сделать этого мы не в силах, так как нужный элемент равен нулю. Вывод: будем менять местами строки. Первую строку трогать нельзя, так как она уже использовалась на первом шаге. Выбор небогат: или меняем местами вторую и третью строки, или же меняем местами четвёртую и вторую. Так как в четвёртой строке наличествует (-1), то пусть в "обмене" поучавствует именно четвёртая строка. Итак, меняем местами вторую и четвёртую строки:

$$ \left(\begin{array}{cccc|c} 1 & 1/3 & 2/3 & 5/3 & -2\\ 0 & 0 & -2 & -3 & -4\\ 0 & 2 & 7 & 1 & -15\\ 0 & -1 & 0 & -5 & -5\end{array}\right)\rightarrow \left(\begin{array}{cccc|c} 1 & 1/3 & 2/3 & 5/3 & -2\\ 0 & -1 & 0 & -5 & -5\\ 0 & 2 & 7 & 1 & -15\\ 0 & 0 & -2 & -3 & -4\end{array}\right) $$

Вот теперь всё в норме: разрешающий элемент равен (-1). Бывает, кстати, что смена мест строк невозможна, но это обговорим в следующем примере №3. А пока что делим вторую строку на (-1), а затем обнуляем элементы второго столбца. Обратите внимание, что во втором столбце элемент, расположенный в четвёртой строке, уже равен нулю, поэтому четвёртую строку трогать не будем.

$$ \left(\begin{array}{cccc|c} 1 & 1/3 & 2/3 & 5/3 & -2\\ 0 & -1 & 0 & -5 & -5\\ 0 & 2 & 7 & 1 & -15\\ 0 & 0 & -2 & -3 & -4\end{array}\right) \begin{array} {l} \phantom{0}\\II:(-1) \\\phantom{0}\\\phantom{0}\end{array} \rightarrow \left(\begin{array}{cccc|c} 1 & 1/3 & 2/3 & 5/3 & -2\\ 0 & 1 & 0 & 5 & 5\\ 0 & 2 & 7 & 1 & -15\\ 0 & 0 & -2 & -3 & -4\end{array}\right) \begin{array} {l} I-1/3\cdot II\\ \phantom{0} \\III-2\cdot II\\\phantom{0}\end{array} \rightarrow\\ \rightarrow\left(\begin{array}{cccc|c} 1 & 0 & 2/3 & 0 & -11/3\\ 0 & 1 & 0 & 5 & 5\\ 0 & 0 & 7 & -9 & -25\\ 0 & 0 & -2 & -3 & -4\end{array}\right). $$

Третий шаг

Приступаем к обработке третьего столбца. В качестве разрешающего элемента мы условились брать диагональные элементы матрицы системы. Для третьего шага это означает выбор элемента, расположенного в третьей строке. Однако если мы просто возьмём элемент 7 в качестве разрешающего, то всю третью строку придётся делить на 7. Мне кажется, что разделить на (-2) попроще. Поэтому поменяем местами третью и четвёртую строки, и тогда разрешающим элементом станет (-2):

$$ \left(\begin{array}{cccc|c} 1 & 0 & 2/3 & 0 & -11/3\\ 0 & 1 & 0 & 5 & 5\\ 0 & 0 & 7 & -9 & -25\\ 0 & 0 & -2 & -3 & -4\end{array}\right) \rightarrow \left(\begin{array}{cccc|c} 1 & 0 & 2/3 & 0 & -11/3\\ 0 & 1 & 0 & 5 & 5\\ 0 & 0 & -2 & -3 & -4\\ 0 & 0 & 7 & -9 & -25\end{array}\right) $$

Разрешающий элемент - (-2). Делим третью строку на (-2) и обнуляем соответствующие элементы третьего столбца:

$$ \left(\begin{array}{cccc|c} 1 & 0 & 2/3 & 0 & -11/3\\ 0 & 1 & 0 & 5 & 5\\ 0 & 0 & -2 & -3 & -4\\ 0 & 0 & 7 & -9 & -25\end{array}\right) \begin{array} {l} \phantom{0}\\ \phantom{0} \\III:(-2)\\\phantom{0}\end{array}\rightarrow \left(\begin{array}{cccc|c} 1 & 0 & 2/3 & 0 & -11/3\\ 0 & 1 & 0 & 5 & 5\\ 0 & 0 & 1 & 3/2 & 2\\ 0 & 0 & 7 & -9 & -25\end{array}\right) \begin{array} {l} I-2/3\cdot III\\ \phantom{0} \\ \phantom{0}\\IV-7\cdot III\end{array}\rightarrow\\ \rightarrow\left(\begin{array}{cccc|c} 1 & 0 & 0 & -1 & -5\\ 0 & 1 & 0 & 5 & 5\\ 0 & 0 & 1 & 3/2 & 2\\ 0 & 0 & 0 & -39/2 & -39\end{array}\right). $$

Четвёртый шаг

Переходим к обнулению четвёртого столбца. Разрешающий элемент расположен в четвёртой строке и равен числу $-\frac{39}{2}$.

$$ \left(\begin{array}{cccc|c} 1 & 0 & 0 & -1 & -5\\ 0 & 1 & 0 & 5 & 5\\ 0 & 0 & 1 & 3/2 & 2\\ 0 & 0 & 0 & -39/2 & -39\end{array}\right) \begin{array} {l} \phantom{0}\\ \phantom{0} \\ \phantom{0}\\IV:\left(-\frac{39}{2}\right) \end{array}\rightarrow \left(\begin{array}{cccc|c} 1 & 0 & 0 & -1 & -5\\ 0 & 1 & 0 & 5 & 5\\ 0 & 0 & 1 & 3/2 & 2\\ 0 & 0 & 0 & 1 & 2\end{array}\right) \begin{array} {l} I+IV\\ II-5\cdot IV \\ III-3/2\cdot IV \\ \phantom{0} \end{array}\rightarrow\\ \rightarrow\left(\begin{array}{cccc|c} 1 & 0 & 0 & 0 & -3\\ 0 & 1 & 0 & 0 & -5\\ 0 & 0 & 1 & 0 & -1\\ 0 & 0 & 0 & 1 & 2\end{array}\right). $$

Решение окончено. Ответ таков: $x_1=-3$, $x_2=-5$, $x_3=-1$, $x_4=2$. Полное решение без пояснений:

Ответ : $x_1=-3$, $x_2=-5$, $x_3=-1$, $x_4=2$.

Пример №3

Решить СЛАУ $\left\{\begin{aligned} & x_1-2x_2+3x_3+4x_5=-5;\\ & 2x_1+x_2+5x_3+2x_4+9x_5=-3;\\ & 3x_1+4x_2+7x_3+4x_4+14x_5=-1;\\ & 2x_1-4x_2+6x_3+11x_5=2;\\ & -2x_1+14x_2-8x_3+4x_4-7x_5=20;\\ & -4x_1-7x_2-9x_3-6x_4-21x_5=-9. \end{aligned}\right.$ методом Гаусса-Жордана. Если система является неопределённой, указать базисное решение.

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

$$ \left(\begin{array}{ccccc|c} 1 & -2 & 3 & 0 & 4 & -5\\ 2 & 1 & 5 & 2 & 9 & -3\\ 3 & 4 & 7 & 4 & 14 & -1\\ 2 & -4 & 6 & 0 & 11 & 2\\ -2 & 14 & -8 & 4 & -7 & 20\\ -4 & -7 & -9 & -6 & -21 & -9 \end{array}\right) \begin{array} {l} \phantom{0} \\ II-2\cdot I\\ III-3\cdot I\\ IV-2\cdot I\\ V+2\cdot I\\VI+4\cdot I \end{array} \rightarrow \left(\begin{array}{ccccc|c} 1 & -2 & 3 & 0 & 4 & -5\\ 0 & 5 & -1 & 2 & 1 & 7\\ 0 & 10 & -2 & 4 & 2 & 14\\ 0 & 0 & 0 & 0 & 3 & 12\\ 0 & 10 & -2 & 4 & 1 & 10\\ 0 & -15 & 3 & -6 & -5 & -29 \end{array}\right) \begin{array} {l} \phantom{0} \\ II:5 \\ \phantom{0}\\ \phantom{0}\\ \phantom{0} \\ \phantom{0}\end{array} \rightarrow \\ \left(\begin{array}{ccccc|c} 1 & -2 & 3 & 0 & 4 & -5\\ 0 & 1 & -1/5 & 2/5 & 1/5 & 7/5\\ 0 & 10 & -2 & 4 & 2 & 14\\ 0 & 0 & 0 & 0 & 3 & 12\\ 0 & 10 & -2 & 4 & 1 & 10\\ 0 & -15 & 3 & -6 & -5 & -29 \end{array}\right) \begin{array} {l} I+2\cdot II \\ \phantom{0}\\ III-10\cdot II\\ IV:3\\ V-10\cdot II\\VI+15\cdot II \end{array} \rightarrow \left(\begin{array}{ccccc|c} 1 & 0 & 13/5 & 4/5 & 22/5 & -11/5\\ 0 & 1 & -1/5 & 2/5 & 1/5 & 7/5\\ 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 1 & 4\\ 0 & 0 & 0 & 0 & -1 & -4\\ 0 & 0 & 0 & 0 & -2 & -8 \end{array}\right). $$

Полагаю, что одно из сделанных преобразований всё-таки требует пояснения: $IV:3$. Все элементы четвёртой строки нацело делились на три, поэтому сугубо из соображений упрощения мы разделили все элементы этой строки на три. Третья строка в преобразованной матрице стала нулевой. Вычеркнем нулевую строку:

$$ \left(\begin{array}{ccccc|c} 1 & 0 & 13/5 & 4/5 & 22/5 & -11/5\\ 0 & 1 & -1/5 & 2/5 & 1/5 & 7/5\\ 0 & 0 & 0 & 0 & 1 & 4\\ 0 & 0 & 0 & 0 & -1 & -4\\ 0 & 0 & 0 & 0 & -2 & -8 \end{array}\right) $$

Нам пора переходить к третьему шагу, на котором должны быть обнулены элементы третьего столбца. Однако диагональный элемент (третья строка) равен нулю. И смена мест строк ничего не даст. Первую и вторую строки мы уже использовали, поэтому их трогать мы не можем. А четвёртую и пятую строки трогать нет смысла, ибо проблема равенства нулю разрешающего элемента никуда не денется.

В этой ситуации проблема решается крайне незамысловато. Мы не можем обработать третий столбец? Хорошо, перейдём к четвёртому. Может, в четвёртом столбце элемент третьей строки будет не равен нулю. Однако четвёртый столбец "болеет" той же проблемой, что и третий. Элемент третьей строки в четвёртом столбце равен нулю. И смена мест строк опять-таки ничего не даст. Четвёртый столбец тоже не можем обработать? Ладно, перейдём к пятому. А вот в пятом столбце элемент третьей строки очень даже не равен нулю. Он равен единице, что довольно-таки хорошо. Итак, разрешающий элемент в пятом столбце равен 1. Разрешающий элемент выбран, поэтому осуществим дальшейшие преобразования метода Гаусса-Жордана:

$$ \left(\begin{array}{ccccc|c} 1 & 0 & 13/5 & 4/5 & 22/5 & -11/5\\ 0 & 1 & -1/5 & 2/5 & 1/5 & 7/5\\ 0 & 0 & 0 & 0 & 1 & 4\\ 0 & 0 & 0 & 0 & -1 & -4\\ 0 & 0 & 0 & 0 & -2 & -8 \end{array}\right) \begin{array} {l} I-22/5\cdot III \\ II-1/5\cdot III \\ \phantom{0}\\ IV+III\\ V+2\cdot III \end{array} \rightarrow \left(\begin{array}{ccccc|c} 1 & 0 & 13/5 & 4/5 & 0 & -99/5\\ 0 & 1 & -1/5 & 2/5 & 0 & 3/5\\ 0 & 0 & 0 & 0 & 1 & 4\\ 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 \end{array}\right) \rightarrow \\ \rightarrow\left|\text{Удаляем нулевые строки}\right|\rightarrow \left(\begin{array}{ccccc|c} 1 & 0 & 13/5 & 4/5 & 0 & -99/5\\ 0 & 1 & -1/5 & 2/5 & 0 & 3/5\\ 0 & 0 & 0 & 0 & 1 & 4 \end{array}\right)$$

Мы привели матрицу системы и расширенную матрицу системы к ступенчатому виду. Ранги обеих матриц равны $r=3$, т.е. надо выбрать 3 базисных переменных. Количество неизвестных $n=5$, поэтому нужно выбрать $n-r=2$ свободных переменных. Так как $r < n$, то согласно следствию из теоремы Кронекера-Капелли данная система является неопределённой (т.е. имеет бесконечное количество решений). Для нахождения решений системы составим "ступеньки":

На "ступеньках" стоят элементы из столбцов №1, №2, №5. Следовательно, базисными будут переменные $x_1$, $x_2$, $x_5$. Свободными переменными, соответственно, будут $x_3$, $x_4$. Столбцы №3 и №4, соответствующие свободным переменным, перенесём за черту, при этом, конечно, не забыв сменить им знаки.

$$ \left(\begin{array}{ccccc|c} 1 & 0 & 13/5 & 4/5 & 0 & -99/5\\ 0 & 1 & -1/5 & 2/5 & 0 & 3/5\\ 0 & 0 & 0 & 0 & 1 & 4 \end{array}\right)\rightarrow \left(\begin{array}{ccc|ccc} 1 & 0 & 0 & -99/5 & -13/5 & -4/5\\ 0 & 1 & 0 & 3/5 & 1/5 & -2/5\\ 0 & 0 & 1 & 4 & 0 & 0\end{array}\right). $$

Из последней матрицы получим общее решение: $\left\{\begin{aligned} & x_1=-\frac{99}{5}-\frac{13}{5}x_3-\frac{4}{5}x_4;\\ & x_2=\frac{3}{5}+\frac{1}{5}x_3-\frac{2}{5}x_4;\\ & x_3 \in R;\\ & x_4\in R;\\ & x_5=4. \end{aligned}\right.$. Базисное решение найдём, приняв свободные переменные равными нулю, т.е. $x_3=0$, $x_4=0$:

$$ \left\{\begin{aligned} & x_1=-\frac{99}{5};\\ & x_2=\frac{3}{5};\\ & x_3=0;\\ & x_4=0;\\ & x_5=4. \end{aligned}\right. $$

Задача решена, осталось лишь записать ответ.

Ответ : Общее решение: $\left\{\begin{aligned} & x_1=-\frac{99}{5}-\frac{13}{5}x_3-\frac{4}{5}x_4;\\ & x_2=\frac{3}{5}+\frac{1}{5}x_3-\frac{2}{5}x_4;\\ & x_3 \in R;\\ & x_4\in R;\\ & x_5=4. \end{aligned}\right.$, базисное решение: $\left\{\begin{aligned} & x_1=-\frac{99}{5};\\ & x_2=\frac{3}{5};\\ & x_3=0;\\ & x_4=0;\\ & x_5=4. \end{aligned}\right.$.

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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


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

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


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

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

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

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

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


переменные x 2 и x 4 - базисные, а x 1 и x 3 - свободные. Базисные переменные между собой независимы, а свободные можно сделать, например, нулями и получить { x 2 =2, x 4 =1 } – базисное решение системы.

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

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

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

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


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


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

2*x 1 +3*x 2 ≤20
3*x 1 +x 2 ≤15
4*x 1 ≤16
3*x 2 ≤12
x 1 ,x 2 ≥0

примет вид

2*x 1 +3*x 2 +x 3 =20
3*x 1 +x 2 +x 4 =15
4*x 1 +x 5 =16
3*x 2 +x 6 =12
x 1 ,x 2 ,...,x 6 ≥0

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

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

Z(x 1 ,x 2)=2*x 1 +5*x 2 (max)

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

Z 1 (x 1 ,x 2)=-2*x 1 -5*x 2 (min)

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

3*x 1 +x 2 +x 4 ≥15

превращается в

3*x 1 -x 2 -x 4 ≤15

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


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

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

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

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

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

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

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

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

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


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

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

Для начала работы требуется, чтобы заданная система ограничений выражалась равенствами, причём в этой системе ограничений должны быть выделены базисные неизвестные. Решение задачи симплекс-методом распадается на ряд шагов. На каждом шаге от данного базиса Б переходят к другому, новому базису Б 1 с таим расчётом, чтобы значение функции Z уменьшилось, т.е. . Для перехода к новому базису из старого базиса удаляется одна из переменных и вместо нее вводится другая из числа свободных. После конечного числа шагов находится некоторый базис Б (k) , для которого есть искомый минимум для линейной функцииZ, а соответствующее базисное решение является оптимальным либо выясняется, что задача не имеет решения.

4.1 Алгоритм симплекс-метода.

Рассмотрю систему ограничений и линейную форму вида:

(4.1)

Используя метод Жордана-Гауса, приведём записанную систему к виду, где выделены базисные переменные.

Введём условные обозначения:

–базисные переменные;

–свободные переменные.

(4.4)

По последней системе ограничений построим табл. 4.1.

Таблица 4.1

Симплекс-таблица

Свободные

Базисные

неизвестные

Свободный

Данная таблица называется симплекс-таблицей. Все дальнейшие преобразования связаны с изменением содержания этой таблицы.

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

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

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

3. На пересечении разрешающих строки и столбца находится разрешающий элемент.

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

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

Таблица 4.2

Симплекс-таблица

Свободные

Базисные

неизвестные

Свободный

6. Элемент табл. 4.2 соответствующий разрешающему элементу табл. 4.1, равен обратной величине разрешающего элемента.

7. Элементы строки табл. 4.2, соответствующие элементам разрешающей стоки табл. 4.1, получаются путём деления соответствующих элементов табл. 4.1 на разрешающий элемент.

8. Элементы столбца табл. 4.2, соответствующие элементам разрешающего столбца табл. 4.1, получаются путём деления соответствующих элементов табл. 4.1 на разрешающий элемент и берутся с противоположным знаком.

9. Остальные элементы вычисляются по правилу прямоугольника: мысленно вычерчиваем прямоугольник в табл.4.2, одна вершина которого совпадает с разрешающим элементом, а другая – с элементом, образ которого мы ищем; остальные две вершины определяются однозначно. Тогда искомый элемент табл. 4.2 будет равен соответствующему элементу табл. 4.1 минус дробь в знаменателе который стоит разрешающий элемент, а в числителе произведение элементов из двух неиспользованных вершин прямоугольника.

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

11. Если в разрешающем столбце все элементы отрицательны, то задача не имеет решений (минимум не достигается).

5. Методы нахождения опорного решения задачи линейного программирования.

5.1. Метод искусственного базиса.

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

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

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

(5.1)

Перепишем систему (5.1) в другом виде. Для этого введём искусственные переменные так, чтобы был выделен базис. Тогда система примет вид

(5.2)

Системы (5.1) и (5.2) будут эквивалентны в том случае, если все , длябудут равны 0. Кроме того, считаю, что вседля. В противном случае соответствующие ограничения из системы (5.1) умножим на – 1. Для того чтобыбыли равны 0, мы должны преобразовать задачу таким образом, чтобы все искусственные переменныеперешли в свободные неизвестные.

В этом случае система (5.2) после преобразования примет вид:

(5.3)

От системы (5.2) к системе (5.3) всегда можно перейти шагами симплекс-метода. При таком переходе в качестве линейной формы рассматривают функцию

равную сумме искусственных переменных. Переход заканчивают, когда и все искусственные переменныепереведены в свободные неизвестные.

Анализ вариантов решений

1. Если , а всепереведены в свободные переменные, то задача не имеет положительного решения.

2. Если , а частьосталась в базисе, то для перевода их в свободные необходимо применять специальные приёмы.

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

5.2. Второй алгоритм отыскания опорного плана.

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

(5.5)

Построим первую таблицу Жордана-Гаусса для задач (5.5) и (5.6). Для единообразия вычислительной процедуры к исходной таблице приписываем строку целевой функции:

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

Алгоритм метода

1. Запишем задачу в форме (5.7), при этом все элементы столбца свободных членов должны быть неотрицательны,. Уравнения системы (5.5), в которых свободные члены отрицательны, предварительно нужно умножить на – 1.

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

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

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

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

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

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

Выбор разрешающего элемента производят иначе, а именно.

1. Просматривают строку, соответствующую какому-либо отрицательному свободному члену. Выбирают в ней какой-либо отрицательный элемент – соответствующий этому элементу столбец будет разрешающим.

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

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

Рассмотрим симплекс -метод для решения задач линейного программирования (ЛП). Он основан на переходе от одного опорного плана к другому, при котором значение целевой функции возрастает.

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

  1. Исходную задачу переводим в канонический вид путем введения дополнительных переменных. Для неравенства вида ≤ дополнительные переменные вводят со знаком (+ ), если же вида ≥ то со знаком (— ). В целевую функцию дополнительные переменные вводят с соответствующими знаками с коэффициентом, равным 0 , т.к. целевая функция не должна при этом менять свой экономический смысл.
  2. Выписываются вектора P i из коэффициентов при переменных и столбца свободных членов. Этим действием определяется количество единичных векторов. Правило – единичных векторов должно быть столько, сколько неравенств в системе ограничений.
  3. После этого исходные данные вводятся в симплекс-таблицу. В базис вносятся единичные вектора, и исключая их из базиса, находят оптимальное решение . Коэффициенты целевой функции записывают с противоположным знаком.
  4. Признак оптимальности для задачи ЛП – решение оптимально, если в f – строке все коэффициенты положительны. Правило нахождения разрешающего столбца – просматривается f – строка и среди ее отрицательных элементов выбирается наименьшее. Вектор P i его содержащий становится разрешающим. Правило выбора разрешающего элемента – составляются отношения положительных элементов разрешающего столбца к элементам вектора Р 0 и то число, которое дает наименьшее отношение становится разрешающим элементом, относительно которого будет произведен пересчет симплекс-таблицы. Строка, содержащая этот элемент называется разрешающей строкой. Если в разрешающем столбце нет положительных элементов, то задача не имеет решения. После определения разрешающего элемента переходят к пересчету новой симплекс – таблицы.
  5. Правила заполнения новой симплекс – таблицы. На месте разрешающего элемента проставляют единицу, а другие элементы полагают равными 0 . Разрешающий вектор вносят в базис, из которого исключают соответствующий нулевой вектор, а остальные базисные вектора записывают без изменений. Элементы разрешающей строки делят на разрешающий элемент, а остальные элементы пересчитывают по правилу прямоугольников.
  6. Так поступают до тех пор, пока в f – строке все элементы не станут положительными.

Рассмотрим решение задачи с использованием рассмотренного выше алгоритма.
Дано:

Приводим задачу к каноническому виду:

Составляем вектора:

Заполняем симплекс – таблицу:

:
Пересчитаем первый элемент вектора Р 0 , для чего составляем прямоугольник из чисел: и получаем: .

Аналогичные расчеты выполним для всех остальных элементов симплекс – таблицы:

В полученном плане f – строка содержит один отрицательный элемент – (-5/3), вектора P 1 . Он содержит в своем столбце единственный положительный элемент, который и будет разрешающим элементом. Сделаем пересчет таблицы относительно этого элемента:

Отсутствие отрицательных элементов в f – строке означает, что найден оптимальный план :
F* = 36/5, Х = (12/5, 14/5, 8, 0, 0).

Решение линейного программирования на заказ

Заказать любые задания по этой дисциплине можно у нас на сайте. Прикрепить файлы и указать сроки можно на

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

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

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

Любые m переменных системы m линейных уравнений с n переменными (m < n) называются основными , если определитель матрицы коэффициентов при них отличен от нуля. Тогда остальные m-n переменных называются неосновными (или свободными) .

Базисным решением системы m линейных уравнений c n переменными (m < n) называется всякое ее решение, в котором все неосновные переменные имеют нулевые значения.

Теорема 1 . Множество всех допустимых решений системы ограничений задачи линейного программирования является выпуклым.

В частном случае, когда в систему ограничений входят только две переменные x 1 и x 2 , это множество можно изобразить на плоскости. Так как речь идет о допустимых решениях (x 1 , x 2 ≥ 0), то соответствующее множество будет располагаться в первой четверти декартовой системы координат. Это множество может быть замкнутым (многоугольник), незамкнутым (неограниченная многогранная область), состоять из единственной точки и, наконец, система ограничений-неравенств может быть противоречивой.

Теорема 2 . Если задача линейного программирования имеет оптимальное решение, то оно совпадает с одной (двумя) из угловых точек множества допустимых решений.

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

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

Следствием из теорем 2 и 3 является утверждение о том, что оптимальное решение (оптимальные решения) задачи линейного программирования, заданной (или приведенной) ограничениями-уравнениями, совпадает с допустимым базисным решением (допустимыми базисными решениями) системы ограничений.

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

Симплекс-метод был разработан и впервые применен для решения задач в 1947 г. американским математиком Дж. Данцигом.

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


В основу симплексного метода положена идея последовательного улучшения получаемого решения.

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

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

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

1) способ определения какого-либо первоначального допустимого базисного решения задачи;

2) правило перехода к лучшему (точнее, не худшему) решению;

3) критерий проверки оптимальности найденного решения.

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

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

Шаг 1 . Формулировка ЗЛП (формирование целевой функции и системы ограничений).




Top