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

Решение систем уравнений – Учебники по математическому анализу

Решение систем линейных уравнений; Сокращение строк — HMC Calculus Tutorial

$\def\Height{\vphantom{\begin{array}{c}a\cr a\cr a\cr\end{массив}}} \def\|{\!\!\smash{\left|\Height\right.}\!\!} \def\Matrix#1{\left[\;\;\Height\begin{массив}{rrrcr}#1\end{массив}\;\;\right]} $ Системы линейных уравнений возникают во всевозможных приложениях во многих разные области обучения. Рассматриваемый здесь метод может быть реализовано для решения линейной системы

$\begin{массив}{ccccccccc} a_{11}x_{1} & + & a_{12}x_{2} & + & \ldots & + & a_{1n}x_{n} & = & b_{1} \\ a_{21}x_{1} & + & a_{22}x_{2} & + & \ldots & + & a_{2n}x_{n} & = & b_{2} \\ \vdots & & \vdots & & \ddots & & \vdots & & \vdots \\ a_{m1}z_{1} & + & a_{m2}x_{2} & + & \ldots & + & a_{mn}x_{n} & = & b_{m} \\ \end{массив}$

любого размера. Запишем эту систему в матричной форме как

$$ \left[\begin{массив}{cccc} а_{11} и а_{12} и \cdots и а_{1n}\\ а_{21} и а_{22} и \cdots и а_{2n}\\ \vdots & \vdots & \ddots & \ddots\\ a_{m1} & a_{m2} & \cdots & a_{mn} \конец{массив} \правильно] \левый[ \начать{массив}{с} х_1\\ х_2\\ \vdots\\ х_n \конец{массив} \справа] = \левый[ \начать{массив}{с} б_1\\ Би 2\\ \vdots\\ б_м \конец{массив} \правильно] $$

То есть $ A{\bf x} = {\bf b}. $

Мы можем зафиксировать всю информацию, содержащуюся в системе, в одиночная дополненная матрица $$ \Матрица{ a_{11} & a_{12} & \cdots & a_{1n} & & b_{1}\\ a_{21} & a_{22} & \cdots & a_{2n} &\|& b_{2}\\ \vdots & \vdots & \ddots & \vdots &\|& \vdots\\ a_{m1} & a_{m2} & \cdots & a_{mn} & & b_{m}\\ } $$ Будем решать исходную систему линейных уравнений, выполнив последовательность следующих элементарных операций над строками на дополненной матрица:

Элементарные операции со строками
  • Поменять местами две строки.
  • Умножить одну строку на ненулевое число.
  • Добавить несколько строк в другую строку.

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

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

Форма рядного эшелона

Говорят, что матрица имеет форму строк-ступеней , если

  1. Все строки, полностью состоящие из нулей, находятся внизу.
  2. В каждой строке первая ненулевая запись слева равна 1, называется
    ведущим 1
    .
  3. Ведущая 1 в каждой строке находится справа от всех ведущих 1 в ряды над ним.

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

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

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

Пример

Расширенная матрица $$ А_{1} = \Матрица{ 1 & 0 & 0 & & 2\\ 0 & 1 & 0 &\|& 3\\ 0 и 0 и 1 и & -4 } $$ в редуцированной строчно-эшелонной форме соответствует системе

$\begin{массив}{ccccr} х_1 & & & = & 2\\ & x_2 & & = & 3\\ & & х_3 & = &-4 \end{массив}$

который уже полностью решен!

Расширенная матрица $$ А_{2} = \Матрица{ 1 & 0 & -3 & & -5\\ 0 и 1 и 2 &\|& 4\\ 0 & 0 & 0 & & 0 } $$ также в редуцированном рядно-эшелонном виде соответствует системе

$\begin{массив}{cccr} x_1 & & -3x_3 & = & -5\\ & x_2 & +2x_3 & = & 4\\ & & 0 & = & 0 \end{массив}$

Полагая $x_3=t$, получаем, что $x_2 = -2t+4$ и $x_1=3t-5$. Таким образом система имеет бесконечно много решений, параметризованных для всех $t$ как $$ \left[\begin{массив}{с} х_1\\ х_2\\ х_3 \end{массив}\right] = \left[\begin{массив}{c} 3т-5\\ -2т+4\\ т \конец{массив}\справа] $$

