Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Алгоритмы > матричное уравнение |
Автор: mrgloom 24.7.2012, 14:18 | ||
есть матричное уравнение, все матрицы 3х3, надо найти M, А и B известны.
пните в нужную сторону |
Автор: Pavia 24.7.2012, 18:17 |
A*M-M*B=0 Далее решаем систему уравнений C*D=0 D=(m00,m01,m02,m10,m11,m12,m20,m21,m22); |
Автор: mrgloom 25.7.2012, 08:50 |
а С чему равно? |
Автор: W4FhLF 5.8.2012, 20:13 |
Pavia, далеко не всё так просто. Вообще по виду уравнение не имеет решений в общем случае, кроме тривиального М = 0. Может это поможет: http://en.wikipedia.org/wiki/Sylvester_equation Хотя форма другая всё-таки. |
Автор: entrix 6.8.2012, 02:35 |
Смотрите GNU Octave, там есть соответствующая функция syl: Solve the Sylvester equation A X + X B + C = 0 using standard lapack subroutines. For example: syl ([1, 2; 3, 4], [5, 6; 7, 8], [9, 10; 11, 12]) ⇒ [ -0.50000, -0.66667; -0.66667, -0.50000 ] http://www.gnu.org/software/octave/doc/interpreter/Functions-of-a-Matrix.html#index-syl-2110 |
Автор: mrgloom 6.8.2012, 11:15 |
похоже, то что нужно. попробую в Mathematica. |
Автор: mrgloom 6.8.2012, 12:12 |
попробовал в Mathematica выдало все нули, ну т.е. тривиальное решение. может что то сделал не правильно? мне всё таки надо наверно сперва доказать, что существует решение отличное от тривиального. |
Автор: maxim1000 6.8.2012, 12:21 |
это обычное однородное линейное уравнение, как и сказал Pavia так что можно просто построить матрицу (9*9) и посмотреть на её определитель |
Автор: mrgloom 6.8.2012, 12:51 |
вы походу перепутали A*X=B*X и A*X=X*B тут Х так просто не выразить |
Автор: W4FhLF 6.8.2012, 13:34 |
maxim1000, умножение матриц операция не коммутативная. |
Автор: mrgloom 6.8.2012, 15:31 | ||||||||||||||
http://math.stackexchange.com/questions/179413/existence-of-non-trivial-solution-of-sylvester-equation проверяю на существование не тривиального решения через первый критерий
выдает {} матрицы задавал как
так же пробовал
хотелось бы узнать как по матрице A
можно найти хотя бы 1 матрицу B которая будет удовлетворять вышеописанному условию? так же пробовал через другое эквивалентное условие.
хотя возможно оно выглядит так
вопрос опять же остается, хотелось бы узнать как по матрице A
можно найти хотя бы 1 матрицу B которая будет удовлетворять вышеописанному условию? |
Автор: maxim1000 6.8.2012, 18:18 |
а этого и не нужно просто записать каждый коеэффициент левого произведения и каждый коэффициент правого произведения, ну и приравнять 9 уравнений 9 неизвестных все уравнения линейные тот факт, что произведение некоммутативно, приведёт разве что к тому, что формулы будут разные и разные наборы неизвестных будут слева и справа, но для СЛАУ это не так важно |
Автор: mrgloom 7.8.2012, 09:34 |
дело в том, что эти 9 уравнений не решить как обычную СЛАУ. т.к. хотя бы для примера AX-XB первая строчка зависит от x11,x12,x13,x21,x31 AX первая строчка зависит от x11,x21,x31 возможно AX-XB=0 как то и переписывается в виде типа P*X=C но как построить матрицы P,C ? |
Автор: mrgloom 7.8.2012, 10:53 |
да, я кажется понял. вместо системы 3х3*3х3 получаем 9х9*1х9 A*X-X*B=new_A*new_Xr=0 я это вручную сделал, а вот как записать формулу для матрицы 9х9 в общем виде? потом загнал в LeastSquares и получил опять тривиальное решение =0. |
Автор: maxim1000 7.8.2012, 15:50 | ||||
так вручную в коде и записать, 9 уравнений - не так уж и много ну и в процессе можно обнаружить какую-нибудь закономерность, может, код сократится
зачастую под решением СЛАУ подразумевается нахождение конкретного вектора здесь задача решить однородную систему, если есть какие-то нетривиальные решения, то их есть целое линейное подпространство, надо какие-нибудь специализированные методы смотреть |
Автор: mrgloom 8.8.2012, 09:00 | ||
складывается впечатление, что закономерность какая то непростая. там проблема в том, что не тривиальное решение существует только когда, выполняется условие, которое зависит от матриц А,В. Матрицу А я могу варьировать(но там есть некоторые ограничения), а матрица В неким образом всё таки зависит от матрицы А. и матрица В определена с погрешностью. так вот непонятно можно ли подобрать матрицу А таким образом, чтобы у уравнения АХ=ХВ существовало отличное от тривиальное решение? |
Автор: maxim1000 8.8.2012, 10:48 |
для существования нетривиального решения матрицы 9*9 должна быть вырождена так что можно определитель приравнять нулю хотя, конечно, аналитически с формулой определителя 9*9 работать неудобно, но можно попробовать как-то численно... |
Автор: mrgloom 8.8.2012, 14:10 |
и что получится полином 9 степени от 18 параметров? и как его решать? |
Автор: maxim1000 8.8.2012, 15:50 |
насколько я понимаю, B предполагается известной, нужно найти A тогда будет полином от 9 параметров (элементы B будут просто числами) честно говоря, на вскидку, алгоритм нахождения нулей этого полинома я не предложу, но, возможно, что-то и есть... кроме того, наверное, на A есть какие-то ограничения, иначе можно просто взять A=B, тогда единичная матрица в качестве X вполне себе подходит на роль нетривиального решения |
Автор: mrgloom 9.8.2012, 16:19 | ||
а такую систему можно как AX=B представить? |
Автор: mrgloom 10.8.2012, 10:24 |
что если поставить задачу так. я знаю координаты точек u,v после преобразования, а до преобразования x,y не знаю, но знаю что расстояние между точками сохраняется. пример имею 5 одних и тех же четырехугольников до и после ![]() ![]() возможно ли имея такую информацию найти неизвестное преобразование? |
Автор: maxim1000 10.8.2012, 10:39 |
Судя по картинкам, у меня складывается впечатление, что это не афинное преобразование. Больше похоже на http://en.wikipedia.org/wiki/Texture_mapping#Perspective_correctness. Подозреваю, что там нужны несколько другие методы... |
Автор: mrgloom 10.8.2012, 11:21 |
ну да перспективное, но ни задаются одной формулой у афинного просто последняя строка 0 0 1 |
Автор: baldina 10.8.2012, 14:04 | ||||
перейдите к размерности на 1 больше, получите аффинное. судя по рисунку, это не так. может, имеется в виду соотношение расстояний? (и это естественно, т.к. в данном случае имеем только поворот в 3D) Добавлено через 6 минут и 43 секунды
что еще известно? |
Автор: mrgloom 10.8.2012, 14:57 | ||
вы наверно не поняли, я знаю что расстояния между точками до преобразования были одинаковые, а после они конечно разные ибо искажение. пример было 2 одинаковых по длине отрезка но с разными координатами х1,у1,х2,у2 и х3,у3,х4,у4 (этих координат я не знаю) , но знаю что длины отрезков одинаковые, а так же знаю какие координаты точек после преобразования соответствуют точкам отрезков. |
Автор: mrgloom 10.8.2012, 17:07 | ||||||
попробовал решить с числами, не смог дождаться результата.
попробовал переписать без деления, тоже самое.
попробовал для афинных преобразований m31=m32=0 (убрал 2 переменные и убрал 2 уравнения) получил почему, то что не решений
|