Замена строк в матрице

Обновлено: 03.07.2024

если вы собираетесь поменять местами строки [0] и строки [1], результирующая матрица будет:

ребята, можете ли вы помочь мне получить код на C для этого?

Ответ полностью зависит от того, как реализована ваша "матрица", потому что язык c не имеет понятия о такой вещи.

Вы используете двумерные массивы?

Или что-то другое?

Двумерные массивы

Вам придется перемещать отдельные элементы вручную.

(Вот r1 а также r2 это целые, которые были установлены на два ряда, которые вы хотите поменять местами) memcpy реализация, которая вполне может быть быстрее, но требует целой строки временного воспоминания.

Рваные Массивы

Если эта операция очень распространена и профилирование показывает, что она отнимает много времени, вы можете рассмотреть вариант использования матрицы с рваным массивом. Что-то вроде этого:

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

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

Ряд-а-astructure

C не поддерживает присвоения массивов формы;

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

который гладкий Требуется целый ряд памяти, но если компилятор хорош, то, вероятно, быстро. Большим недостатком является то, что вы не можете обращаться к отдельным элементам матрицы с помощью [][] синтаксис больше. Скорее ты пишешь m[i].r[j] ;

другие

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

Решить эту домашнюю работу?

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

Hy! это мой первый пост о переполнении стека, я знаю, что он довольно длинный, надеюсь, меня не забанят!

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

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

имея матрицу, объявленную как

Вы можете использовать XOR-способ для замены строк, сначала идентифицируя элементы, которые нужно поменять местами (в соответствии с индексом строки, как вы уже сказали)

Я надеюсь, что это будет полезно в вашей дальнейшей практике.

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


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

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


Поменять местами две средние строки матрицы с первой и последней
Ребят Добрый вечер помогите написать программу на с++, очень нужно у самого в с++ фактически.

Если массив динамический, то поменять местами указатели, а если статический, то последовательным свопом.

если бездумно и безпошадно:

Oliga_19, вот так это делается в цивилизованном мире Так и сделали бы. Читая посты до M128K145 сложилось впечатление, что так любой не может. я сделал так, чтобы человеку было понятно, что он хочет сделать
а почитав форы и кучу левых переменных - он тупо скопирует, не поняв сути задачи relok, кстати за это вот : Найти сумму всех нечетных трехзначных чисел уважаю. (серьезно, без издевки). Отдельная благодарность от меня. M128K145, не знаю, как в вашем, а в нашем цивилизованном мире это делается так:
relok, знаете, насколько я могу судить, люди и Хеллоу Ворлд тупо копируют, не разбираясь, а потом не могут ответить, что это за принтэф там такой. volovzi, а теперь ваш вариант, но только для обмена столбцов valeriikozlov, по моему вы как раз стебетесь над моим топорными методами решения=) volovzi, а теперь ваш вариант, но только для обмена столбцов almazsr, спасибо за ответ, но я хочу увидеть ответ volovzi, а ваш код, извините, но ни в какие ворота по перфомансу не лезет M128K145, вопрос был про строки. Твой вариант, очевидно, неоптимален для строк. Если используешь указатели, так используй их до конца.
Со столбцами по-другому. Не надо стремиться решить все задачи универсальным способом, иначе выйдет как у "шутника" almazsr'a. по моему вы как раз стебетесь над моим топорными методами решения=) relok, ничего подобного, просто иногда нужно не топорный метод, а что-нибудь гибкое (что-бы уложиться по времени или по памяти). Ваш метод хорош в том что он не оспариваемый. (я над ним не стебусь - ЧЕСТНО. )

valeriikozlov, человеку, задающему такие вопросы (найти сумму всех нечетных 3-ех значных) гибкий метод незачем=) ему нужно разобраться, что такое трехзначные числа, что такое сумма и что такое нечетные числа

типа как в притче - не давай человеку рыбу, а дай удочку

almazsr, спасибо за ответ, но я хочу увидеть ответ volovzi, а ваш код, извините, но ни в какие ворота по перфомансу не лезет Это была ирония. Задание было поменять строки. Дальше пошли придирки. volovzi, понимаете, это простое действие, но если вы будете делать принципиально одинаковые действия, но посложнее обычного обмена строк, но по разному - это к добру не приведет, надо стремится к однообразию в коде, а не созданием множества методов/функций на каждый чих, тем более если проигрыш в быстродействии минимален.
Просто понимаете, проводя аналогию с вашим решением - вот такой код:
Так вот, обычному программисту хватило бы первой функции, вы бы использовали еще и вторую функцию, потому что битовые операции якобы быстрее. Это утрировано конечно, но тем не менее

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

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