Наконец, расширенная матрица $$ А_{3} = \Матрица{ 1 & 0 & 0 & & 3\\ 0 & 1 & 0 &\|& 2\\ 0 & 0 & 0 & & 1 } $$ снова в редуцированной строчно-эшелонной форме соответствует системе

$\begin{массив}{ccccr} х_1 & & & = & 3\\ & х_2 & & = & 2\\ & & 0 & = & 1 \end{массив}$

которое, очевидно, не имеет решения. Система несовместима.

Примечания
  • Если матрица приводится к ступенчато-строчному виду с помощью элементарных операций над строками, то количество ведущих единиц в результирующей матрице называется рангом $r$ исходной матрицы.
  • Предположим, что система линейных уравнений от $n$ переменных имеет решение. Тогда множество решений имеет $n-r$ параметров, где $r$ — ранг расширенной матрицы. 9{-1}{\bf b}\право.\право]. $$
Исключение по Гауссу
  1. Если матрица уже находится в виде строки-эшелона, остановитесь.
  2. В противном случае найти первый столбец слева с ненулевым запись $a$ и переместите строку, содержащую эту запись, в начало списка. ряды, над которыми ведется работа.
  3. Умножьте эту строку на $1/a$, чтобы получить первую 1.
  4. Вычтите кратные этой строки из строк под ней, чтобы получить каждая запись ниже ведущего 1 нуля. Сейчас мы закончили работу над этим ряд.
  5. Повторите шаги 1$-$4 для строк, над которыми еще ведется работа.
Примечания
  • На практике у вас есть некоторая гибкость в применении алгоритма. Например, на шаге 2 у вас часто есть выбор строк для перемещения наверх.
  • Алгоритм с более интенсивными вычислениями, который переводит матрицу в редуцированную форму строк-ступеней, задается редукцией Гаусса-Джордона.
Пример

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

$\begin{массив}{rcrcrcr} x_1&+&2x_2&+&3x_3&=&9\ 2x_1&-&x_2&+&x_3&=&8\ 3x_1 & & & – & x_3 & = & 3 \end{массив}$.

Расширенная матрица $$ \Матрица{ 1 и 2 и 3 & & 9\\ 2 & -1 & 1 &\|& 8\\ 3 & 0 & -1 & & 3 } $$

Алгоритм исключения Гаусса работает следующим образом:

\ vadurerigh
$\Матрица{ 1 и 2 и 3 & & 9\\ 2 & -1 & 1 &\|& 8\\ 3 & 0 & -1 & & 3 } $
(ряд 1)
(ряд 2)
(ряд 3)
$\Матрица{ 1 и 2 и 3 & & 9\\ 0 и -5 и -5 &\|& -10\\ 0 и -6 и -10 и & -24 } $
(Row 1)
(Row 2$-2\cdot$Row 1)
(Row 3$-3\cdot$Row 1)
$$ \quad\longrightarrow\quad $$ $\Матрица{ 1 и 2 и 3 & & 9\\ 0 и 1 и 1 &\| & 2\\ 0 & -6 & -10 && -24 } $
(Ряд 1)
($-1/5\cdot$Ряд 2)
(Ряд 3)
$$ \quad\longrightarrow\quad $$ $\Матрица{ 1 и 2 и 3 & & 9\\ 0 и 1 и 1 &\|& 2\\ 0 & 0 & -4 & & -12 } $0147
(Ряд 1)
(Ряд 2)
(Ряд 3$+6\cdot$Ряд 2)
$$ \quad\longrightarrow\quad $$ $\Матрица{ 1 и 2 и 3 & & 9\\ 0 и 1 и 1 &\|& 2\\ 0 & 0 & 1 & & 3 } $
(Row 1)
(Row 2)
($-1/4\cdot$Row 3)

Мы привели матрицу к строчно-эшелонному виду. Соответствующий система $$\begin{массив}{rrrrrcr} x_1 & + & 2x_2 & + & 3x_3 & = & 9\\ & & x_2 & + & x_3 & = & 2\\ & & & & x_3 & = & 3 \end{массив}$$

