Как решать системы уравнений методом гаусса: Как решить методом Гаусса СЛАУ (систему линейных уравнений). Правила, примеры

15.6 Системы уравнений с большим количеством переменных, чем уравнений

15.6 Системы уравнений с большим количеством переменных, чем уравнений

Главная | 18.022 | Глава 15

Инструменты    Индекс    Вверх    Предыдущий    Далее


Основные вопросы:

Что происходит с методом исключения Гаусса, когда определитель равен 0 и существует нет обратного и нет единственного решения?
Что можно или нужно делать с системами уравнений, для которых существует больше переменные, чем уравнения?

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

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

Пример

Если переменных больше, чем уравнений, вы не можете найти единственное решение, потому что нет ни одного. Однако вы можете удалить некоторые переменные в условия других. Другими словами, вы можете начать процесс исключения Гаусса. и продолжайте, пока не закончатся ряды. Если у вас есть n + m переменных и только m уравнений, вы можете решить для m переменных через другие. От с матричной точки зрения это означает внесение элементов матрицы в столбцы соответствующие исключаемым переменным во все нули, кроме одного 1.

Пример

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

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

Пример

Применение: линейное программирование

Этот термин, линейный программирование относится к своего рода задаче оптимизации; тот, в котором у вас есть линейные ограничения и стремятся максимизировать линейную целевую функцию.

Пример

Для таких линейных программ существует стандартная форма. Запишем все неравенства ограничение в форме v

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

Пример

Обратите внимание, что это именно тот вид недоопределенной системы линейных уравнений. мы обсуждали.

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

симплексный алгоритм и есть основной инструмент предмета называется исследования операций .

Пример

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

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

Исключение Гаусса в Python — Javatpoint

следующий → ← предыдущая

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

При моделировании линейных систем генерируются математические уравнения вида Ax = b, где x — входная матрица, а b — вектор отклика системы. Внутренние свойства системы отражаются в A, называемой матрицей коэффициентов, независимой от входного вектора. Если ввод изменен, система линейных уравнений, которую мы хотим оценить, по-прежнему будет содержать точную матрицу коэффициентов A, но отдельный вектор отклика b.

Методы решения систем линейных уравнений

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

Мы можем использовать три основные операции для достижения этого преобразования:

  • Числовое значение определителя A меняет знак, когда две строки матрицы A меняются местами;
  • Числовое значение определителя A умножается на тот же скаляр, на который умножается строка матрицы A;
  • Определитель A останется неизменным, если мы заменим строку A на строку, полученную путем присоединения этой строки к какой-либо другой строке, масштабируемой скаляром;

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

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

Метод Исходная форма Окончательная форма
Исключение Гаусса Ох = b Uх = с
LU разложение Ох = b люкс = b
Исключение Гаусса-Жордана Ох = b Iх = с

Метод исключения Гаусса

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

  1. Мы можем поменять местами две строки
  2. Масштабирование строки путем ее умножения с помощью масштабатора
  3. Добавление строки к другой строке матрицы

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

Алгоритм исключения Гаусса в Python

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

Код

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

# Создание функции для печати расширенной матрицы с заданным набором линейных уравнений защита print_aug (мат): нет = лен (мат) для i в диапазоне (0, нет): л = «» для k в диапазоне (0, n + 1): l += str(mat[i][k]) + «\t» если j == нет — 1: л += «| » печать (л) Распечатать(«») # Создание функции для выполнения исключения Гаусса на заданной матричной матрице защита gauss_elem (мат): число = длина (мат) для я в диапазоне (0, число): # Поиск максимального значения определенного столбца max_el = абс (мат [я] [я]) # Строка с элементом максимального значения максимальная_строка = я для k в диапазоне (i + 1, число): если abs(mat[k][i]) > max_el: max_el = абс (мат [k] [i]) максимальная_строка = к # Замена максимальной строки на текущую строку для k в диапазоне (i, n + 1): темп = мат[max_row][k] мат[max_row][k] = мат[i][k] мат[i][k] = температура # Изменение значения строк ниже текущей строки на 0 для k в диапазоне (i + 1, n): текущий = -мат [к] [я] / мат [я] [я] для j в диапазоне (i, n + 1): если я == j: мат [к] [j] = 0 еще: мат[k][j] += текущий * мат[i][j] # Решение уравнения Ax = b для созданной верхней треугольной матрицы mat l = [0 для i в диапазоне (n)] для j в диапазоне (n — 1, -1, -1): l[j] = мат[j][n] / мат[j][j] для k в диапазоне (j — 1, -1, -1): мат[k][n] -= мат[k][j] * l[j] вернуть л если __name__ == «__main__»: из дробей импорт дроби п = интервал (ввод ()) A_mat = [[0 для j в диапазоне (n + 1)] для i в диапазоне (n)] # Чтение входных коэффициентов линейных уравнений для j в диапазоне (0, n): l = карта (Дробь, ввод ().
Разделить («»)) для i элемент в enumerate(l): A_mat[j][i] = элемент л = ввод().разделить(» «) печать (л) последний = список (карта (дробь, л)) для j в диапазоне (0, n): A_mat[j][n] = последний[j] # Печать расширенной матрицы из входных данных print_aug(A_mat) # Вычисление решения матрицы x = gauss_elem (A_mat) # Печать результата л = «Результат:\t» для j в диапазоне (0, n): л += ул(х[j]) + «\t» печать (л)

Вывод:

 3
3 4 -1
5 -2 1
2 -2 1
8 4 1
['8', '4', '1']
3 | 4 | -1 | 8 |
5 | -2 | 1 | 4 |
2 | -2 | 1 | 1 |

Результат: 1 2 3
 

Если мы дадим набор уравнений, не имеющих решения, вывод будет следующим:

Выход

 3
1 1 1
0 1 -3
2 1 5
2 1 0
['2', '1', '0']
1 | 1 | 1 | 2 |
0 | 1 | -3 | 1 |
2 | 1 | 5 | 0 |  -------------------------------------------------- -------------------------
ZeroDivisionError Traceback (последний последний вызов)
 в
 75
 76 # Вычисление решения матрицы
---> 77 x = gauss_elem(A_mat)
 78
 79# Печать результата  ________________________________________
3 кадра
________________________________________
/usr/lib/Python3.

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

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

© 2015 - 2019 Муниципальное казённое общеобразовательное учреждение «Таловская средняя школа»

Карта сайта