Как поменять местами две строки матрицы без использования подпрограмм?
Как поменять местами две строки матрицы в C++ без использования подпрограмм?


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

Двумерный массив: поменять местами две строки
Нужно поменять местами две строки в массиве:строку, которая содержит максимальный элемент.

В матрице поменять местами две строки с заданными номерами
2)Из элементов полученной матрицы, которые лежат на главной диагонали и под ней, сформировать.

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

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

если вы собираетесь поменять местами строку [0] и строку [1], результирующая матрица будет:

вы можете помочь мне получить для этого код на C?

Это домашнее задание? (отметьте, пожалуйста) - Bob

Это домашнее задание? Как определяется ваша матрица? Вы знаете, как поменять местами две переменные типа int? Вы знаете циклы в C? Проявите немного усилий, и оно будет вознаграждено :). - Maciej Hehl

на самом деле это моя домашняя работа. это единственная оставшаяся матричная операция, которую я не знаю, как решить. матрица [100] [100], но строки и столбцы определяются пользователем. на самом деле я уже закончил замену строк, добавление строк, добавление матриц, мульт. так далее. - user420360

спасибо за ссылки mctylr. да, я умею писать для циклов. на самом деле, я пытаюсь понять код обмена строк, а затем просто внести изменения, которые будут соответствовать кодам mt. - user420360

7 ответы

Ответ полностью зависит от того, как реализована ваша «матрица», потому что в языке c такое понятие отсутствует.

Вы используете двумерные массивы?

Или что-то другое?

Двумерные массивы

Придется вручную перемещать отдельные элементы.

(Вот r1 и r2 - это целые числа, которые были установлены в две строки, которые вы хотите поменять местами) или см. Джеймс' memcpy реализация что вполне может быть быстрее, но требует целых рядов временной памяти.

Рваные массивы

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

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

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

Ряд как структура

C не поддерживает присвоение формы массивам;

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

что гладко. Для этого требуется целый ряд памяти, но, если компилятор хорош, скорее всего, он будет быстрым. Большим недостатком является то, что вы не можете адресовать отдельные элементы матрицы с помощью [][] синтаксиса больше. Скорее ты пишешь m[i].r[j] ;

Другое

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

ответ дан 23 мая '17, 14:05

еще раз спасибо! Я использую 2-й код. однако, когда я попробовал матрицу 2x3, возникла ошибка. третий столбец или столбец [2] не меняются местами. - user420360

я имею в виду, что элементы строки в последнем столбце не меняются местами - user420360

@user обратите внимание на пределы for петля. Если ваши строки имеют длину 3, цикл должен выполняться от 0 до 2, что обычно строится с помощью for(i=0;i<3;++i) . Новички нередко пишут for(i=0;i<2;++i) который не работает или for(i=0;i<=2;++i) что будет, но выглядит странно (не идиоматично) для программистов на C. - dmckee --- котенок экс-модератора

Я понял это в цикле for. я user420360

ответ дан 23 авг.

Хороший. Самое приятное здесь то, что он работает для Любой реализация с непрерывными строками. - dmckee --- котенок экс-модератора

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

Большое спасибо за ответ. Я новичок в C, и мы еще не закончили обсуждение с memcpy - user420360

Я бы, вероятно, поменял местами по одному элементу, чтобы не использовать много дополнительного хранилища. Если вы работаете в основном с такими вещами, как графические преобразования, где матрицы обычно имеют размер 3x3 или 4x4, подход Джеймса Каррана следующий: вероятно Немного лучше. Если вы работаете (или можете работать) с действительно большими матрицами, это сэкономит память и, возможно, будет работать быстрее:

ответ дан 23 авг.

решить это твое домашнее задание?

ответ дан 24 авг.

Вы должны добавить сюда обсуждение; Тем более, что это вопрос новичка. Этот трюк работает из-за семантики присваивания структур. - dmckee --- котенок экс-модератора

Обмен выглядит неплохо. Но это: row[1].m[2] = . отстой. Хм, в том-то и дело, не так ли? - Мацей Хель

Значит, дело было не в этом. Вы действительно хотели, чтобы ответ был полезным, а не просто озорной попыткой наказать ОП? Я бы не догадался. - Мацей Хель

Эй! Это мой первый пост о переполнении стека, я знаю, что он довольно длинный, надеюсь, меня не забанят!

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

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

при наличии матрицы, объявленной как

Вы можете использовать свой способ XOR для замены строк, сначала идентифицируя элементы, которые необходимо заменить (в соответствии с индексом строки, как вы уже сказали)

Надеюсь, это будет полезно в вашей дальнейшей практике.

