Decompor transformação de matriz complexa em uma série de transformações simples?
-
19-09-2019 - |
Pergunta
gostaria de saber se é possível (e se for, então como) para re-presente uma transformação arbitrária matriz M3, tal como uma sequência de transformações simples (tais como traduzir, escala, de inclinação, rotação)
Em outras palavras: como calcular mTranslate, mScale, MRotate, matrizes MSkew do MComplex para que a seguinte equação seria verdade:
= MComplex mTranslate * mScale * MRotate * MSkew (ou numa outra ordem)
Solução
decomposição singular do valor (ver também este blog e este PDF ). Acontece uma matriz arbitrária para uma composição de 3 matrizes: ortogonal + diagonal + ortogonal. As matrizes ortogonais são matrizes de rotação; a matriz diagonal representa inclinar ao longo dos eixos primários = escalonamento.
A tradução lança uma chave inglesa no jogo, mas o que você deve fazer é tirar a parte de tradução da matriz para que você tenha uma matriz 3x3, SVD executar de que para dar-lhe a rotação + distorcendo, em seguida, adicione a tradução parte de volta. Dessa forma, você terá uma rotação + escala + rotação + traduzir composição de 4 matrizes. Provavelmente é possível fazer isso em 3 matrizes (rotação + escalando ao longo de algum conjunto de eixos + tradução), mas eu não sei exatamente como ... talvez uma decomposição QR (Q = ortogonal = rotação, mas eu não tenho certeza se o símbolo R representa um enviesamento somente ou tem uma parte rotativa.)
Outras dicas
Sim, mas a solução não será único. Além disso, você deve sim colocar tradução no final (a ordem do resto não importa)
Para qualquer A
matriz quadrada existe infinitamente muitas matrizes B
e C
para que A = B*C
. Escolha qualquer B
matriz invertível (o que significa que B ^ -1 existe ou det (B)! = 0) e agora C = B^-1*A
.
Assim, para a sua primeira solução de MC
decompõem em MT
e MS*MR*MSk*I
, escolhendo MT para ser alguma matriz transposição invertível. Em seguida, decompor o resto em MS
e MR*MSk*I
modo que MS é a matriz de escala arbitrária. E assim por diante ...
Agora, se no final do I
diversão é uma matriz de identidade (com 1 na diagonal, 0 em outro lugar) Você é bom. Se não for, começar de novo, mas escolher diferentes matrizes ;-)
Na verdade, usando o método acima simbolicamente você pode criar conjunto de equações que vai render-lhe uma fórmula parametrizadas para todas essas matrizes.
Qual a utilidade dessas decomposições seria para você, bem -. Isso é outra história
Se você digitar isso em Mathematica ou Maxima que vai calcular isso para você em nenhum momento.