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

Содержание

(PDF) Решение линейных матричных уравнений методом канонизации

Вісник Київського університету 2002, 1 Bulletin of the University of Kiev

Серія: фізико-математичні науки Series: Physics & Mathematics

© В.Н. Буков, В.Н. Рябченко, В.В. Косьянчук, Е.Ю. Зыбин, 2002

УДК 512.25

Валентин Н. Буков*, Владимир Н.

Рябченко, Владислав В.

Косьянчук, Евгений Ю. Зыбин

Решение линейных матричных

уравнений методом канонизации

Предлагается метод решения ли-

нейных матричных алгебраических урав-

нений, использующий представление

матриц в канонических базисах. Метод

сочетает аналитические возможности

процедур, основанных на вычислении де-

терминантов, с вычислительной эф-

фективностью алгоритма Гаусса.

Ключевые слова: матричные дели-

тели нуля, условия разрешимости урав-

нений, множество решений.

Valentin N. Bukov*, Vladimir N.

Ryabchenko, Vladislav V.

Kosyanchuk, Eugene Ju. Zybin

Solving of linear matrix equations

with canonization method

Solving procedure for linear matrix

algebraic equations with using of canonical

basis for presentation of matrices is pro-

posed. It combines analytical features of

determinant procedures and computational

capability of the Gauss’ algorithm.

Key Words: matrix divisor of zero,

solution living conditions, solution set.

*E-mail: [email protected]

Существует мнение [1], что три четверти всех расчетных математи-

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

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

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

 либо на вычислении значений определителей, получаемых из

элементов матриц коэффициентов решаемого уравнения;

 либо на эквивалентных преобразованиях матриц коэффициентов

алгоритмами типа алгоритма Гаусса.

Типичным способом первой группы является правило Крамера. Ос-

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

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

[2] данные способы далеко не самые экономичные и практическое приме-

нение находят только при решении вручную матричных уравнений невы-

сокого размера.

Способы второй группы характеризуются более высокой вычисли-

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

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

в [3] программы, реализующие метод вращения Якоби и модификации

QR-алгоритма. В то же время эти способы не применимы для аналитиче-

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

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

Введение в метод исключения Гаусса

Математически метод исключения Гаусса (или перевод: метод исключения Гаусса) – это алгоритм в программировании линейной алгебры, который можно использовать для решения линейных уравнений. Но его алгоритм очень сложен, не часто используется метод сложения, вычитания и исключения, чтобы найти ранг матрицы и найти обратную матрицу обратимой квадратной матрицы. Однако, если имеется более миллиона уравнений, этот алгоритм сэкономит время. Некоторые чрезвычайно большие уравнения обычно решаются итерационными методами и причудливым исключением. При использовании в матрице метод исключения Гаусса дает «строчную лестницу». Метод исключения Гаусса можно использовать в компьютерах для решения тысяч уравнений и неизвестных. Есть также некоторые методы, специально используемые для решения некоторых уравнений со специально подобранными коэффициентами. – перенесено из энциклопедии Baidu

содержание

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

ядро

1) Два уравнения меняются местами, и решение остается неизменным;

2) Умножьте уравнение на ненулевое число k, решение не изменится;
3) Одно уравнение умножается на число k плюс другое уравнение, решение остается неизменным.
– перенесено из энциклопедии Baidu

Идеи алгоритмов

Идея состоит в том, чтобы сначала преобразовать матрицу в матрицу рядов строк в соответствии с характеристиками метода исключения Гаусса, а затем получить ранг из матрицы рядов строк, а затем определить количество решений системы линейных уравнений
Если R (A) <= R (Ab), то уравнение не имеет решения
R (A) = R (Ab) = N, уравнение имеет единственное решение (однородное уравнение называется не более чем нулевым решением)

R (A) = R (Ab) <N, уравнение имеет бесконечные решения (однородные уравнения называются ненулевыми решениями)
После получения количества решений, если существует единственное решение, предыдущая матрица преобразуется в простейшую по строкам матрицу для получения решения системы линейных уравнений

алгоритм

import numpy as np

def swag(a, b):     
    for i in range(0, len(a)):
        t = a[i]
        a[i] = b[i]
        b[i] = t

def print_matrix( info, matrix ):       
    print (info)
    for i in range( 0, matrix. shape[0]):
        print('[', end='')
        for j in range( 0, matrix.shape[1]):
            if(j == matrix.shape[1] - 1):   
                print( '|', end=''),                           
            print("%5.2f" %matrix[i][j], end=' ')
            if j == matrix.shape[1] - 1:                  
                print(']', end=' ')
                print('\n')

