|
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
|
|
Преобразование матрицы к треугольному виду20.07.2014, 22:29. Показов 3521. Ответов 10
Метки нет (Все метки)
Здравствуйте, возникла нестандартная задача: преобразовать матрицу (разреженную) к треугольному виду (все ненулевые элементы поместить на и под диагональ), только переставляя строки и столбцы, математические операции недопустимы, следовательно обратный ход метода Гаусса тоже. Важное условие - диагональ должна быть ненулевая после преобразования, также существует некое окаймление, то есть минимум 1 столбец справа после нулей может быть ненулевым. Матрицу привел в виду: строки по возрастанию кол-ва эл-тов сверху вниз, столбцы по убыванию слева направо, то есть большинство эл-тов уже находится под диагональю. Поделитесь мыслями как можно реализовать. Дополнительные условия: эл-ты на диагонали должны быть максимальные по модулю, матрица записана в списочном виде, то есть нули не хранятся.
Добавлено через 4 часа 55 минут Хотя бы просто к треугольному виду, но перестановками строк и столбцов.
1
|
|
| 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 | |||||||
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 | ||||||||
Добавлено через 2 минуты Но по условию матрица разряженная. Вероятно, надо найти решение, когда оно есть.
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 | ||
|
1
|
||
| 24.07.2014, 00:13 | |
|
Помогаю со студенческими работами здесь
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 , при. . .
|