Решение систем линейных уравнений методом крамера python

Решение систем линейных уравнений с помощью Python’s Numpy

Два или более линейных уравнения с одинаковым набором переменных называются системой линейных уравнений. Мы можем решить эти переменные в Python с помощью Numpy.

  • Автор записи

Автор: Guest Contributor
Дата записи

Библиотека Numpy может использоваться для выполнения различных математических/научных операций, таких как матричные кросс-и точечные произведения, поиск значений синуса и косинуса, преобразование Фурье и манипулирование формой и т. Д. Слово Numpy-это сокращенное обозначение “Числового питона”.

В этой статье вы увидите, как решить систему линейных уравнений с помощью библиотеки Numpy Python.

Что такое Система линейных уравнений?

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

Конечная цель решения системы линейных уравнений – найти значения неизвестных переменных. Вот пример системы линейных уравнений с двумя неизвестными переменными, x и y :

Чтобы решить приведенную выше систему линейных уравнений, нам нужно найти значения переменных x и y . Существует множество способов решения такой системы, таких как Исключение переменных, Правило Крамера, Метод сокращения строк и Матричное решение. В этой статье мы рассмотрим матричное решение.

В матричном решении система решаемых линейных уравнений представляется в виде матрицы AX . Например, мы можем представить Уравнение 1 в виде матрицы следующим образом:

Чтобы найти значение переменных x и y в Уравнение 1 , нам нужно найти значения в матрице X . Для этого мы можем взять точечное произведение обратной матрицы A и матрицы B , как показано ниже:

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

Решение системы линейных уравнений с Numpy

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

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

Использование методов inv() и dot()

Во-первых, мы найдем обратную матрицу A , которую мы определили в предыдущем разделе.

Давайте сначала создадим матрицу A в Python. Для создания матрицы можно использовать метод array модуля Numpy. Матрицу можно рассматривать как список списков, где каждый список представляет собой строку.

В следующем скрипте мы создаем список с именем m_list , который далее содержит два списка: [4,3] и [-5,9] . Эти списки являются двумя строками в матрице A . Чтобы создать матрицу A с помощью Numpy, m_list передается методу array , как показано ниже:

Чтобы найти обратную матрицу, матрица передается в метод linalg.inv() модуля Numpy:

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

Для поиска точечного продукта с помощью библиотеки Numpy используется функция linalg.dot () . Следующий скрипт находит точечное произведение между обратной матрицей A и матрицей B , которая является решением уравнения 1 .

Вот, 2 и 4 являются ли соответствующие значения для неизвестных x и y in Уравнение 1 . Для проверки, если вы подключаете 2 на месте неизвестного x и 4 на месте неизвестного y в уравнении 4x + 3y вы увидите , что результат будет равен 20.

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

Приведенное выше уравнение можно решить с помощью библиотеки Numpy следующим образом:

В приведенном выше скрипте методы linalg.inv() и linalg.dot() соединены вместе. Переменная X содержит решение для уравнения 2 и печатается следующим образом:

Значение для неизвестных x , y и z равно 5, 3 и -2 соответственно. Вы можете подключить эти значения в Уравнение 2 и проверить их правильность.

Использование метода solve()

В предыдущих двух примерах мы использовали методы linalg.inv() и linalg.dot() для нахождения решения системы уравнений. Однако библиотека Numpy содержит метод linalg.dsolve () , который может быть использован для непосредственного нахождения решения системы линейных уравнений:

Вы можете видеть, что выход такой же, как и раньше.

Реальный Пример

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

Предположим, продавец фруктов продал 20 манго и 10 апельсинов за один день на общую сумму 350 долларов. На следующий день он продал 17 манго и 22 апельсина за 500 долларов. Если цены на фрукты оставались неизменными в оба дня, то какова была цена одного манго и одного апельсина?

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

Допустим, цена одного манго равна x , а цена одного апельсина равна y . Вышеприведенная проблема может быть преобразована следующим образом:

Решение приведенной выше системы уравнений показано здесь:

Результат показывает, что цена одного манго составляет 10 долларов, а цена одного апельсина-15 долларов.

Решение систем линейных уравнений с помощью Numpy в Python

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

Что такое система линейных уравнений?

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

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

Конечная цель решения системы линейных уравнений – найти значения неизвестных переменных. Вот пример системы линейных уравнений с двумя неизвестными переменными x и y:

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

