Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219

Преобразование матрицы к треугольному виду

20.07.2014, 22:29. Показов 3521. Ответов 10
Метки нет (Все метки)

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

Добавлено через 4 часа 55 минут
Хотя бы просто к треугольному виду, но перестановками строк и столбцов.
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.07.2014, 22:29
Ответы с готовыми решениями:

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

Преобразование системы линейных уравнений к треугольному виду.
коэффициент СИСТЕМЫ линейных уравнений заданы в виде прямоугольной матрицы. С помощью доступных преобразований привести систему к...

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

10
156 / 46 / 70
Регистрация: 01.07.2014
Сообщений: 185
21.07.2014, 19:42
Мне кажется, что без математических операций ничего не получится.
Однако можно (вероятно) заполнить диагональ максимальными по
модулю элементами.
Вот алгоритм:
1) в матрице n*n находится максимальный по модулю элемент
(параллельно и его индексы)
2) с помощью перестановок строк и столбцов (порядок не важен)
этот элемент помещается в самый верх (начало) диагонали
3) игнорируя первую строку и первый столбец рассмотрим
матрицу размера (n-1)*(n-1) и находим в ней наибольший по модулю
элемент.
4) с помощью перестановок столбцов и строк помещаем его на
диагонали второй строки и второго столбца
5) далее имеем матрицу уже размера (n-2)*(n-2)
6) и в ней находим максимальный по модулю элемент, который
перемещаем на очередное место диагонали
7) и т.д.
8) последний n-ый элемент перемещать никуда не надо.
он будет занимать своё место в конце диагонали и быть
максимальным по модулю, ибо он единственный (иных нет)!!
Примечание:
Заполнить полматрицы нулями
будет возможно только в том случае,
если будут разрешены операции со строками (умножение, вычитание ...)
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
21.07.2014, 22:50  [ТС]
Я упомянул про окаймление, все что не помещается можно засунуть туда, я уже сделал подобие, только элементы не всегда максимальные и окаймление довольно большое...
1
156 / 46 / 70
Регистрация: 01.07.2014
Сообщений: 185
22.07.2014, 15:49
Мне очень хочется уточнить ваше последнее предложение.
Я сформулирую его в виде простого вопроса:
Дана квадратная матрица, у которой есть 4 максимальных
элементов. Положим, что все элементы равны 10 и они
располагаются в четырёх углах матрицы. Как бы мы не
переставляли столбцы и строки все угловые элементы
не уйдут на диагональ. Они будут ходить по периметру.
Как поступить в этом случае? (если я вас правильно понял)??
Или не понял вовсе??
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
22.07.2014, 19:43  [ТС]
Если они стоят в углах, ставить на диагональ уже не нужно, как-то трудновато выявить максимальный элемент среди равных...
1
156 / 46 / 70
Регистрация: 01.07.2014
Сообщений: 185
22.07.2014, 20:35
Я попробовал хотя бы частично проанализировать вашу задачу.
Без этого мы просто зайдем в тупик.
1) если дана матрица размером n*n , то в качестве необходимого условия
для преобразования ее к треугольному виду должно быть наличие в этой
матрице необходимого числа нулей, как минимум: n(n-1)/2 нулей.
2) для матрицы 2*2 одного нуля вполне достаточно, а вот два нуля
могут сделать задачу неразрешимой (или решённой)!!
3) в общем случае для разрешимости задачи необходимо, чтобы детерминант
(определитель) матрицы был отличен от нуля, в противном случае задача
неразрешима
4) вывод: решение этой задачи зависит от вида матрицы
5) вывод2: если эта задача имеет решение, то можно попробовать
написать программу, которая методом перебора найдёт решение
либо докажет, что такого решения нет.
Вот пожалуй и все, что я хотел сказать
P.S.
Программа самое верное, особенно для небольших матриц.
0
835 / 643 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
23.07.2014, 13:25
Цитата Сообщение от xod Посмотреть сообщение
Дана квадратная матрица, у которой есть 4 максимальных
элементов. Положим, что все элементы равны 10 и они
располагаются в четырёх углах матрицы.
Либо я условие не понимю, либо почему не так?
Code
1
2
3
4
5
  1 2 3 4     1 2 3 4     1 4 2 3
1 1 0 0 1   2 0 0 0 0   2 0 0 0 0
2 0 0 0 0   1 1 0 0 1   1 1 1 0 0
3 0 0 0 0   4 1 0 0 1   4 1 1 0 0
4 1 0 0 1   3 0 0 0 0   3 0 0 0 0
1
156 / 46 / 70
Регистрация: 01.07.2014
Сообщений: 185
23.07.2014, 15:15
Понимаете в чем дело, вашу задачу с преобразованием матрицы
легко связать с разрешимостью системы n линейных уравнений
с n неизвестными. А последнее в свою очередь тесно связано с
определителем матрицы. В линейной алгебре доказывается, что
если определитель матрицы равен 0, то превратить ее в треугольный
вид с ненулевой диагональю неудастся. А если определитель не
равен 0. То вам может повезти. (я уверен вы знаете метод Гауса)
Правда в вашей задаче должно быть достаточное количество нулей.
Это не гарантия успеха, но это необходимое условие. Вы можете
сами это проверить расчетами. Например возьмём матрицу
порядка 5. Количество вариантов для перестановки строк =5! (факториал)
столько же и для столбцов. Итого 5!*5! вариантов. Но для построения
Вашей матрицы, а это (25 - 5)/2 =10 нулей, для которых потребуется
10! вариантов. 10! > 5!*5! - вот и сделайте вывод.
Вывод:
в общем случае ваша задача неразрешима
Конечно интересно изучить эту задачу, да вот нет времени ... Увы!
Удачи вам!
0
835 / 643 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
23.07.2014, 22:13
Цитата Сообщение от xod Посмотреть сообщение
В линейной алгебре доказывается, что
если определитель матрицы равен 0, то превратить ее в треугольный
вид с ненулевой диагональю неудастся.
Что-то тут не тою Вот матрица, определитель 0, главная диагональ ненулевая:
Code
1
2
1 0
0 0
Вероятно, имелось в виду что невозможно привести к треугольной матрице, у которой все элемнты на главной диагонали отличны от 0? Тогда да, но ведь это не требуется.

Добавлено через 2 минуты
Цитата Сообщение от xod Посмотреть сообщение
в общем случае ваша задача неразрешима
Достаточно взять матрицу, в которой нет ни одного нуля, чтобы это доказать.
Но по условию матрица разряженная. Вероятно, надо найти решение, когда оно есть.
1
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
23.07.2014, 22:55  [ТС]
значит я решил неразрешимую задачу...

Добавлено через 35 минут
Не понимаю, причем здесь определитель и кол-во нулей, нужно просто преобразовать матрицу, а не обратную найти. Нулевых строк нет, иначе нет смысла ставить задачу о ненулевой диагонали.
0
835 / 643 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
24.07.2014, 00:13
Цитата Сообщение от ExFau$t Посмотреть сообщение
иначе нет смысла ставить задачу о ненулевой диагонали
Что такое ненулевая диагональ? Когда все элементы отличны от нуля или когда хотя бы один элемент отличен от 0?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.07.2014, 00:13
Помогаю со студенческими работами здесь

Привидение Матрицы к треугольному виду ?
В matlab есть функция rref(a) в описании сказано что она приводит матрицу к треуголному виду. Но получается что она в результате выдаёт...

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

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

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

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru