Когда метод гаусса не имеет решений. Метод Гаусса для чайников: примеры решений. Пример неопределенной системы

Определение и описание метода Гаусса

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

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

Определение 1

Эта часть решения носит название прямого хода решения Гаусса, так как весь процесс осуществляется сверху вниз.

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

Описание алгоритма метода Гаусса

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

$\begin{cases} a_{11} \cdot x_1 +...+ a_{1n} \cdot x_n = b_1 \\ ... \\ a_{m1} \cdot x_1 + a_{mn} \cdot x_n = b_m \end{cases}$

Чтобы решить СЛАУ методом Гаусса, необходимо записать исходную систему уравнений в виде матрицы:

$A = \begin{pmatrix} a_{11} & … & a_{1n} \\ \vdots & … & \vdots \\ a_{m1} & … & a_{mn} \end{pmatrix}$, $b=\begin{pmatrix} b_1 \\ \vdots \\ b_m \end{pmatrix}$

Матрица $A$ называется основной матрицей и представляет собой записанные по порядку коэффициенты при переменных, а $b$ называется столбцом её свободных членов. Матрица $A$, записанная через черту со столбцом свободных членов называется расширенной матрицей:

$A = \begin{array}{ccc|c} a_{11} & … & a_{1n} & b_1 \\ \vdots & … & \vdots & ...\\ a_{m1} & … & a_{mn} & b_m \end{array}$

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

$\begin{cases} α_{1j_{1}} \cdot x_{j_{1}} + α_{1j_{2}} \cdot x_{j_{2}}...+ α_{1j_{r}} \cdot x_{j_{r}} +... α_{1j_{n}} \cdot x_{j_{n}} = β_1 \\ α_{2j_{2}} \cdot x_{j_{2}}...+ α_{2j_{r}} \cdot x_{j_{r}} +... α_{2j_{n}} \cdot x_{j_{n}} = β_2 \\ ...\\ α_{rj_{r}} \cdot x_{j_{r}} +... α_{rj_{n}} \cdot x_{j_{n}} = β_r \\ 0 = β_(r+1) \\ … \\ 0 = β_m \end{cases}$ (1)

Матрица, полученная из коэффициентов преобразованной системы уравнения (1) называется ступенчатой, вот так обычно выглядят ступенчатые матрицы:

$A = \begin{array}{ccc|c} a_{11} & a_{12} & a_{13} & b_1 \\ 0 & a_{22} & a_{23} & b_2\\ 0 & 0 & a_{33} & b_3 \end{array}$

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

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

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

Основные правила и разрешаемые преобразования при использовании метода Гаусса

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

Таким преобразованиями считаются операции, которые возможно применять к матрице или системе уравнений без изменения её смысла:

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

Все элементарные преобразования являются обратимыми.

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

Различают три возникающих случая при использовании метода Гаусса для решения систем:

  1. Когда система несовместная, то есть у неё нет каких-либо решений
  2. У системы уравнений есть решение, причём единственное, а количество ненулевых строк и столбцов в матрице равно между собой.
  3. Система имеет некое количество или множество возможных решений, а количество строк в ней меньше чем количество столбцов.

Исход решения с несовместной системой

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

$\begin{array}{ccc|c} 2 & -1 & 3 & 0 \\ 1 & 0 & 2 & 0\\ 0 & 0 & 0 & 1 \end{array}$

В последней строчке возникло невыполняемое равенство: $0 \cdot x_{31} + 0 \cdot x_{32} + 0 \cdot x_{33} = 1$.

Система уравнений, у которой есть только одно решение

Данные системы после приведения к ступенчатой матрице и удаления строчек с нулями имеют одинаковое количество строк и столбцов в основной матрице. Вот простейший пример такой системы:

$\begin{cases} x_1 - x_2 = -5 \\ 2 \cdot x_1 + x_2 = -7 \end{cases}$

Запишем её в виде матрицы:

$\begin{array}{cc|c} 1 & -1 & -5 \\ 2 & 1 & -7 \end{array}$

Чтобы привести первую ячейку второй строчки к нулю, домножим верхнюю строку на $-2$ и вычтем её из нижней строчки матрицы, а верхнюю строчку оставим в исходном виде, в итоге имеем следующее:

$\begin{array}{cc|c} 1 & -1 & -5 \\ 0 & 3 & 10 \end{array}$

Этот пример можно записать в виде системы:

$\begin{cases} x_1 - x_2 = -5 \\ 3 \cdot x_2 = 10 \end{cases}$

Из нижнего уравнения выходит следующее значение $x$: $x_2 = 3 \frac{1}{3}$. Подставим это значение в верхнее уравнение: $x_1 – 3 \frac{1}{3}$, получаем $x_1 = 1 \frac{2}{3}$.

Система, обладающая множеством возможных вариантов решений

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

Переменные в такой системе делятся на два вида: базисные и свободные. При преобразовании такой системы содержащиеся в ней основные переменные необходимо оставить в левой области до знака “=”, а остальные переменные перенести в правую часть равенства.