легко решается снизу вверх: \begin{выравнивание*} & & х_3 = 3 \\ & & x_2+3=2 \longrightarrow x_2 =-1\\ & & x_1 +2(-1)+3(3)=9 \longrightarrow x_1 =2.\\ \end{выравнивание*}

Таким образом, решение исходной системы $x_1=2, \quad x_2=-1, \quad x_3=3.$

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

Разведка


Ключевые понятия

Чтобы решить систему линейных уравнений, приведите соответствующую расширенную матрицу к форме строки-эшелона, используя Элементарные операции со строками :

  • Поменяйте местами две строки.
  • Умножить одну строку на ненулевое число.
  • Добавить несколько строк в другую строку.

Исключение по Гауссу — это один из алгоритмов, который сводит матрицы к рядно-кулисная форма.


[Я готов пройти тест.] [Мне нужно просмотреть больше.]

Как вы используете NumPy, SciPy и SymPy для решения систем линейных уравнений? | by Rukshan Pramoditha

Давайте решим линейные системы с уникальным решением, без решения или с бесконечным количеством решений

Photo by Antoine Dautry on Unsplash

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

Процесс решения системы линейных уравнений усложняется при увеличении количества уравнений и переменных. Решение должно удовлетворять каждому уравнению системы. В Python, Numpy ( NUM ERICL PY THON), SCIPY ( SCI ENTIFIC PY THON) и Sympy ( SYMPIC THON ( THAN ( THAN ( THAN ( ( (). системы линейных уравнений. Эти библиотеки используют концепцию векторизации, которая позволяет им эффективно выполнять матричные вычисления, избегая многих на петли.

Не все линейные системы имеют единственное решение. Некоторые из них не имеют решения или имеют бесконечно много решений.

(Изображение автора)

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

Предварительные требования

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

NumPy для науки о данных: часть 1

Основы NumPy и создание массива

в направленииdatascience.com

Приступим!

Посмотрите на следующее изображение, которое содержит линейную систему уравнений.

Линейная система уравнений (Изображение автора)

В этой системе 3 линейных уравнения. Каждое уравнение имеет одинаковый набор переменных, называемых x , y и z . Решение этой линейной системы означает нахождение значений (если они существуют) для x , y и z , которые удовлетворяют всем уравнениям.

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

Расширенная матрица (Изображение автора)

Расширенная матрица состоит из двух частей:

  • Матрица коэффициентов — Это прямоугольный массив, содержащий только коэффициенты переменных. В нашем примере это квадратная матрица 3 x 3 слева от вертикальной линии на картинке выше. Первый столбец содержит коэффициенты х для каждого из уравнений, второй столбец содержит коэффициенты и и так далее. Количество строк равно количеству уравнений в линейной системе. Количество столбцов равно количеству различных переменных в линейной системе. В NumPy это можно представить в виде двумерного массива. Это часто присваивается переменной с заглавной буквой (например, A или B ).
 импортировать numpy как npA = np.array([[2, -3, 1], 
[1, -1, 2],
[3, 1, -1]])
  • Дополнение — Это вектор-столбец справа от вертикальной линии на изображении выше. Он содержит константы линейных уравнений. В нашем примере это вектор-столбец 3 x 1. В NumPy это можно представить как одномерный массив. Это часто присваивается переменной, названной строчной буквой (например, 9).0276 б ).
 импортировать numpy как npb = np.array([-1, -3, 9]) 

Давайте решим следующую линейную систему с помощью NumPy.

(Изображение автора)

Чтобы решить эту проблему сразу, мы используем функцию solve() в подпакете NumPy linalg .

 импортировать numpy как npA = np.array([[2, -3, 1], 
[1, -1, 2],
[3, 1, -1]])b = np.array([- 1, -3, 9])np.linalg.solve(A, b)

Результат:

(Изображение автора)

Ух ты! Приведенная выше линейная система имеет единственное решение:

  • x = 2
  • Y = 1
  • z = -2

Примечание: Аналогичный тип реализации может быть выполнено с помощью Scipy:

.1. A, b) 

Как это работает внутри?

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

Матричное уравнение

(Изображение автора)

Давайте получим то же решение, используя матричное уравнение:

 np. dot(np.linalg.inv(A), b) 
(Изображение автора)

Чтобы иметь решение, должно существовать обратное A , а определитель A должен быть ненулевым:

 np.linalg.det(A) 
(Изображение автора)

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

(Изображение автора)
 импортировать numpy как npA = np.array([[1, -1, 4], 
[3, 0, 1],
[-1, 1, -4]])b = np.array([-5, 0, 20])np.linalg.solve(A, b)

Вывод is:

Сообщение об ошибке (Изображение автора)

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

 np.linalg.det(A) 

Вывод:

(Изображение автора)

Определитель равен нулю. Следовательно, наша матрица коэффициентов (A) сингулярна. Из-за этого приведенная выше система линейных уравнений не имеет решения!

Примечание: Если вы реализуете это с помощью SciPy, будет возвращено сообщение об ошибке аналогичного типа.

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

(Изображение автора)
 import numpy as npA = np.array([[-1, 1, 2], 
[1, 2, 1 ],
[-2, -1, 1]])b = np.array([0, 6, -6])np.linalg.solve(A, b)

Вывод:

Сообщение об ошибке (Изображение автора)

То же, что и в предыдущем случае.

Примечание: Если вы реализуете это с помощью SciPy, будет возвращено сообщение об ошибке аналогичного типа.

Теперь вопрос. Как отличить линейные системы без решения от линейных систем с бесконечным числом решений ? Есть способ.

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

Получение сокращенной формы строки-эшелона

Мы можем использовать пакет Python SymPy для получения сокращенной формы строки-эшелона. Сначала мы создаем расширенную матрицу, а затем используем метод rref() . Давайте попробуем это с линейной системой с уникальным решением:

(Изображение автора)
 из sympy import *augmented_A = Matrix([[2, -3, 1, -1], 
[1, -1, 2, -3],
[3, 1, -1, 9]])augmented_A. rref()[0]
(Изображение автора)

Нам удалось! Получили редуцированную рядно-эшелонную форму. 4-й столбец — это столбец решения. Решение x=2 ,

y=1 и z=-2 что согласуется с предыдущим решением, полученным с использованием np.linalg.solve() .

Давайте попробуем с линейной системой без решения:

(Изображение автора)
 из sympy import *augmented_A = Matrix([[1, -1, 4, -5], 
[3, 0, 1, 0 ],
[-1, 1, -4, 20]])augmented_A.rref()[0]
(Изображение автора)

В этот раз нам это не удалось. Укороченной строево-эшелонной формы у нас не получилось. 3-я строка (уравнение) этой формы 0=1, что невозможно! Следовательно, линейная система не имеет решений. Линейная система несовместима.

Наконец, мы попробуем это с линейной системой с бесконечным количеством решений:

(Изображение автора)
 из sympy import *augmented_A = Matrix([[-1, 1, 2, 0], 
[1, 2, 1 , 6],
[-2, -1, 1, -6]])augmented_A. rref()[0]
(Изображение автора)

В этот раз тоже не удалось. Укороченной строево-эшелонной формы у нас не получилось. 3-я строка (уравнение) этой формы 0=0, что всегда верно! Это означает, что переменная z может принимать любое действительное число, а также x и 9.0276 y может быть:

  • z = любое число
  • x-z = 2 (x = 2+z)
  • y+z = 2 (y = 2-z)

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

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

Общая реализация:

Сначала попробуйте np.linalg.solve() . Если вы получили уникальное решение, вы сделали свою работу. Если вы получаете сообщение об ошибке («Сингулярная матрица»), линейная система либо не имеет решения, либо имеет бесконечно много решений. Затем попробуйте получить уменьшенную форму строки-эшелона с помощью пакета SymPy Python, как обсуждалось выше. Глядя на последний ряд уменьшенной формы, вы можете решить!

Также обратите внимание на следующие моменты.

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

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

Добавить комментарий

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