def check(matrix, i, row, col):         
    if 0.00 in set(matrix[i]) and len(set(matrix[i])) == 1:     
        for j in range(row - 1, i ,-1):                         
            try:
                if not(0.00 in set(matrix[j]) and len(set(matrix[j])) == 1):    
                    swag(matrix[i], matrix[j])                                  
                    select(matrix, i, col)                                      
                    break
            except:                     
                return

def select(matrix, i, col):             
    if 0.00 in set(matrix[i]) and len(set(matrix[i])) == 1:     
        return
    for k in range(0, i):                                       
        temp = matrix[i][k] / matrix[k][k]                      
        if temp == 0:                                           
            continue
        for j in range(0, col):                                 
            matrix[i][j] = matrix[i][j] - matrix[k][j] * temp

def solve(matrix):                      
    row = matrix.
shape[0] col = matrix.shape[1] for i in range(0, row): if matrix[i][i] == 0: for j in range(i + 1, row): if matrix[j][i] != 0: swag(matrix[i], matrix[j]) break select(matrix, i, col) check(matrix, i, row, col) def to_one(matrix): row = matrix.shape[0] col = matrix.shape[1] for i in range(0, row): temp = matrix[i][i] for j in range(i, col): matrix[i][j] = matrix[i][j] / temp for i in range(0, row - 1): for j in range(i + 1, col - 1): temp = matrix[i][j] for k in range(j, col): matrix[i][k] = matrix[i][k] - matrix[j][k] * temp def judge(matrix): row = matrix.
shape[0] col = matrix.shape[1] vanumlist = [] for i in range(0, col): if matrix[row - 1][i] != 0: vanumlist.append(matrix[row - 1][i]) if len(vanumlist) == 1: print( «Система уравнений не имеет решения») elif len(vanumlist) == 2: to_one(matrix) print_matrix(«Самый простой шаг матрицы:», matrix) for i in range(0, row): print("x%d = %4.2f" %(i,matrix[i][col - 1]), end=" ") else: print( «Система уравнений имеет множественные решения») matrix = np.array([ [ 1, 1, 1, 1, 1, 1], [ 3, 2, 1, 1,-3, 25], [ 0, 1, 2, 2, 6,-22], [ 5, 4, 3, 3,-1, 27], [ 2,-1, 0, 3, 2, 2] ],dtype=float) print_matrix('Исходная матрица:', matrix) solve(matrix) print_matrix('Матрица входит в:', matrix) judge(matrix)

Результат выполнения кода


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

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

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

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

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

Рассмотрим несколько примеров из сборника задач Дубовика В.П., Юрика І.І. “Высшая математика”

———————————–

Задача.

Решить систему линейных алгебраических уравнений.

1) (1. 183)

2) (4. 182)

Решение.

1) Запишем систему трех линейных уравнений в матричной форме

Найдем обратную матрицу. Напомним, что

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

Вычислим определитель матрицы

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

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

Найдем алгебраические дополнения к определителю

Запишем найденную матрицу алгебраических дополнений

и протранспонируем ее

Находим обратную матрицу

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

На етом решения примера завешено. Как видите никаких сложных вычислений в етом задании мы не делали.

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

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

От второй строки отнимем первую и последнюю строки

От третьей строки отнимем сумму первой и четвертой строки начальной системы

От четвертой строки отнимем первый

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

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

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

После нахождения всех значений получим следующую матрицу дополнений

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

Подставим в матричную запись и найдем решение

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

Изучайте их и получайте лишь верные решения !

———————————————-

Посмотреть материалы:

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

Запрос solve, который был использован ранее, чтобы получить решение системы линейных алгебраических уравнений (СЛАР) в Wolfram|Alpha, на самом деле является универсальным запросом для решения уравнений и их систем в Wolfram|Alpha. Собственно для решения системы линейных алгебраических уравнений он применяется лишь тогда, когда эта система задана в естественном виде: после запроса solve все уравнения системы перечисляются через запятую. Этот способ хорош тем, что позволяет решать не только определенные, но также и неопределенные системы – в общем виде.

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

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

Чтобы понять особенности синтаксиса запроса LinearSolve, изучите следующие примеры.

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

LinearSolve[{{a, b}, {c, d}}, {0, 0}]

Здесь Wolfram|Alpha дает тривиальное решение {0, 0}.

Точно также легко Wolfram|Alpha выводит тривиальное решение и для однородных систем линейных алгебраических уравнений более высокой размерности.