Также попробуйте этот пример, я уверен, что впоследствии вы поймете всю идею намного лучше (не забывайте, что индекс матрицы начинается с 0!)


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

Метод Гаусса

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

  1. Система имеет единственное решение (определитель главной матрицы системы не равен нулю);
  2. Система имеет бесконечное множество решений;
  3. Решений нет, система несовместна.

Итак, у нас есть система (пусть у нее будет одно решение), и мы собираемся решать ее методом Гаусса. Как это работает?

Метод Гаусса состоит из двух этапов – прямого и обратного.

Прямой ход метода Гаусса

Сначала запишем расширенную матрицу системы. Для этого в главную матрицу добавляем столбец свободных членов.

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

Что можно делать:

  1. Можно переставлять строки матрицы местами;
  2. Если в матрице есть одинаковые (или пропорциональные) строки, можно удалить их все, кроме одной;
  3. Можно умножать или делить строку на любое число (кроме нуля);
  4. Нулевые строки удаляются;
  5. Можно прибавлять к строке строку, умноженную на число, отличное от нуля.

Обратный ход метода Гаусса

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

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

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

Сначала запишем расширенную матрицу:

Теперь займемся преобразованиями. Помним, что нам нужно добиться треугольного вида матрицы. Умножим 1-ую строку на (3). Умножим 2-ую строку на (-1). Добавим 2-ую строку к 1-ой и получим:

Затем умножим 3-ую строку на (-1). Добавим 3-ую строку к 2-ой:

Умножим 1-ую строку на (6). Умножим 2-ую строку на (13). Добавим 2-ую строку к 1-ой:

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

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

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

Метод Гаусса (метод последовательного исключения неизвестных) заключается в том, что с помощью элементарных преобразований система приводится к эквивалентной системе ступенчатого вида. Сначала с помощью 1-го уравнения исключается x1 из всех последующих уравнений системы. Затем с помощью2-го уравнения исключается x2 из 3-го и всех последующих уравнений. Этот процесс, называемый прямым ходом метода Гаусса, продолжается до тех пор, пока в левой части последнего уравнения останется только одно неизвестное xn. После этого производится обратный ход метода Гаусса – решая последнее уравнение, находим xn; после этого, используя это значение, из предпоследнего уравнения вычисляем xn–1 и т.д. Последним находим x1 из первого уравнения.

Преобразования Гаусса удобно проводить, осуществляя преобразования не с самими уравнениями, а с матрицами их коэффициентов. Рассмотрим матрицу:

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

Пример 5.1. Решить систему методом Гаусса:

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

получим нули во 2-й, 3-й и 4-й строках первого столбца:

Теперь нужно чтобы все элементы во втором столбце ниже 2-й строки были равны нулю. Для этого можно умножить вторую строку на –4/7 и прибавить к 3-й строке. Однако чтобы не иметь дело с дробями, создадим единицу во 2-й строке второго столбца и только

Теперь, чтобы получить треугольную матрицу, нужно обнулить элемент четвертой строки 3-го столбца, для этого можно умножить третью строку на 8/54 и прибавить ее к четвертой. Однако чтобы не иметь дело с дробями поменяем местами 3-ю и 4-ю строки и 3-й и 4-й столбец и только после этого произведем обнуление указанного элемента. Заметим, что при перестановке столбцов меняются местами, соответствующие переменные и об этом нужно помнить; другие элементарные преобразования со столбцами (сложение и умножение на число) производить нельзя!

Последняя упрощенная матрица соответствует системе уравнений, эквивалентной исходной:

Отсюда, используя обратный ход метода Гаусса, найдем из четвертого уравнения x3= –1; из третьего x4 = –2, из второго x2 = 2 и из первого уравнения x1= 1. В матричном виде ответ записывается в виде

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

Пример 5.2. Исследовать систему методом Гаусса:

Решение. Выписываем и преобразуем расширенную матрицу системы

Записываем упрощенную систему уравнений:

Здесь, в последнем уравнении получилось, что 0=4, т.е. противоречие. Следовательно, система не имеет решения, т.е. она несовместна. à

Пример 5.3. Исследовать и решить систему методом Гаусса:

Решение. Выписываем и преобразуем расширенную матрицу системы:

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

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

Записанное подобным образом решение называется общим, поскольку, придавая параметрам a и b различные значения, можно описать все возможные решения системы. à

Вернуться на главную страницу. или ЗАКАЗАТЬ РАБОТУ

Отключите adBlock!
и обновите страницу (F5)
очень нужно

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

Основные понятия

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

