Coincidencia de mínimos cuadrados puramente rotacional

11

¿Alguien podría recomendar un método para el siguiente problema de mínimos cuadrados:

encuentre que minimiza: , donde R es unitario (rotación) matriz.RR3×3i=0N(Rxibi)2minR

Podría obtener una solución aproximada minimizando i=0N(Axibi)2min (arbitraria AR3×3 ), tomando matriz A y:

  • cálculo SVD: A=UΣVT , soltando Σ y aproximándose a RUVT
  • calculando la descomposición polar: A=UP , bajando solo la escala simétrica (y positiva definida en mi caso) P y aproximando RU

También podría usar la descomposición QR, pero no sería isométrica (dependería de la elección del sistema de coordenadas).

¿Alguien sabe de una manera de hacer esto, al menos aproximadamente, pero con una mejor aproximación que los dos métodos anteriores?

Sergiy Migdalskiy
fuente
44
Utilicé el algoritmo de Kabsch para un problema similar, que es esencialmente el método SVD que mencionaste en.wikipedia.org/wiki/Kabsch_algorithm si no estoy equivocado, el método svd minimiza la ecuación, no estoy seguro de qué quieres decir con ' mejor método?
isti_spl
2
Dios mío, acabo de recibir la misma respuesta IRL. ¡Gracias! Aparentemente, dejar caer funciona a menos que sea ​​negativo, en cuyo caso la rotación óptima incluye una reflexión (y cualquier rotación es igualmente mala). Esto técnicamente responde a la pregunta, sin embargo, ¿alguien sabe de un método más barato que calcular SVD? Es un SVD 3x3, pero necesito hacer muchos de ellos (esto es para simulación FEM, y el problema se calcula para cada FE). Además, el problema aparentemente se llama el problema de Wahba, y aparentemente aparece en la aeronáutica para determinar una nave. orientación. Σdet(UVT)
Sergiy Migdalskiy
He visto estos problemas relacionados: scicomp.stackexchange.com/questions/7552/…
isti_spl
@isti_spl: ¿Podría migrar su comentario a una respuesta?
Geoff Oxberry

Respuestas:

9

El problema se llama problema de Wahba , un algoritmo para él se llama algoritmo Kabsch , y el más popular más tarde se llama método Davenport q . Aparentemente se usa y estudia en aeronáutica para determinar una orientación artesanal. Hay muchas reseñas sobre los métodos.

Tenga en cuenta que el mejor ajuste puede incluir la reflexión.

El método Kabsch calcula una matriz SVD de matriz de covarianza 3x3 y elimina el término (módulo uno de reflexión, que generalmente se explica al negar la última columna de en la SVD). Es muy sencillo generalizar a otro número de dimensiones.ΣU

El método Davenport q a menudo se promociona como el primer algoritmo práctico, tal vez alguien pueda comentar por qué. También construye una matriz de covarianza de 3x3, pero luego parametriza la matriz de rotación como una función de un cuaternión, y el problema se convierte en el cálculo del vector propio de valor máximo de una matriz simétrica de 4x4.

(Algunas de) las implementaciones numéricas más populares se llaman QUEST y FOMA . Estos métodos suelen ser una variación sobre el tema de calcular el valor propio máximo escribiendo y optimizando el polinomio característico (un cuarto) y resolviéndolo analíticamente (cálculos bastante complicados, pasando por fórmulas de Kardano) o con la iteración de Newton.

Schuster también desarrolló y analizó algunas variantes de algoritmo iterativo.

Sergiy Migdalskiy
fuente
2
Para un poco de historia en la comunidad aeroespacial, lea los problemas humildes de Markley.
Damien