LinearSolve[{{1, 1, 1, -1}, {2, 1, 1, -2}, {1, 1, 2, 1}, {1, 1, 2, 4}}, {0, 0, 0, 0}]

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

После запроса LinearSolve вводим матрицу коэффициентов системы и ненулевой вектор свободных членов. В ответ получаем вектор неизвестных. Вот два примера.

LinearSolve[{{a, b}, {c, d}}, {1, 2}]

LinearSolve[{{1, 1, 1, -1}, {2, 1, 1, -2}, {1, 1, 2, 1}, {1, 1, 2, 4}}, {1, 1, 1, 2}]

Линейная алгебра 2 | Различные матрицы, матричные уравнения, метод исключения Гаусса и умножение матриц | Адам Эдельвейс | SereneField

  1. Матрица

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

  • изображение в градациях серого представляет собой матрицу
  • массив данных
  • и т. Д.

(2) Форма матрицы

Форма матрицы – это # ​​(количество) строк, умноженное на # колонн.Например, следующая матрица A имеет форму 2 × 3, а обозначение формы – A ((2 × 3)).

(3) Квадратная матрица

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

(4) Проецировать от ℝⁿ до ℝᵐ ( x : ℝⁿ → ℝᵐ)

Предположим, у нас есть вектор x ∈ℝⁿ, и мы хотим спроецировать его в векторное пространство ℝᵐ, так что мы можем Здесь нужно построить матрицу проекции A , которая имеет форму м x n .В этом конкретном случае мы можем рассматривать матрицу A как функцию (функция преобразования / преобразования) из x : ℝⁿ – A → ℝᵐ. Например,

Если мы обрабатываем каждый столбец в матрице A как вектор, например a 1, a 2, a 3,…, a n, мы можем записать эту матрицу аналогично векторной.Например,

Итак, если мы используем матрицу A , умноженную на вектор x , мы собираемся вычислить новый вектор в векторном пространстве ℝᵐ. Итак, что мы собираемся сказать здесь довольно просто, что вектор b ∈ℝᵐ, который мы только что разработали, является преобразованием A вектора x .

Здесь мы определили, что вектор b ∈ ℝᵐ является результатом A, умноженного на x .Таким образом, вектор b представляет собой линейную комбинацию столбцов A , которую мы получаем, используя компоненты x в качестве весов.

Другая перспектива заключается в том, что i- -й компонент вектора b (он же b i) может рассматриваться как скалярное произведение вектора a i и вектор x .

(5) Матричное уравнение

Предположим, у нас есть матрица A ((m × n)): ℝⁿ → ℝᵐ, можем ли мы найти вектор x в ℝⁿ, чтобы A · x = b (для некоторых b )? (Или вопрос может заключаться в том, какая линейная комбинация A даст нам b (если есть)?) Ответ – да, и с учетом матрицы A и вектора b , мы можем решить это матричное уравнение A · x = b .Например,

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

Во-вторых, мы строим систему уравнений с тремя переменными, чтобы вычислить x1, x2 и x3.

В-третьих, мы проводим алгоритм Back Substitution , чтобы получить x1, x2 и x3.

В-четвертых, мы можем решить систему как,

Наконец, мы получили наш вывод:

(6) Расширенная матрица

В предыдущем случае мы можем решить матричное уравнение A · x = b .Теперь определим матрицу [ A | b ] в виде расширенной матрицы. Отчасти это связано с тем, что каждая строка [ A | b ] может делать алгоритмы матрицы. Что ж, с точки зрения уравнений, матрица A также может считаться матрицей коэффициентов. Например,

(7) Операции со строками

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

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

(8) Исключение Гаусса

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

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

(9) Pivots

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

И для предыдущего случая у нас есть

(10) Верхняя матрица

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

(11) Геометрия линейных уравнений

Геометрически линейные уравнения в ² являются линиями, а линейные уравнения в ³ являются плоскостями. Решение системы – это контрапункт этих линий или плоскостей.

(11) Линейное преобразование: Простые исправления алгебры

Предположим, у нас есть векторные пространства V и W вместе с матрицей преобразования (также известной как матрица сопоставления ) A . Поэтому правило A: V → W называется линейным преобразованием. Для любого из векторов x V и y V , учитывая константу c как скаляр, x и y удовлетворяют двум условиям:

(12) Двукратное преобразование