Для того чтобы разобраться с некоторыми понятиями, составим матрицу A из элементов aij. Индексы являются не просто буквами: i – это номер строки в таблице, а j – это номер столбца, в области пересечения которых располагается элемент aij. Итак, мы видим, что у нас получилась матрица из таких элементов, как a11, a21, a12, a22 и т. д. Буквой n мы обозначили число столбцов, а буквой m – число строк. Символ m × n обозначает размерность матрицы. Это то понятие, которое определяет число строк и столбцов в прямоугольном массиве элементов.

Необязательно в матрице должно быть несколько столбцов и строк. При размерности 1 × n массив элементов является однострочным, а при размерности m × 1 – одностолбцовым. При равенстве числа строчек и числа столбцов матрицу именуют квадратной. У каждой квадратной матрицы есть определитель (det A). Под этим термином понимается число, которое ставится в соответствие матрице A.

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


Ступенчатый вид матрицы

Взгляните на картинку, которая представлена ниже. На ней вы увидите матрицу и схему. Разберемся сначала с матрицей. В линейной алгебре матрица подобного вида называется ступенчатой. Ей присуще одно свойство: если aij является в i-й строке первым ненулевым элементом, то все другие элементы из матрицы, стоящие ниже и левее aij, являются нулевыми (т. е. все те элементы, которым можно дать буквенное обозначение akl, где k>i, а l -1 , при этом обязательно выполняется условие: A × A -1 = A -1 × A = E, т. е. произведение этих матриц равно единичной матрице (у единичной матрицы элементы главной диагонали являются единицами, а остальные элементы равны нулю).

Важный нюанс: в линейной алгебре есть теорема существования обратной матрицы. Достаточное и необходимое условие существования матрицы A -1 – невырожденность матрицы A. При невырожденности det A (определитель) не равен нулю.

Основные шаги, на которых основывается метод Гаусса – Жордана:

Пример нахождения обратной матрицы методом Гаусса – Жордана

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


  1. Для начала найдем определитель матрицы методом Гаусса (det A). Если этот параметр не окажется равным нулю, то матрица будет считаться невырожденной. Это позволит нам сделать вывод о том, что у A точно есть A -1 . Для вычисления определителя преобразуем матрицу до ступенчатой формы элементарными преобразованиями. Подсчитаем число K, равное числу перестановок строк. Строки мы меняли местами всего 1 раз. Вычислим определитель. Его значение будет равно произведению элементов главной диагонали, умноженному на (–1) K . Результат вычисления: det A = 2.
  2. Составим расширенную матрицу, добавив к исходной матрице единичную матрицу. Полученный массив элементов будем использовать для нахождения обратной матрицы методом Гаусса – Жордана.
  3. Первый элемент в первой строке равен единице. Нас это устраивает, т. к. не нужно переставлять строки и делить данную строку на какое-нибудь число. Начинаем работать со второй и третьей строками. Чтобы первый элемент во второй строке превратился в 0, отнимем от второй строки первую строчку, умноженную на 3. Из третьей строчки вычтем первую (умножения не требуется).
  4. В получившейся матрице второй элемент второй строчки равен –4, а второй элемент третьей строчки равен –1. Поменяем строки местами для удобства. Из третьей строчки вычтем вторую строчку, умноженную на 4. Вторую строчку разделим на –1, а третью – на 2. Получим верхнюю треугольную матрицу.
  5. Из второй строчки отнимем последнюю строчку, умноженную на 4, из первой строчки – последнюю строчку, умноженную на 5. Далее вычтем из первой строчки вторую строчку, умноженную на 2. С левой стороны мы получили единичную матрицу. Справа находится обратная матрица.


Пример решения СЛУ методом Гаусса – Жордана

На рисунке представлена система линейных уравнений. Требуется найти значения неизвестных переменных, используя матрицу, метод Гаусса – Жордана.


  1. Составим расширенную матрицу. Для этого вынесем в таблицу коэффициенты и свободные члены.
  2. Решим матрицу методом Гаусса – Жордана. Из строки № 2 вычтем строку № 1. Из строки № 3 вычтем строку № 1, предварительно умноженную на 2.
  3. Поменяем местами строки № 2 и 3.
  4. От строки № 3 отнимем строку № 2, умноженную на 2. Разделим полученную третью строку на –1.
  5. От строки № 2 отнимем строку № 3.
  6. От строки № 1 отнимем строку № 2, умноженную на –1. Сбоку у нас получился столбик, состоящий из цифр 0, 1 и –1. Из этого делаем вывод, что x1 = 0, x2 = 1 и x3 = –1.


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

  • 0 – 1 = –1, первое тождество из системы является верным;
  • 0 + 1 + (–1) = 0, второе тождество из системы является верным;
  • 0 – 1 + (–1) = –2, третье тождество из системы является верным.

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

Онлайн-калькуляторы

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

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

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