В матричном решении решаемая система линейных уравнений представлена в виде матрицы AX = B. Например, мы можем представить уравнение 1 в виде матрицы следующим образом:

Чтобы найти значение переменных x и y в уравнении 1, нам нужно найти значения в матрице X. Для этого мы можем взять скалярное произведение обратной матрицы A и матрицы B, как показано ниже:

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

Решение

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

Давайте теперь посмотрим, как решить систему линейных уравнений с помощью библиотеки Numpy.

Использование методов inv() и dot()

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

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

В следующем скрипте мы создаем список с именем m_list, который дополнительно содержит два списка: [4,3] и [-5,9]. Эти списки представляют собой две строки в матрице A. Чтобы создать матрицу A с помощью Numpy, m_list передается методу массива, как показано ниже:

Чтобы найти обратную матрицу, которая передается методу linalg.inv() модуля Numpy:

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

Чтобы найти точечный продукт с помощью библиотеки Numpy, используется функция linalg.dot(). Следующий скрипт находит скалярное произведение между обратной матрицей A и B, которая является решением уравнения 1.

Здесь 2 и 4 – соответствующие значения для неизвестных x и y в уравнении 1. Чтобы убедиться, что если вы подставите 2 вместо неизвестного x и 4 вместо неизвестного y в уравнении 4x + 3y, вы увидите что результат будет 20.

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

Вышеупомянутое уравнение можно решить с помощью библиотеки Numpy следующим образом:

В приведенном выше скрипте методы linalg.inv() и linalg.dot() связаны вместе. Переменная X содержит решение уравнения 2 и печатается следующим образом:

Значения неизвестных x, y и z равны 5, 3 и -2 соответственно. Вы можете подставить эти значения в уравнение 2 и проверить их правильность.

resolve()

В двух предыдущих примерах мы использовали методы linalg.inv() и linalg.dot() для поиска решения системы уравнений. Однако библиотека Numpy содержит метод linalg.solve(), который можно использовать для непосредственного поиска решения системы линейных уравнений:

Вы можете видеть, что результат такой же, как и раньше.

Пример

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

Предположим, продавец фруктов продал 20 манго и 10 апельсинов за один день на общую сумму 350 долларов. На следующий день он продал 17 манго и 22 апельсина за 500 долларов. Если цены на фрукты оставались неизменными в оба дня, какова была цена одного манго и одного апельсина?

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

Допустим, цена одного манго равна x, а цена апельсина – y. Вышеупомянутую проблему можно преобразовать так:

Решение для указанной выше системы уравнений показано здесь:

И вот результат:

Выходные данные показывают, что цена одного манго составляет 10 долларов, а цена одного апельсина – 15 долларов.

Метод Крамера – теорема, примеры решений

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

Габриель Крамер – математик, создатель одноименного метода решения систем линейных уравнений

Габриель Крамер – известный математик, который родился 31 июля 1704 года. Ещё в детстве Габриель поражал своими интеллектуальными способностями, особенно в области математики. Когда Крамеру было 20 лет, он устроился в Женевский университет штатным преподавателем.

Во время путешествия по Европе Габриель познакомился с математиком Иоганном Бернулли, который и стал его наставником. Только благодаря Иоганну, Крамер написал много статей по геометрии, истории математики и философии. А в свободное от работы время изучал математику всё больше и больше.

Наконец-то наступил тот день, когда Крамер нашёл способ, при помощи которого можно было бы легко решать не только лёгкие, но и сложные системы линейных уравнений.

В 1740 году у Крамера были опубликованы несколько работ, где доступно изложено решение квадратных матриц и описан алгоритм, как находить обратную матрицу. Далее математик описывал нахождения линейных уравнений разной сложности, где можно применить его формулы. Поэтому тему так и назвали: «Решение систем линейных уравнений методом Крамера».

Учёный умер в возрасте 48 лет (в 1752 году). У него было ещё много планов, но, к сожалению, он так и не успел их осуществить.

Вывод формулы Крамера

Пусть дана система линейных уравнений такого вида:

где , , – неизвестные переменные, – это числовые коэффициенты, в – свободные члены.

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

Если записать систему в матричном виде, тогда получается , где

В данной главной матрице находятся элементы, коэффициенты которых при неизвестных переменных,