Предположим, что A – это матрица отображения m × n из векторного пространства V: ℝⁿ в векторное пространство W: ℝᵐ, а B – это матрица отображения n × p из векторного пространства P: ℝᵖ в векторное пространство V: ℝⁿ.Учитывая, что вектор x ∈ℝᵖ. Таким образом, мы можем иметь отношение x : ℝᵖ → ℝⁿ → ℝᵐ. График выглядит следующим образом:

Мы хотели бы доказать уравнение, что A ( B x ) = ( AB ) x , так как это доказать?

В результате можно сделать вывод, что с заданной матрицей преобразования AB можно преобразовать вектор x : ℝᵖ → ℝᵐ.

(13) Умножение матриц

Теперь посмотрите на запись в строке i- и j -м столбце AB , как ( AB ) ij.Итак, у нас может быть

. Возьмем A b j, который также является j -м столбцом окончательного результата, тогда мы могли бы иметь формулу ( i -я строка из A ) ⋅ b j:

(14) Свойства матрицы

  • AB BA
  • A ² = 0 не ⇒ A = 0, контрпример:
    • A ( BC ) = ( AB ) C
    • A ( B + C ) = AB + AC, , а B и C быть одного размера
    • ( B + C ) A = BA + CA, , в то время как B и C должны быть одинакового размера
    • ( r + s ) A = r A + s A
    • 9 0025

      (15) Идентификационная матрица

      Квадратная матрица ((n x n)) с единицей на диагонали и 0 где-либо еще.

      (16) Обратная матрица

      Для квадратной матрицы A ((n x n)) обратная матрица A (если она существует) является обратной матрицей. Где:

      (17) Transpose Matrix

      Матрица, которую мы получаем, меняя местами строки и столбцы A .

      (18) Свойства обратной матрицы и матрицы транспонирования

      Исключение Гаусса-Джордана | Блестящая вики по математике и науке

      Система уравнений может быть представлена ​​в нескольких различных матричных формах.Один из способов – реализовать систему как матричное умножение коэффициентов системы и вектора-столбца ее переменных. Квадратная матрица называется матрицей коэффициентов

      , потому что она состоит из коэффициентов переменных в системе уравнений:

      Произведение матриц: 2x + 4y + 7z = 43x + 3y + 2z = 85x + 6y + 3z = 0⟶ [247332563] [xyz] = [480]. \ text {Произведение матриц:} \ quad \ begin {array} {c c c c c c c} 2x & + & 4y & + & 7z & = & 4 \\ 3x & + & 3y & + & 2z & = & 8 \\ 5x & + & 6y & + & 3z & = & 0 \ end {массив} \ longrightarrow \левый[ \ begin {array} {c c c} 2 и 4 и 7 \\ 3 и 3 и 2 \\ 5 и 6 и 3 \ end {массив} \правильно] \левый[ \ begin {array} {c} Икс \\ у \\ z \ end {массив} \правильно] = \ left [ \ begin {array} {c} 4 \\ 8 \\ 0 \ end {array} \ right].Произведение матриц: 2x3x5x +++ 4y3y6y +++ 7z2z3z === 480 ⟶⎣⎡ 235 436723 ⎦⎤ ⎣⎡ xyz ⎦⎤ = ⎣⎡ 480 ⎦⎤.

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

      Расширенная матрица: 2x + 4y + 7z = 43x + 3y + 2z = 85x + 6y + 3z = 0⟶ [247433285630].\ text {Расширенная матрица:} \ quad \ quad \ begin {array} {c c c c c c c} 2x & + & 4y & + & 7z & = & 4 \\ 3x & + & 3y & + & 2z & = & 8 \\ 5x & + & 6y & + & 3z & = & 0 \\ \ end {массив} \ longrightarrow \левый[ \ begin {array} {c c c | c} 2 и 4 и 7 и 4 \\ 3 и 3 и 2 и 8 \\ 5 и 6 и 3 и 0 \ end {array} \ right]. Дополненная матрица: 2x3x5x +++ 4y3y6y +++ 7z2z3z === 480 ⟶⎣⎡ 235 436 723 480 ⎦⎤.

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

      Уменьшенный ряд строк формирует матрицы AAA (\ big ((обозначается rref (A)) \ text {rref} (A) \ big) rref (A)) представляет собой матрицу одинаковых размеров, которая удовлетворяет следующему:

      1. Крайний левый ненулевой элемент в каждой строке – 1 1 1. Этот элемент известен как опорный элемент.
      2. Любой столбец может иметь не более 1 1 1 стержня.Если столбец имеет точку поворота, то остальные элементы в столбце будут равны 0 0 0.
      3. Для любых двух столбцов C1C_ {1} C1 и C2C_ {2} C2, которые имеют точки поворота в строках R1 R_ {1} R1 и R2, R_ {2}, R2, соответственно, если поворот в C1 C_ {1 } C1 находится слева от точки поворота в C2 C_ {2} C2, тогда R1 R_ {1} R1 находится выше R2 R_ {2} R2. Другими словами, для любых двух точек поворота P1 P_ {1} P1 и P2P_ {2} P2, если P2 P_ {2} P2 находится справа от P1 P_ {1} P1, то P2 P_ {2} P2 ниже P1 P_ {1} P1.
      4. Строки, состоящие только из нулей, находятся внизу матрицы.

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

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

      Найдите rref (A) \ text {rref} (A) rref (A), используя метод исключения Гаусса-Жордана, где A = [26−216−4−149].A = \ left [\ begin {array} {c c c} 2 и 6 и -2 \\ 1 и 6 и -4 \\ -1 и 4 и 9 \\ \ end {array} \ right] .A = ⎣⎡ 21−1 664 −2−49 ⎦⎤.


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

      [26−216−4−149] → Разделите первую строку на 2. [13−116−4−149]. \ left [\ begin {array} {c c c} 2 и 6 и -2 \\ 1 и 6 и -4 \\ -1 и 4 и 9 \\ \ end {array} \ right] \ ce {-> [\ large \ text {Разделите первую строку на 2.}]} \ left [\ begin {array} {c c c} 1 и 3 и -1 \\ 1 и 6 и -4 \\ -1 и 4 и 9 \\ \ end {array} \ right].⎣⎡ 21−1 664 −2−49 ⎦⎤ Разделите первую строку на 2. ⎣⎡ 11−1 364 −1−49 ⎦⎤.

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

      [13−116−4−149] → RX2 − RX1 и RX3 + RX1 [13−103−3078]. \ left [\ begin {array} {c c c} 1 и 3 и -1 \\ 1 и 6 и -4 \\ -1 и 4 и 9 \\ \ end {array} \ right] \ ce {-> [\ large R_2 – R_1 \ text {и} R_3 + R_1]} \ left [\ begin {array} {c c c} 1 и 3 и -1 \\ 0 и 3 и -3 \\ 0 и 7 и 8 \\ \ end {array} \ right].⎣⎡ 11−1 364 −1−49 ⎦⎤ RX2 −RX1 и RX3 + RX1 ⎣⎡ 100 337 −1−38 ⎦⎤.

      Теперь, когда крайний левый столбец равен [100], \ left [\ begin {array} {c} 1 \\ 0 \\ 0 \\ \ end {array} \ right], ⎣⎡ 100 ⎦⎤, средний элемент можно сделать 1, разделив вторую строку на 3:

      [13−103−3078] → Разделите вторую строку на 3. [13−101−1078]. \ left [\ begin {array} {c c c} 1 и 3 и -1 \\ 0 и 3 и -3 \\ 0 и 7 и 8 \\ \ end {array} \ right] \ ce {-> [\ large \ text {Разделите вторую строку на 3.}]} \ left [\ begin {array} {c c c} 1 и 3 и -1 \\ 0 & 1 & -1 \\ 0 и 7 и 8 \\ \ end {array} \ right]. ⎣⎡ 100 337 −1−38 ⎦⎤ Разделите вторую строку на 3. ⎣⎡ 100 317 −1−18 ⎦⎤.

      Верхний и нижний элементы во втором столбце можно сделать 0 с помощью соответствующих операций со строками:

      [13−101−1078] → RX1−3 RX2 и RX3−7 RX2 [10201−10015]. \ left [\ begin {array} {c c c} 1 и 3 и -1 \\ 0 & 1 & -1 \\ 0 и 7 и 8 \\ \ end {array} \ right] \ ce {-> [\ large R_1 – 3R_2 \ text {и} R_3 – 7R_2]} \ left [\ begin {array} {c c c} 1 и 0 и 2 \\ 0 & 1 & -1 \\ 0 & 0 & 15 \\ \ end {array} \ right].⎣⎡ 100 317 −1−18 ⎦⎤ RX1 −3RX2 и RX3 −7RX2 ⎣⎡ 100 010 2−115 ⎦⎤.

      Теперь со средним столбцом [010], \ left [\ begin {array} {c} 0 \\ 1 \\ 0 \\ \ end {array} \ right], ⎣⎡ 010 ⎦⎤, метод переходит к третьему столбцу, разделив третью строку на 15:

      [10201−10015] → Разделите третью строку на 15. [10201−1001]. \ left [\ begin {array} {c c c} 1 и 0 и 2 \\ 0 & 1 & -1 \\ 0 & 0 & 15 \\ \ end {array} \ right] \ ce {-> [\ large \ text {Разделите третью строку на 15.}]} \ left [\ begin {array} {c c c} 1 и 0 и 2 \\ 0 & 1 & -1 \\ 0 & 0 & 1 \\ \ end {array} \ right]. ⎣⎡ 100 010 2−115 ⎦⎤ Третью строку разделите на 15. ⎣⎡ 100 010 2−11 ⎦⎤.

      На последнем этапе процесса кратные третьей строке добавляются к первой и второй строкам, так что последний столбец становится [001]: \ left [\ begin {array} {c} 0 \\ 0 \\ 1 \\ \ end {array} \ right]: 001:

      [10201−1001] → RX1−2 RX3 и RX2 + RX3 ⋅ [100010001]. □ \ left [\ begin {array} {c c c} 1 и 0 и 2 \\ 0 & 1 & -1 \\ 0 & 0 & 1 \\ \ end {array} \ right] \ ce {-> [\ large R_1 – 2R_3 \ text {и} R_2 + R_3.]} \ left [\ begin {array} {c c c} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \\ \ end {array} \ right]. \ _\квадратный ⎣⎡ 100 010 2−11 ⎦⎤ RX1 −2RX3 и RX2 + RX3 ⋅ ⎣⎡ 100 0100001 ⎦⎤. □

      Отправьте свой ответ

      A = [14−564022−1] A = \ left [\ begin {array} {ccc} 1 и 4 и -5 \\ 6 и 4 и 0 \\ 2 и 2 и -1 \\ \ end {array} \ right] A = ⎣⎡ 162 442 −50−1 ⎦⎤

      Какова сумма всех записей в rref (A)? \ text {rref} (A)? rref (A)?

      Примечание : rref (A) \ text {rref} (A) rref (A) обозначает «сокращенную форму эшелона строк» ​​матрицы A.А.А.

      Практикум по схеме: исключение Гаусса

      Практикум по схеме: исключение Гаусса

      Задача: решить систему из n независимых линейных уравнений в n переменная.

      Как известно, эта задача эквивалентна решению единственной матричное уравнение

      / a11 a12 ... a1n \ / x1 \ / b1 \
      | a21 a22 ... a2n | | x2 | | b2 |
      | . . . .| | . | | . |
      | . . . . | | . | = | . |
      | . . . . | | . | | . |
      \ an1 an2 ... ann / \ xn / \ bn /
       
      где типичное значение aij в матрице a – это коэффициент xj в уравнении i -е, и типичное значение bi в Матрица b – это номер в правой части матрицы i th уравнение.

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

      Схема не имеет матричного типа данных, но естественно реализовать матрицы как векторы векторов, как двумерные массивы в C.

      Чтобы не писать длинные имена процедур vector-ref и векторных наборов! , давайте определим короткие псевдонимы для их:

      (определите $ vector-ref)
      (определите $! векторный набор!)
       
      Также нам понадобится операция копирования вектора, которую легко определить:
      (определить вектор-копию
        (лямбда (vec)
          (пусть * ((len (длина вектора vec))
                 (результат (make-vector len)))
            (do ((индекс 0 (+ индекс 1)))
                ((= index len) результат)
              ($! индекс результата ($ vec index))))))
       
      Аналогичные операции для матриц (как векторов векторов) теперь могут быть определяется прямо:
      (определите $$
        (лямбда (столбец строки матрицы)
          ($ ($ матричная строка) столбец)))
      
      (определите $$!
        (лямбда (значение столбца строки матрицы)
          ($! ($ матричная строка) значение столбца)))
      
      (определить матрицу-копию
        (лямбда (мат)
          (пусть * ((строки (мат векторной длины))
                 (результат (строки make-vector)))
            (do ((строка 0 (+ строка 1)))
                ((= ряд строк) результат)
              ($! строка результата (вектор-копия (строка $ mat)))))))
       
      Теперь мы готовы реализовать решение методом исключения Гаусса.В процедура принимает два аргумента, матрицу коэффициентов из левая часть уравнений и вектор чисел из справа. Он возвращает вектор чисел – значения неизвестные в исходной системе уравнений.

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

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

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

      Сборка частей дает эту основательную структуру:

      (определить гауссово-исключение
        (лямбда (коэффициенты правые)
          (let * ((n (векторные правые части))
                 (lhs (коэффициенты копии матрицы))
                 (rhs (правая часть векторной копии))
      
                 (скалярное-кратное-сложение!
                  (лямбда (скаляр с дополнительным слагаемым)
                    (do ((столбец 0 (+ столбец 1)))
                        ((= столбец n))
                      ($$! lhs augend column
                           (+ ($$ lhs augend column)
                              (* скаляр ($$ lhs добавляемый столбец)))))
                    ($! rhs augend (+ ($ rhs augend)
                                      (* скаляр (добавление $ rhs))))))
      
                 (поменять местами уравнения!
                  (лямбда (альфонс гастон)
                    (пусть ((temp-lhs ($ lhs alphonse))
                          (temp-rhs ($ rhs alphonse)))
                      ($! lhs alphonse ($ lhs gaston))
                      ($! rhs alphonse ($ rhs gaston))
                      ($! lhs Gaston temp-lhs)
                      ($! rhs gaston temp-rhs))))
      
                 (самый большой в столбце
                  (лямбда (начало двоеточия)
                    (пусть петля ((строка (+ начало 1))
                               (самый большой на данный момент (начало столбца $$ lhs))
                               (начало ряда))
                      (если (= строка n)
                          (минусы на данный момент самый большой ряд на данный момент)
                          (let ((current ($$ lhs row col)))
                            (если (<(наибольший абс.) (текущий абс.))
                                (петля (+ строка 1) текущая строка)
                                (петля (+ строка 1) самая большая строка на данный момент строка)))))))
      
                 (обратная замена
                   (лямбда (lhs rhs)
                     (пусть * ((результат (make-vector n))
      
                            (решение
                             (лямбда (индекс)
                               (let loop ((число (индекс $ rhs))
                                          (более поздний индекс (+ индекс 1)))
                                 (если (= более поздний индекс n)
                                     (/ число ($$ lhs index index))
                                     (цикл (- число
                                              (* ($$ lhs index later-index)
                                                 ($ результат позже-индекс)))
                                           (+ более поздний индекс 1)))))))
      
                       (do ((индекс (- n 1) (- индекс 1)))
                           ((отрицательный? индекс) результат)
                         ($! индекс результата (индекс решения)))))))
      
            (do ((индекс 0 (+ индекс 1)))
                ((= индекс (- n 1)))
              (пусть * ((swapfacts (индекс индекса наибольшего в столбце))
                     (pivot (факты об обмене автомобилями))
                     (swap-row (cdr swapfacts)))
                (своп-уравнения! индекс-своп-строка)
                (сделать ((исключить (+ индекс 1) (+ удалить и 1)))
                    ((= исключить и п))
                  (скалярное-кратное-сложение!
                   исключить
                   показатель
                   (- (/ ($$ lhs исключение и индекс) pivot))))))
            (обратная замена lhs rhs))))
       

      Этот документ доступен во всемирной паутине как

      http: // www.math.grin.edu/~stone/events/scheme-workshop/gaussian.html

      создан 14 июля 1995 г.
      последняя редакция 24 июня 1996 г.

      Джон Дэвид Стоун ([email protected])

      Сокращение строк

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

      • Масштабирование: мы можем умножить обе части уравнения на ненулевое число.

        Cx + 2y + 3z = 62x − 3y + 2z = 143x + y − z = −2multiply1stby − 3 −−−−−−−−−− → C − 3x − 6y − 9z = −182x − 3y + 2z = 143x + у − z = −2

      • Замена: мы можем добавить кратное одного уравнения к другому, заменив второе уравнение результатом.

        Cx + 2y + 3z = 62x − 3y + 2z = 143x + y − z = −22nd = 2nd − 2 × 1st −−−−−−−−−− → Cx + 2y + 3z = 6−7y − 4z = 23x + y − z = −2

      • Обмен: мы можем поменять местами два уравнения.

        Cx + 2y + 3z = 62x − 3y + 2z = 143x + y − z = −23rd ← → 1-й −−−−−− → C3x + y − z = −22x − 3y + 2z = 14x + 2y + 3z = 6

      Расширенные матрицы и операции со строками

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

      Cx + 2y + 3z = 62x − 3y + 2z = 143x + y − z = −2 становится −−−− → A12362−321431−1−2B.

      Это называется расширенной матрицей . Слово «расширенный» относится к вертикальной линии, которую мы рисуем, чтобы напомнить себе, где находится знак равенства; Матрица представляет собой сетку чисел без вертикальной линии. В этой нотации три наших допустимых способа манипулирования нашими уравнениями становятся строковыми операциями :

      • Масштабирование: умножить все записи в строке на ненулевое число.A12362−321431−1−2BR1 = R1 × −3 −−−−− → A − 3−6−9−182−321431−1−2B Здесь обозначение R1 просто означает «первая строка», а также для R2, ​​R3 и т. Д.
      • Замена: добавить одну строку к другой, заменив вторую строку результатом. A12362−321431−1−2BR2 = R2−2 × R1 −−−−−−− → A12360−7−4231−1−2B
      • Поменять местами: поменять местами два ряда. A12362−321431−1−2BR1 ← → R3 −−−− → A31−1−22−32141236B

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

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

      Определение

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

      Итак, линейные уравнения матриц, эквивалентных строкам, имеют тот же набор решений .

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

      Определение

      Матрица находится в эшелоне строк формы , если:

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

      Вот изображение матрицы в виде эшелона строк:

      DHHFAAAAA0AAAA000AA00000EIIGA = anynumberA = anynonzeronumber
      Определение

      Поворотный элемент - это первый ненулевой элемент строки матрицы в форме эшелона строк.

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

      A12360124001030B становится −−−− → Cx + 2y + 3z = 6y + 2z = 410z = 30.

      Сразу видно, что z = 3, откуда y = 4−2 · 3 = −2 и x = 6−2 (−2) −3 · 3 = 1. См. Этот пример.

      Определение

      Матрица находится в сокращенном эшелоне строк формы , если она находится в форме эшелона строк, и дополнительно:

      1. Каждая точка поворота равна 1.
      2. Каждая сводная точка - это единственная ненулевая запись в своем столбце.

      Вот изображение матрицы в сокращенном виде:

      DHF10A0A01A0A0001A00000EIGA = любое число1 = точка поворота

      Матрица в виде приведенного ряда строк в некотором смысле решена полностью. Например,

      A1001010−20013B становится −−−− → Nx = 1y = −2z = 3.

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

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

      Теорема

      Каждая матрица является строкой, эквивалентной одной и только одной матрице в сокращенной форме ряда строк.

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

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

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

      Не будем доказывать уникальность, но, может быть, сможете!

      Алгоритм (сокращение строк)
      • Шаг 1a: Поменяйте местами первую строку с нижней, чтобы крайняя левая ненулевая запись оказалась в первой строке (при необходимости).
      • Шаг 1b: Масштабируйте первую строку так, чтобы ее первая ненулевая запись была равна 1.
      • Шаг 1c: Используйте замену строки, чтобы все записи ниже этой 1 равнялись 0.
      • Шаг 2a: Поменяйте местами 2-ю строку на нижнюю так, чтобы крайняя левая ненулевая запись находилась во 2-й строке.
      • Шаг 2b: Масштабируйте вторую строку так, чтобы ее первая ненулевая запись была равна 1.
      • Шаг 2c: Используйте замену строки, чтобы все записи ниже этой 1 равнялись 0.
      • Шаг 3a: Поменяйте местами третью строку на нижнюю так, чтобы крайняя левая ненулевая запись находилась в третьей строке.
      • и т. Д.
      • Последний шаг: Используйте замену строк, чтобы очистить все записи над сводными точками, начиная с последней опорной точки.

      Вот алгоритм сокращения строк, кратко изображенный на картинках.

      AAAAAAAAAAAAAAAADHFEIG1AAAAAAAAAAAAAAADHFEIG1AAA01AA0AAA0AAADHFEIG1AAA01AA0AAA0AAADHFEIG1AAA01AA000A000ADHFEIG1AAA01AA000A000ADHFEIG1AAA01AA0001000ADHFEIG1AAA01AA00010000DHFEIG1AAA01AA00010000DHFEIG1AA001A000010000DHFEIG10A001A000010000DHFEIGGeta1hereCleardownGeta1hereCleardown (maybethesearealreadyzero) Geta1hereCleardownMatrixisinREFClearupClearupMatrixisinRREF

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

      Определение

      Позиция поворота матрицы - это элемент, который является поворотным элементом эшелонированной формы этой матрицы.

      Сводной столбец матрицы - это столбец, который содержит точку поворота.

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

      Форма ступенчатого эшелона несовместимой системы

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

      Другими словами, сокращенная по строкам матрица противоречивой системы выглядит так:

      До сих пор мы обсуждали два класса матриц:

      1. Когда в сокращенной форме эшелона строк матрицы есть точка поворота в каждом нерасширенном столбце, тогда она соответствует системе с уникальным решением: A1001010−20013Btranslatesto −−−−−− → Nx = 1y = −2z = 3.

Оставить комментарий