У такой системы есть только некое общее решение.

Разберём следующую систему уравнений:

$\begin{cases} 2y_1 + 3y_2 + x_4 = 1 \\ 5y_3 - 4y_4 = 1 \end{cases}$

Запишем её в виде матрицы:

$\begin{array}{cccc|c} 2 & 3 & 0 & 1 & 1 \\ 0 & 0 & 5 & 4 & 1 \\ \end{array}$

Наша задача найти общее решение системы. Для этой матрицы базисными переменными будут $y_1$ и $y_3$ (для $y_1$ - так как он стоит на первом месте, а в случае $y_3$ - располагается после нулей).

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

Оставшиеся переменные называются свободными, через них нам необходимо выразить базисные.

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

$5y_3 – 4y_4 = 1$

$5y_3 = 4y_4 + 1$

$y_3 = \frac{4/5}y_4 + \frac{1}{5}$.

Теперь в верхнее уравнение системы $2y_1 + 3y_2 + y_4 = 1$ подставляем выраженное $y_3$: $2y_1 + 3y_2 - (\frac{4}{5}y_4 + \frac{1}{5}) + y_4 = 1$

Выражаем $y_1$ через свободные переменные $y_2$ и $y_4$:

$2y_1 + 3y_2 - \frac{4}{5}y_4 - \frac{1}{5} + y_4 = 1$

$2y_1 = 1 – 3y_2 + \frac{4}{5}y_4 + \frac{1}{5} – y_4$

$2y_1 = -3y_2 - \frac{1}{5}y_4 + \frac{6}{5}$

$y_1 = -1.5x_2 – 0.1y_4 + 0.6$

Решение готово.

Пример 1

Решить слау методом Гаусса. Примеры. Пример решения системы линейных уравнений заданных матрицей 3 на 3 используя метод Гаусса

$\begin{cases} 4x_1 + 2x_2 – x_3 = 1 \\ 5x_1 + 3x_2 - 2x^3 = 2\\ 3x_1 + 2x_2 – 3x_3 = 0 \end{cases}$

Запишем нашу систему в виде расширенной матрицы:

$\begin{array}{ccc|c} 4 & 2 & -1 & 1 \\ 5 & 3 & -2 & 2 \\ 3 & 2 & -3 & 0\\ \end{array}$

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

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

$\begin{array}{ccc|c} -1 & -1 & 1 & -1 \\ 5 & 3 & -2 & 2 \\ 3 & 2 & -3 & 0\\ \end{array}$

$\begin{array}{ccc|c} -1 & -1 & 1 & -1 \\ 0 & -2 & 3 & -3 \\ 0 & -1 & 0 & -3\\ \end{array}$

Домножим верхнюю и последнюю строчки на $-1$, а также поменяем местами последнюю и среднюю строки:

$\begin{array}{ccc|c} 1 & 1 & -1 & 1 \\ 0 & 1 & 0 & 3 \\ 0 & -2 & 3 & -3\\ \end{array}$

$\begin{array}{ccc|c} 1 & 1 & -1 & 1 \\ 0 & 1 & 0 & 3 \\ 0 & 0 & 3 & 3\\ \end{array}$

И разделим последнюю строчку на $3$:

$\begin{array}{ccc|c} 1 & 1 & -1 & 1 \\ 0 & 1 & 0 & 3 \\ 0 & 0 & 1 & 1\\ \end{array}$

Получаем следующую систему уравнений, равносильную исходной:

$\begin{cases} x_1 + x_2 – x_3 = 1\\ x_2 = 3 \\ x_3 = 1 \end{cases}$

Из верхнего уравнения выражаем $x_1$:

$x1 = 1 + x_3 – x_2 = 1 + 1 – 3 = -1$.

Пример 2

Пример решения системы, заданной с помощью матрицы 4 на 4 методом Гаусса

$\begin{array}{cccc|c} 2 & 5 & 4 & 1 & 20 \\ 1 & 3 & 2 & 1 & 11 \\ 2 & 10 & 9 & 7 & 40\\ 3 & 8 & 9 & 2 & 37 \\ \end{array}$.

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

$\begin{array}{cccc|c} 1 & 3 & 2 & 1 & 11 \\ 2 & 5 & 4 & 1 & 20 \\ 2 & 10 & 9 & 7 & 40\\ 3 & 8 & 9 & 2 & 37 \\ \end{array}$.

Теперь умножим верхнюю строчку на $-2$ и прибавим ко 2-ой и к 3-ьей. К 4-ой прибавляем 1-ую строку, домноженную на $-3$:

$\begin{array}{cccc|c} 1 & 3 & 2 & 1 & 11 \\ 0 & -1 & 0 & -1 & -2 \\ 0 & 4 & 5 & 5 & 18\\ 0 & -1 & 3 & -1 & 4 \\ \end{array}$

Теперь к строке с номером 3 прибавляем строку 2, умноженную на $4$, а к строке 4 прибавляем строку 2, умноженную на $-1$.

