Здравствуйте, Ogre, Вы писали:
O>Если у меня матрица состоит только из -1 и +1, как мне найти обратную матрицу???
Да, чуть не забыл :) Матрица размером 256х256.
Представляет собой матрицу Адамара с перемешаными столюцами и строками (если это как-то может помочь)
Здравствуйте, Ogre, Вы писали:
O>Здравствуйте, Ogre, Вы писали:
O>>Если у меня матрица состоит только из -1 и +1, как мне найти обратную матрицу??? вспомните первый курс и метод линейных преобразований
в случае с -1 и 1 все должно быстро посчитаться, имхо
O>>>Если у меня матрица состоит только из -1 и +1, как мне найти обратную матрицу??? N> вспомните первый курс и метод линейных преобразований N> в случае с -1 и 1 все должно быстро посчитаться, имхо
сорри, глупость сказал. так ничего не получится.
Идея другая:
каждая строка матрицы — вектор в 256 мерном пространстве. Так как все они состоят из 1 и -1 то:
1) проекция каждого вектора на любую ось — 1 или (-1)
2) длины всех векторов по Евклидовой норме = 256
Совершенно интуитивно, доказывать лень:
преобразование поворота, которое совместит один из векторов с какой-либо осью, сделает то же самое с другими
(в 3d это в голове можно представить
строим матрицу поворота, умножаем на нее исходную, и получаем единичную с перемешанными столбцамии строками.
N>преобразование поворота, которое совместит один из векторов с какой-либо осью, сделает то же самое с другими N>(в 3d это в голове можно представить
Попытаемся: (1,1,-1) и (1,-1,-1) легко проверить, что они не перпендикулярны и не коллинеарны. После поворота угол не изменится, а оси, между тем, либо коллинеарны(одна и та же ось), либо перпендикулярны.
N>строим матрицу поворота, умножаем на нее исходную, и получаем единичную с перемешанными столбцамии строками.
А мне кажется, что длины так и останутся 256, т.е. единичная матрица не получится
Как минимум нормировать надо.
N>(интересно, может я и на этот раз ступил?
Видимо
Здравствуйте, Nose, Вы писали: N>преобразование поворота, которое совместит один из векторов с какой-либо осью, сделает то же самое с другими N>(в 3d это в голове можно представить
Что бы это могло означать? Под вращением понимается поворот в плоскости, натянутой
на какую-то пару координатных ортов? Но тогда ясно, что это не верно.
Есть, конечно, в линейной алгебре метод вращений, но он не настолько прост
К тому же непонятно, откуда взялось чувство, что с матрицами подобного
вида что-то можно делать быстрее, чем в произвольном случае.
Здравствуйте, Ogre, Вы писали:
O>Если у меня матрица состоит только из -1 и +1, как мне найти обратную матрицу???
имхо, учитывая, что матрица, а значит и все миноры, только из 1 и -1, определители даже втупую считаться будут легко и без ошибок, поэтому Aобр = A^/det(A), где A^ — транспонированная матрица составленная из алг доп к соответсвующим элементам A. Дальше наверное стоит копать в сторону облегчения вычисления определителей матриц из 1 и -1.
Здравствуйте, Rumata, Вы писали:
R>Здравствуйте, Ogre, Вы писали:
O>>Если у меня матрица состоит только из -1 и +1, как мне найти обратную матрицу??? R>имхо, учитывая, что матрица, а значит и все миноры, только из 1 и -1, определители даже втупую считаться будут легко и без ошибок, поэтому Aобр = A^/det(A), где A^ — транспонированная матрица составленная из алг доп к соответсвующим элементам A. Дальше наверное стоит копать в сторону облегчения вычисления определителей матриц из 1 и -1.
O>Если у меня матрица состоит только из -1 и +1, как мне найти обратную матрицу???
Вспоминается, что перестановка строк/столбцов эквивалентна умножению на матрицы специального вида.
Для этих матриц обратные считаются легко. Для матрицы Адамара обратная вычисляется аналитически.
Пусть ты знаешь, как перестановкой строк столбцов твоей матрицы получить матрицу Адамара. Это эквивалентно тому,
что
L_1 * L_2 * *** * L_K * M * R_1 * R_2 * *** * R_L = H
M - твоя матрица,
H - матрица Адамара.
Тогда
M = (L_K^(-1)) * *** * (L_2^(-1)) * (L_1^(-1)) * H * (R_L^(-1)) * *** * (R_2^(-1)) * (R_1^(-1))
Пользуясь нехитрым правилом:
(A*B)^(-1) = (B^(-1))*(A^(-1))
Ты легко найдешь обратные от левой и правой частей.
Здравствуйте, DeaTH FaNG, Вы писали:
O>>Если у меня матрица состоит только из -1 и +1, как мне найти обратную матрицу???
DF>Вспоминается, что перестановка строк/столбцов эквивалентна умножению на матрицы специального вида. DF>Для этих матриц обратные считаются легко. Для матрицы Адамара обратная вычисляется аналитически.
DF>Пусть ты знаешь, как перестановкой строк столбцов твоей матрицы получить матрицу Адамара. Это эквивалентно тому, DF>что
DF>Ты легко найдешь обратные от левой и правой частей.
DF>Удачи
А что это за матрицы — L_k и R_k??? Матрицы перестановки???
Что — то я все равно не понял как найти обратную матрицу...
Да, кстати, перестановочных матриц у меня нет. Есть только 2 массива содержащие данные, менять знак у соотвествующего столбца\строки или нет.
Здравствуйте, klovetski, Вы писали:
K>Матрицы Адамара это матрицы, составленные из 1 и -1, столбцы которых ортогональны, так что справедливо соотношение
K> H’ * H = n * I,
K>где [n, n] = size(H) и I — единичная матрица.
K>Константин
Насколько я понимаю H’ — транспонированная матрица. Так как же из этого свойства вывести алгоритм нахождения обратной матрицы???
Уже пробовал делать в лоб по Гауссу, но возникает деление на ноль...
Здравствуйте, Ogre, Вы писали: K>>Матрицы Адамара это матрицы, составленные из 1 и -1, столбцы которых ортогональны, так что справедливо соотношение
K>> H’ * H = n * I,
K>>где [n, n] = size(H) и I — единичная матрица.
O>Насколько я понимаю H’ — транспонированная матрица. Так как же из этого свойства вывести алгоритм нахождения обратной матрицы??? O>Уже пробовал делать в лоб по Гауссу, но возникает деление на ноль...
Метод Гаусса не очень хорош для этих целей... Уж если им и решать такую систему,
то надо предварительно исходную матрицу и правую часть системы умножить на транспонированную
и решать то, что получится (но предпочтительнее методом Холецкого или с помощью LU-разложения)
Обратная по отношению к А матрица В это такая, что В*А=I
Поэтому для матрицы Адамара H (если она у Вас действительно является таковой)
обратная будет равна H'/n
P.S. Матрица Адамара порядка n > 2 существует только тогда, когда n кратно 4.
Здравствуйте, klovetski, Вы писали:
K>Обратная по отношению к А матрица В это такая, что В*А=I
K>Поэтому для матрицы Адамара H (если она у Вас действительно является таковой) K>обратная будет равна H'/n
K>P.S. Матрица Адамара порядка n > 2 существует только тогда, когда n кратно 4.
K>Константин.
Ну про кратность я знаю. И еасколько я понимаю след. преобразование матрицы Адамара сохраняет ее свойства:
1) H — матрица Адамара (256x256).
2) Сгенерировано 2 случайных массива по 256 элементов. Элементы — либо 1, либо -1.
3) Каждый столбец матрицы умножается на сообтветствующий элемент первого массива, затем каждая строка матрицы — на соответствующий элемент второго массива (то есть перемешиваются строки и столбцы).
Полученная матрица — есть матрица H*, состоящая из 1 и -1.