Это матрица-столбец свободных членов, но есть ещё матрица-столбец неизвестных переменных:

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

Если матрица – невырожденная, то есть, её определитель не равняется нулю, тогда у СЛАУ есть только одно единственное решение, которое находится при помощи метода Крамера.

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

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

, здесь – 1, 2, …, n; – 1, 2, 3, …, n.

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

,

,

где – 1, 2, …, n; – 1, 2, 3, …, n. .

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

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

.

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

И предыдущее равенство уже выглядит так:

Откуда и получается .

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

Теперь нужно сложить все уравнения системы и сгруппировать слагаемые при неизвестных переменных. Для этого вспомним свойства определителя:

Откуда получается .

Аналогично находятся все остальные неизвестные переменные.

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

, , .

Замечание.

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

Нужна помощь в написании работы?

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

Метод Крамера – теоремы

Прежде чем решать уравнение , необходимо знать:

  1. теорему аннулирования;
  2. теорему замещения.

Теорема замещения

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

=

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

Теорема аннулирования

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

Алгоритм решения уравнений методом Крамера

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

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

Шаг 1. Вычисляем главный определитель матрицы

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

Шаг 2. Находим определители

Это и есть определители матриц, которые получались из матрицы при замене столбцов на свободные члены.

Шаг 3. Вычисляем неизвестные переменные

Теперь вспоминаем формулы Крамера, по которым вычисляем корни (неизвестные переменные):

, , .

Шаг 4. Выполняем проверку

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

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

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

Итак, дана система двух линейных уравнений:

Для начала вычисляем главный определитель (определитель системы):

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

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

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

Корни уравнения найти просто, так как главное, знать формулы:

,

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

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

Создадим определитель системы из коэффициентов при неизвестных:

Умножим почленно каждое уравнение соответственно на , , – алгебраические дополнения элементов первого столбца (коэффициентов при ) и прибавим все три уравнения. Получаем:

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

После этого можно записать равенство:

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

,

Если , тогда в результате получаем формулы Крамера:

= , = , =

Порядок решения однородной системы уравнений

Отдельный случай – это однородные системы:

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

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

Действительно, вспомогательные определители , как такие у которых есть нулевой столбец и поэтому, за формулами Крамера

Если у однородной системы есть отличное от нуля решение, тогда её определитель равняется нулю

Действительно, пусть одно из неизвестных , например, , отличное от нуля. Согласно с однородностью Равенство (2) запишется: . Откуда выплывает, что

Примеры решения методом Крамера

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

Задача

Решить систему линейных уравнений методом Крамера:

Решение

Первое, что надо сделать – вычислить определитель матрицы:

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

Аналогично находим остальные определители:

,

.

Ответ

, .

Задача

Решить систему уравнений методом Крамера:

Решение

Ответ

= = = = = =

Проверка

* = * = =

* = * = =

* = * = =

Уравнение имеет единственное решение.

Ответ

= = =

Задача

Решить систему методом Крамера

Решение

Как вы понимаете, сначала находим главный определитель:

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

При помощи формул Крамера находим корни уравнения:

, , .

Чтобы убедиться в правильности решения, необходимо сделать проверку:

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

Ответ

Система уравнений имеет единственное решение: , , .

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

Задача

Решить систему линейных уравнений методом Крамера:

Решение

Как и в предыдущих примерах находим главный определитель системы:

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

Мы нашли определители при неизвестных и увидели, что все они не равны нулю. Поэтому система несовместна и не имеет решений.

Ответ

Система не имеет решений.

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

Задача

Решить систему линейных уравнений методом Крамера:

Решение

В этом примере – некоторое вещественное число. Находим главный определитель:

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

Используя формулы Крамера, находим:

, .

Ответ

,

.

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

Задача

Найти систему линейных уравнений методом Крамера:

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

Решение

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

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

Теперь по формулам Крамера нужно найти:

,

,

,

.

Ответ

Итак, мы нашли корни системы линейного уравнения:

,

,

,

.

Подведём итоги

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

Рекомендуем почитать для общего развития

Решение методом Крамера в Excel


источники:

http://tonais.ru/osnovy/reshenie-sistem-lineynyh-uravneniy-s-pomoschyu-numpy-v-python

http://nauchniestati.ru/spravka/resheneie-sistem-metodom-kramera/