$\begin{array}{cccc|c} 1 & 3 & 2 & 1 & 11 \\ 0 & -1 & 0 & -1 & -2 \\ 0 & 0 & 5 & 1 & 10\\ 0 & 0 & 3 & 0 & 6 \\ \end{array}$

Домножаем строку 2 на $-1$, а строку 4 делим на $3$ и ставим на место строки 3.

$\begin{array}{cccc|c} 1 & 3 & 2 & 1 & 11 \\ 0 & 1 & 0 & 1 & 2 \\ 0 & 0 & 1 & 0 & 2\\ 0 & 0 & 5 & 1 & 10 \\ \end{array}$

Теперь прибавляем к последней строке предпоследнюю, домноженную на $-5$.

$\begin{array}{cccc|c} 1 & 3 & 2 & 1 & 11 \\ 0 & 1 & 0 & 1 & 2 \\ 0 & 0 & 1 & 0 & 2\\ 0 & 0 & 0 & 1 & 0 \\ \end{array}$

Решаем полученную систему уравнений:

$\begin{cases} m = 0 \\ g = 2\\ y + m = 2\ \ x + 3y + 2g + m = 11\end{cases}$

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

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

О методе

При решении системы линейных уравнений методом Гаусса выполняются следующие шаги.

  1. Записываем расширенную матрицу.
  2. Фактически алгоритм разделяют на прямой и обратный ход. Прямым ходом называется приведение матрицы к ступенчатому виду. Обратным ходом называется приведение матрицы к специальному ступенчатому виду. Но на практике удобнее сразу занулять то, что находится и сверху и снизу рассматриваемого элемента. Наш калькулятор использует именно этот подход.
  3. Важно отметить, что при решении методом Гаусса, наличие в матрице хотя бы одной нулевой строки с НЕнулевой правой частью (столбец свободных членов) говорит о несовместности системы. Решение в таком случае не существует.

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

Карл Фридрих Гаусс, величайший математик долгое время колебался, выбирая между философией и математикой. Возможно, именно такой склад ума позволил ему столь заметно "наследить" в мировой науке. В частности, создав "Метод Гаусса" ...

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

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

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

Например, обучая методу Гаусса...

Метод Гаусса в 5 классе школы

Оговорюсь сразу: метод Гаусса имеет гораздо более широкое применение, например, при решении систем линейных уравнений . То, о чем мы будем говорить, проходят в 5 классе. Это начала , уяснив которые, гораздо легче разобраться в более "продвинутых вариантах". В этой статье мы говорим о методе (способе) Гаусса при нахождении суммы ряда

Вот пример, который принес из школы мой младший сын, посещающий 5 класс московской гимназии.

Школьная демонстрация метода Гаусса

Учитель математики с использованием интерактивной доски (современные методы обучения ) показал детям презентацию истории "создания метода" маленьким Гауссом.

Школьный учитель выпорол маленького Карла (устаревший метод, нынче в школах не применяется) за то, что тот,

вместо того, чтобы последовательно складывая числа от 1 до 100 найти их сумму заметил , что пары чисел, равно отстоящие от краев арифметической прогрессии, в сумме дают одно и то же число. например, 100 и 1, 99 и 2. Посчитав количество таких пар, маленький Гаусс почти моментально решил предложенную учителем задачу. За что и был подвергнут экзекуции на глазах изумленной публики. Чтобы остальным думать было неповадно.

Что сделал маленький Гаусс, развивший чувство числа ? Заметил некоторую особенность числового ряда с постоянным шагом (арифметической прогрессии). И именно это сделало его впоследствии великим ученым, умеющим замечать , обладающим чувством, инстинктом понимания .

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

"Математику уже затем учить надо, что она ум в порядок приводит.
М.В.Ломоносов".

Однако, последователи тех, кто порол розгами будущих гениев, превратили Метод в нечто противоположное. Как 35 лет назад говорил мой научный руководитель: "Занаучили вопрос". Или как сказал вчера о методе Гаусса мой младший сын: "Может не стоит из этого большую науку делать-то, а?"

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

Однако, продолжим...

Методы объяснения метода Гаусса в 5 классе школы

Учитель математики московской гимназии, объясняя метод Гаусса по-Виленкину, усложнил задание.

Что, если разность (шаг) арифметической прогрессии будет не единица, а другое число? Например, 20.

Задача, которую он дал пятиклассникам:


20+40+60+80+ ... +460+480+500


Прежде, чем познакомиться с гимназическим методом, заглянем в Сеть: как это делают школьные учителя - репетиторы по математике?..

Метод Гаусса: объяснение №1

Известный репетитор на своем канале YOUTUBE приводит следующие рассуждения:

"запишем числа от 1 до 100 следующим образом:

сначала ряд чисел от 1 до 50, а строго под ним другой ряд чисел от 50 до 100, но в обратной последовательности"


1, 2, 3, ... 48, 49, 50

100, 99, 98 ... 53, 52, 51

"Обратите внимание: сумма каждой пары чисел из верхнего и нижнего рядов одинакова и равняется 101 ! Посчитаем количество пар, оно составляет 50 и умножим сумму одной пары на количество пар! Вуаля: Ответ готов!".

"Если вы не смогли понять - не расстраивайтесь!", - три раза в процессе объяснения повторил учитель. "Этот метод вы будете проходить в 9 классе!"

Метод Гаусса: объяснение №2

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

Для непосвященных: 5 это одно из чисел Фибоначчи, традиционно считающееся магическим. Метод из 5 шагов всегда более научен, чем метод, например, из 6 шагов. ... И это вряд ли случайность, скорее всего, Автор - скрытый приверженец теории Фибоначчи

Дана арифметическая прогрессия: 4, 10, 16 ... 244, 250, 256 .

Алгоритм нахождения суммы чисел ряда методом Гаусса:


  • Шаг 1: переписать заданную последовательность чисел наоборот, точно под первой.
  • 4, 10, 16 ... 244, 250, 256

    256, 250, 244 ... 16, 10, 4

  • Шаг 2: посчитать суммы пар чисел, расположенных в вертикальных рядах: 260.
  • Шаг 3: посчитать, сколько таких пар в числовом ряду. Для этого вычесть из максимального числа числового ряда минимальное и разделить на величину шага: (256 - 4) / 6 = 42.
  • При этом нужно помнить о правиле "Плюс один" : к полученному частному необходимо прибавить единицу: иначе мы получим результат, меньший на единицу, чем истинное число пар: 42 + 1 = 43.

  • Шаг 4: умножить сумму одной пары чисел на количество пар: 260 х 43 = 11 180
  • Шаг5: поскольку мы посчитали сумму пар чисел , то полученную сумму следует разделить на два: 11 180 / 2 = 5590.
  • Это и есть искомая сумма арифметической прогрессии от 4 до 256 с разницей 6 !

    Метод Гаусса: объяснение в 5 классе московской гимназии

    А вот как требовалось решить задачу нахождения суммы ряда:

    20+40+60+ ... +460+480+500

    в 5 классе московской гимназии, учебник Виленкина (со слов моего сына).

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

    При этом требовалось следующее:

  • Шаг 1: обязательно записать в тетради все числа ряда от 20 до 500 (с шагом 20).
  • Шаг 2: записать последовательно слагаемые - пары чисел: первого с последним, второго с предпоследним и т.д. и посчитать их суммы.
  • Шаг 3: посчитать "сумму сумм" и найти сумму всего ряда.
  • Как видим, это более компактная и эффективная методика: число 3 - также член последовательности Фибоначчи

    Мои комментарии к школьной версии метода Гаусса

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

    Между прочим: знаете ли вы. что наша система образования уходит корнями в немецкую школу 18 - 19 веков?

    Но Гаусс выбрал математику.

    В чем суть его метода?

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

    Разве возможно одной из приведенных "модификаций метода" Гаусса посчитать сумму чисел арифметической прогрессии почти моментально ? По "алгоритмам" маленький Карл гарантированно избежал бы порки, воспитал отвращение к математике и подавил на корню свои творческие импульсы.

    Почему репетитор так настойчиво советовал пятиклассникам "не бояться непонимания" метода, убеждая, что "такие" задачи они будут решать аж в 9 классе? Психологически безграмотное действие . Удачным приемом было отметить : "Видите? Вы уже в 5 классе можете решать задачи, которые будете проходить только через 4 года! Какие вы молодцы!".

    Для использования метода Гаусса достаточно уровня 3 класса , когда нормальные дети уже умеют складывать, умножать и делить 2 -3 значные числа. Проблемы возникают из-за неспособности взрослых учителей, "не въезжающих", как объяснить простейшие вещи нормальным человеческим языком, не то что математическим... Не способных заинтересовать математикой и напрочь отбивающих охоту даже у "способных".

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

  • Как (в общем случае) узнать, на каком именно числе следует "развернуть" запись чисел в методе № 1?
  • Что делать, если количество членов ряда окажется нечетным ?
  • Зачем превращать в "Правило плюс 1" то, что ребенок мог просто усвоить еще в первом классе, если бы развивал "чувство числа", а не запоминал "счет через десяток"?
  • И, наконец: куда исчез НОЛЬ, гениальное изобретение, которому более 2 000 лет и которым современные учителя математики избегают пользоваться?!.
  • Метод Гаусса, мои объяснения

    Нашему ребенку мы с супругой объясняли этот "метод", кажется, еще до школы...

    Простота вместо усложнения или игра в вопросы - ответы

    ""Посмотри, вот числа от 1 до 100. Что ты видишь?"

    Дело не в том, что именно увидит ребенок. Фокус в том, чтобы он стал смотреть.

    "Как можно их сложить?" Сын уловил, что такие вопросы не задаются "просто так" и нужно взглянуть на вопрос "как-то по-другому, иначе, чем он делает обычно"

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

    "Что легче: сложить, например, 5 и 6 или 5 и 95?" Наводящий вопрос... Но ведь любое обучение и сводится к "наведению" человека на "ответ" - любым приемлемым для него способом.

    На этом этапе уже могут возникнуть догадки о том, как "сэкономить" на вычислениях.

    Все, что мы сделали - намекнули: "лобовой, линейный" метод счета - не единственно возможный. Если ребенок это усек, то впоследствии он выдумает еще много таких методов, ведь это интересно!!! И он точно избежит "непонимания" математики, не будет испытывать к ней отвращение. Он получил победу!

    Если ребенок обнаружил , что сложение пар чисел, дающих в сумме сотню, плевое занятие, то "арифметическая прогрессия с разницей 1" - довольно муторная и неинтересная для ребенка вещь - вдруг для него обрела жизнь . Из хаоса возник порядок, а это всегда вызывает энтузиазм: так мы устроены !

    Вопрос на засыпку: зачем после полученного ребенком озарения вновь загонять его в рамки сухих алгоритмов, к тому же функционально бесполезных в этом случае?!

    Зачем заставлять тупо переписывать числа последовательности в тетрадь: чтобы даже у способных не возникло и единого шанса на понимание? Статистически, конечно, а ведь массовое образование заточено на "статистику" ...

    Куда делся ноль?

    И все-таки складывать числа, дающие в сумме 100 для ума гораздо более приемлемо, чем дающие 101 ...

    "Школьный метод Гаусса" требует именно этого: бездумно складывать равноотстоящие от центра прогрессии пары чисел, несмотря ни на что .

    А если посмотреть?

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

    Гораздо проще преобразовать ряд чисел, начинающийся с 1, в ряд, начинающийся с 0. Сумма ведь не изменится, не правда ли? Нужно перестать "думать учебниками" и начать смотреть... И увидеть, что пары с суммой 101 вполне можно заменить парами с суммой 100 !

    0 + 100, 1 + 99, 2 + 98 ... 49 + 51

    Как упразднить "правило плюс 1"?

    Если честно, то я о таком правиле впервые услышал от того ютубовского репетитора...

    Как я до сих пор поступаю, когда требуется определить количество членов какого-нибудь ряда?

    Смотрю на последовательность:

    1, 2, 3, .. 8, 9, 10

    а когда совсем устал, то на более простой ряд:

    1, 2, 3, 4, 5

    и прикидываю: если вычесть из 5 единицу, то получится 4, но я совершенно ясно вижу 5 чисел! Следовательно, нужно прибавить единицу! Чувство числа, развитое в начальной школе, подсказывает: даже если членов ряда будет целый гугл (10 в сотой степени), закономерность останется той же.

    На фиг правила?..

    Чтобы через пару - тройку лет заполнить все пространство между лбом и затылком и перестать соображать? А зарабатывать на хлеб с маслом как? Ведь мы ровными шеренгами движемся в эпоху цифровой экономики!

    Еще о школьном методе Гаусса: "зачем науку-то из этого делать?.."

    Я не зря разместил скриншот из тетрадки сына...

    "Что там было, на уроке?"

    "Ну, я сосчитал сразу, поднял руку, но она не спросила. Поэтому, пока остальные считали я стал делать ДЗ по русскому языку, чтобы не тратить время. Потом, когда остальные дописали (???), она вызвала меня к доске. Я сказал ответ."

    "Правильно, покажи, как ты решал", - сказала учительница. Я показал. Она сказала: "Неправильно, нужно считать так, как я показала!"

    "Хорошо, что двойку не поставила. И заставила написать в тетради "ход решения" по-ихнему. Зачем науку-то большую из этого делать?.."

    Главное преступление учителя математики

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

    В чем главная ошибка школьного подхода ? Или, как я выразился - преступление школьных учителей математики против детей?

    Алгоритм непонимания

    Что делают школьные методисты, абсолютное большинство которых думать не умеет ни фига?

    Создают методики и алгоритмы (см. ). Это защитная реакция, предохраняющая учителей от критики ("Все делается согласно..."), а детей - от понимания. И таким образом - от желания критиковать учителей! (Вторая производная чиновничьей "мудрости", научный подход к проблеме ). Человек не улавливая смысл скорее будет пенять на собственное непонимание, а не на тупость школьной системы.

    Что и происходит: родители пеняют на детей, а учителя... то же на детей, "не понимающих математику!..

    Смекаете?

    Что сделал маленький Карл?

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

    Метод Гаусса по-Виленкину

    В школе учат, что метод Гаусса состоит в том, чтобы

  • попарно находить суммы чисел, равноотстоящих от краев числового ряда, непременно начиная с краев !
  • находить число таких пар и т.д.
  • что, если число элементов ряда окажется нечетным , как в задаче, которую задали сыну?..

    "Подвох" состоит в том, что в этом случае следует обнаружить "лишнее" число ряда и прибавить его к сумме пар. В нашем примере это число 260 .

    Как обнаружить? Переписывая все пары чисел в тетрадь! (Именно почему учительница заставила детей делать эту тупую работу, пытаясь научить "творчеству" методом Гаусса... И именно поэтому такой "метод" практически неприменим к большим рядам данных, И именно поэтому он не является методом Гаусса).

    Немного творчества в школьной рутине...

    Сын же поступил иначе.

  • Сначала он отметил, что умножать легче число 500, а не 520
  • (20 + 500, 40 + 480 ...).

  • Потом он прикинул: количество шагов оказалось нечетным: 500 / 20 = 25.
  • Тогда он в начало ряда добавил НОЛЬ (хотя можно было и отбросить последний член ряда, что также обеспечило бы четность) и сложил числа, дающие в сумме 500
  • 0+500, 20+480, 40+460 ...

  • 26 шагов это 13 пар "пятисоток": 13 х 500 = 6500..
  • Если мы отбросили последний член ряда, то пар будет 12, но к результату вычислений следует не забыть прибавить "отброшенную" пятисотку. Тогда: (12 х 500) + 500 = 6500 !

  • Несложно, правда?

    А практически делается еще легче, что и позволяет выкроить 2-3 минуты на ДЗ по русскому, пока остальные "считают". К тому же сохраняет количество шагов методики: 5, что не позволяет критиковать подход за антинаучность.

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


    Все, что я так долго и нудно описал можно объяснить нормальному ребенку максимум за полчаса. Вместе с примерами.

    Причем так, что он это никогда не забудет.

    И это будет шаг к пониманию ... не только математики.

    Признайтесь: сколько раз в жизни вы складывали методом Гаусса? И я ни разу!

    Но инстинкт понимания , который развивается (или гасится) в процессе изучения математических методов в школе... О!.. Это поистине незаменимая вещь!

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

    Несколько слов в защиту учителей...

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

    Некоторые учителя понимают абсурдность происходящего, но что делать? Закон об образовании, ФГОСы, методики, технологические карты уроков... Все должно делаться "в соответствии и на основании" и все должно быть задокументировано. Шаг в сторону - встал в очередь на увольнение. Не будем ханжами: зарплата московских учителей ну очень неплохая... Уволят - куда идти?..

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

    Дана система линейных алгебраических уравнений (СЛАУ) с неизвестными. Требуется решить эту систему: определить, сколько решений она имеет (ни одного, одно или бесконечно много), а если она имеет хотя бы одно решение, то найти любое из них.

    Формально задача ставится следующим образом: решить систему:

    где коэффициенты и известны, а переменные — искомые неизвестные.

    Удобно матричное представление этой задачи:

    где — матрица , составленная из коэффициентов , и — векторы-столбцы высоты .

    Стоит отметить, что СЛАУ может быть не над полем действительных чисел, а над полем по модулю какого-либо числа , т.е.:

    — алгоритм Гаусса работает и для таких систем тоже (но этот случай будет рассмотрен ниже в отдельном разделе).

    Алгоритм Гаусса

    Строго говоря, описываемый ниже метод правильно называть методом "Гаусса-Жордана" (Gauss-Jordan elimination), поскольку он является вариацией метода Гаусса, описанной геодезистом Вильгельмом Жорданом в 1887 г. (стоит отметить, что Вильгельм Жордан не является автором ни теоремы Жордана о кривых, ни жордановой алгебры — всё это три разных учёных-однофамильца; кроме того, по всей видимости, более правильной является транскрипция "Йордан", но написание "Жордан" уже закрепилось в русской литературе). Также интересно заметить, что одновременно с Жорданом (а по некоторым данным даже раньше него) этот алгоритм придумал Класен (B.-I. Clasen).

    Базовая схема

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

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

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

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

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

    Поиск опорного элемента (pivoting)

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

    Чтобы сделать алгоритм работающим в таких случаях, как раз и существует процесс выбора опорного элемента (на английском языке это называется одним словом "pivoting"). Он заключается в том, что производится перестановка строк и/или столбцов матрицы, чтобы в нужном элементе оказалось ненулевое число.

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

    К счастью, для корректности метода достаточно одних только обменов строк (т.н. "partial pivoting", в отличие от "full pivoting", когда обмениваются и строки, и столбцы). Но какую же именно строку следует выбирать для обмена? И правда ли, что поиск опорного элемента надо делать только тогда, когда текущий элемент нулевой?

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

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

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

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

    Вырожденные случаи

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

    Рассмотрим теперь общий случай — когда и не обязательно равны. Предположим, что опорный элемент на -ом шаге не нашёлся. Это означает, что в -ом столбце все строки, начиная с текущей, содержат нули. Утверждается, что в этом случае эта -ая переменная не может быть определена, и является независимой переменной (может принимать произвольное значение). Чтобы алгоритм Гаусса-Жордана продолжил свою работу для всех последующих переменных, в такой ситуации надо просто пропустить текущий -ый столбец, не увеличивая при этом номер текущей строки (можно сказать, что мы виртуально удаляем -ый столбец матрицы).

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

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

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

    Реализация

    Приведём здесь реализацию алгоритма Гаусса-Жордана с эвристикой partial pivoting (выбором опорного элемента как максимума по столбцу).

    На вход функции передаётся сама матрица системы . Последний столбец матрицы — это в наших старых обозначениях столбец свободных коэффициентов (так сделано для удобства программирования — т.к. в самом алгоритме все операции со свободными коэффициентами повторяют операции с матрицей ).

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

    int gauss (vector < vector< double > > a, vector< double > & ans) { int n = (int ) a.size () ; int m = (int ) a[ 0 ] .size () - 1 ; vector< int >< m && row< n; ++ col) { int sel = row; for (int i= row; i< n; ++ i) if (abs (a[ i] [ col] ) > abs (a[ sel] [ col] ) ) sel = i; if (abs (a[ sel] [ col] ) < EPS) continue ; for (int i= col; i<= m; ++ i) swap (a[ sel] [ i] , a[ row] [ i] ) ; where[ col] = row; for (int i= 0 ; i< n; ++ i) if (i ! = row) { double c = a[ i] [ col] / a[ row] [ col] ; for (int j= col; j<= m; ++ j) a[ i] [ j] - = a[ row] [ j] * c; } ++ row; } ans.assign (m, 0 ) ; for (int i= 0 ; i< m; ++ i) if (where[ i] ! = - 1 ) ans[ i] = a[ where[ i] ] [ m] / a[ where[ i] ] [ i] ; for (int i= 0 ; i< n; ++ i) { double sum = 0 ; for (int j= 0 ; j< m; ++ j) sum + = ans[ j] * a[ i] [ j] ; if (abs (sum - a[ i] [ m] ) > EPS) return 0 ; } for (int i= 0 ; i< m; ++ i) if (where[ i] == - 1 ) return INF; return 1 ; }

    В функции поддерживаются два указателя — на текущий столбец и текущую строку .

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

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

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

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

    Асимптотика

    Оценим асимптотику полученного алгоритма. Алгоритм состоит из фаз, на каждой из которых происходит:

    Очевидно, первый пункт имеет меньшую асимптотику, чем второй. Заметим также, что второй пункт выполняется не более раз — столько, сколько может быть зависимых переменных в СЛАУ.

    Таким образом, итоговая асимптотика алгоритма принимает вид .

    При эта оценка превращается в .

    Заметим, что когда СЛАУ рассматривается не в поле действительных чисел, а в поле по модулю два, то систему можно решать гораздо быстрее — об этом см. ниже в разделе "Решение СЛАУ по модулю".

    Более точная оценка числа действий

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

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

    Дополнения

    Ускорение алгоритма: разделение его на прямой и обратный ход

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

    В целом, в отличие от описанного выше алгоритма, можно приводить матрицу не к диагональному виду, а к треугольному виду — когда все элементы строго ниже главной диагонали равны нулю.

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

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

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

    Таким образом, если , то данный алгоритм будет делать уже операций — что в два раза меньше алгоритма Гаусса-Жордана.

    Решение СЛАУ по модулю

    Для решения СЛАУ по модулю можно применять описанный выше алгоритм, он сохраняет свою корректность.

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

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

    Особенно замечателен модуль, равный двум : для него все операции с матрицей можно производить очень эффективно. Например, отнимание одной строки от другой по модулю два — это на самом деле их симметрическая разность ("xor"). Таким образом, весь алгоритм можно значительно ускорить, сжав всю матрицу в битовые маски и оперируя только ими. Приведём здесь новую реализацию основной части алгоритма Гаусса-Жордана, используя стандартный контейнер C++ "bitset":

    int gauss (vector < bitset< N> > a, int n, int m, bitset< N> & ans) { vector< int > where (m, - 1 ) ; for (int col= 0 , row= 0 ; col< m && row< n; ++ col) { for (int i= row; i< n; ++ i) if (a[ i] [ col] ) { swap (a[ i] , a[ row] ) ; break ; } if (! a[ row] [ col] ) continue ; where[ col] = row; for (int i= 0 ; i< n; ++ i) if (i ! = row && a[ i] [ col] ) a[ i] ^ = a[ row] ; ++ row; }

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

    Если модуль произвольный (не обязательно простой), то всё становится несколько сложнее. Понятно, что пользуясь Китайской теоремой об остатках , мы сводим задачу с произвольным модулем только к модулям вида "степень простого". [ дальнейший текст был скрыт, т.к. это непроверенная информация — возможно, неправильный способ решения ]

    Наконец, рассмотрим вопрос числа решений СЛАУ по модулю . Ответ на него достаточно прост: число решений равно , где — модуль, — число независимых переменных.

    Немного о различных способах выбора опорного элемента

    Как уже говорилось выше, однозначного ответа на этот вопрос нет.

    Эвристика "partial pivoting", которая заключалась в поиске максимального элемента в текущем столбце, работает на практике весьма неплохо. Также оказывается, что она даёт практически тот же результат, что и "full pivoting" — когда опорный элемент ищется среди элементов целой подматрицы — начиная с текущей строки и с текущего столбца.

    Но интересно отметить, что обе эти эвристики с поиском максимального элемента, фактически, очень зависят от того, насколько были промасштабированы исходные уравнения. Например, если одно из уравнений системы умножить на миллион, то это уравнение почти наверняка будет выбрано в качестве ведущего на первом же шаге. Это кажется достаточно странным, поэтому логичен переход к немного более сложной эвристике — так называемому "implicit pivoting" .

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

    Улучшение найденного ответа

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

    В связи с этим, полученный алгоритмом Гаусса-Жордана ответ можно улучшить, применив к нему какой-либо простой численный метод — например, метод простой итерации.

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

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

    Литература

    • William H. Press, Saul A. Teukolsky, William T. Vetterling, Brian P. Flannery. Numerical Recipes: The Art of Scientific Computing
    • Anthony Ralston, Philip Rabinowitz. A first course in numerical analysis

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

    Элементарные преобразования системы уравнений - это:

    1. Вычеркивание из системы тривиальных уравнений, т.е. таких, у которых все коэффициенты равны нулю;
    2. Умножение любого уравнения на число, отличное от нуля;
    3. Прибавление к любому i -му уравнению любого j -то уравнения, умноженного на любое число.

    Переменная x i называется свободной, если эта переменная не является разрешенной, а вся система уравнений - является разрешенной.

    Теорема. Элементарные преобразования переводят систему уравнений в равносильную.

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

    Итак, метод Гаусса состоит из следующих шагов:

    1. Рассмотрим первое уравнение. Выберем первый ненулевой коэффициент и разделим все уравнение на него. Получим уравнение, в которое некоторая переменная x i входит с коэффициентом 1;
    2. Вычтем это уравнение из всех остальных, умножая его на такие числа, чтобы коэффициенты при переменной x i в остальных уравнениях обнулились. Получим систему, разрешенную относительно переменной x i , и равносильную исходной;
    3. Если возникают тривиальные уравнения (редко, но бывает; например, 0 = 0), вычеркиваем их из системы. В результате уравнений становится на одно меньше;
    4. Повторяем предыдущие шаги не более n раз, где n - число уравнений в системе. Каждый раз выбираем для «обработки» новую переменную. Если возникают противоречивые уравнения (например, 0 = 8), система несовместна.

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

    1. Число переменных равно числу уравнений. Значит, система определена;
    2. Число переменных больше числа уравнений. Собираем все свободные переменные справа - получаем формулы для разрешенных переменных. Эти формулы так и записываются в ответ.

    Вот и все! Система линейных уравнений решена! Это довольно простой алгоритм, и для его освоения вам не обязательно обращаться к репетитору высшей по математике. Рассмотрим пример:

    Задача. Решить систему уравнений:

    Описание шагов:

    1. Вычитаем первое уравнение из второго и третьего - получим разрешенную переменную x 1 ;
    2. Умножаем второе уравнение на (−1), а третье уравнение делим на (−3) - получим два уравнения, в которых переменная x 2 входит с коэффициентом 1;
    3. Прибавляем второе уравнение к первому, а из третьего - вычитаем. Получим разрешенную переменную x 2 ;
    4. Наконец, вычитаем третье уравнение из первого - получаем разрешенную переменную x 3 ;
    5. Получили разрешенную систему, записываем ответ.

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

    Когда может понадобиться общее решение? Если приходится делать меньше шагов, чем k (k - это сколько всего уравнений). Однако причин, по которым процесс заканчивается на некотором шаге l < k , может быть две:

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

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

    Описание шагов:

    1. Вычитаем первое уравнение, умноженное на 4, из второго. А также прибавляем первое уравнение к третьему - получим разрешенную переменную x 1 ;
    2. Вычитаем третье уравнение, умноженное на 2, из второго - получим противоречивое уравнение 0 = −5.

    Итак, система несовместна, поскольку обнаружено противоречивое уравнение.

    Задача. Исследовать совместность и найти общее решение системы:


    Описание шагов:

    1. Вычитаем первое уравнение из второго (предварительно умножив на два) и третьего - получим разрешенную переменную x 1 ;
    2. Вычитаем второе уравнение из третьего. Поскольку все коэффициенты в этих уравнениях совпадают, третье уравнение превратится в тривиальное. Заодно умножим второе уравнение на (−1);
    3. Вычитаем из первого уравнения второе - получим разрешенную переменную x 2 . Вся система уравнений теперь тоже разрешенная;
    4. Поскольку переменные x 3 и x 4 - свободные, переносим их вправо, чтобы выразить разрешенные переменные. Это и есть ответ.

    Итак, система совместная и неопределенная, поскольку есть две разрешенных переменных (x 1 и x 2) и две свободных (x 3 и x 4).



    Читайте также: