6 votos

Método de multiplicación alternativos cuaternión

Dadas dos cuaterniones, $a+bi+cj+dk$$e+fi+gj+hk$, su producto (an.r.t. su orden dado) que normalmente estaría dado por $Q_1+Q_2i+Q_3j+Q_4k=(ae-bf-cg-dh)+(af+be+ch-dg)i+(ag-bh+ce+df)j+(ah+bg-cf+de)k$. Esto lleva a un total de $16$ real multiplicaciones y $12$ real adiciones a lograr.

Yo estoy buscando para reducir el número de multiplicaciones. He aquí lo que tengo hasta ahora.

$P_1=(c+d)(g+h)$, $P_2=(a+b)(e+f)$, $P_3=(c+d)(e+f)$, $P_4=(a+b)(g+h)$, $Q_1=(ae+dg)+(ch-bf)-P_1$, $Q_2=P_2+(ch-bf)-(ae+dg)$, $Q_3=P_3+(ag-de)-(bh+cf)$, $Q_4=P_4-(ag-de)-(bh+cf)$.

Como lo que yo puedo decir, esto requiere de 12 real multiplicaciones y 16 real adiciones, asumiendo ciertas cantidades son reutilizados.

Existen métodos bien conocidos para hacerlo, utilizando menos real, multiplicaciones, o cualquier obvio simplificaciones que se podía hacer a mi fórmulas?

EDIT: Se puede calcular el $(R_1,R_2)=(ae+dg,ag-de)$ $(R_3,R_4)=(cf+bh,ch-bf)$ por este método: $S_1=(a+d)(e+g)$, $S_2=(c+b)(f+h)$, $(R_1,R_2)=(S_1-ag-de,ag-de)$, $(R_3,R_4)=(S_2-ch-bf, ch-bf)$. Esto lleva el total de número de la real multiplicaciones hasta 10, y el real adiciones a 22.

7voto

notpeter Puntos 588

Hay un algoritmo de aquí que utiliza ocho multiplicaciones, siempre y cuando no se tienen en cuenta las multiplicaciones por $2$ y $-1$. Este documento menciona también una prueba de que no se puede hacer con menos de siete. Aquí está una revisión de un artículo que muestra que no se puede hacer con menos de diez multiplicaciones si se tiene en cuenta multiplicando fijas, constantes, y da un algoritmo, pero no puedo ver el papel (debido a las barreras de pago y no sé si cualquiera de estos enlaces funcionará).

El algoritmo en el primer documento es la siguiente: $(a_0+a_1i+a_2j+a_3k)(b_0+b_1i+b_2j+b_3k)=c_0+c_1 i+c_2j+c_3k$, donde $$\begin{pmatrix} -c_0&c_1&c_2&c_3\end{pmatrix}=1/4\begin{pmatrix} n_0p_0&n_1p_1&n_2p_2&n_3p_3\end{pmatrix} A-2\begin{pmatrix} a_0b_0&a_3b_2&a_2b_1&a_1b_3\end{pmatrix} $$ $$A=\begin{pmatrix} 1&1&1&1\\ 1&-1&1&-1\\1&1&-1&-1\\1&-1&-1&1\end{pmatrix}$$ $$\begin{pmatrix} n_0&n_1&n_2&n_3\end{pmatrix}=\begin{pmatrix} a_0&a_1&a_2&a_3\end{pmatrix} A$$$$\begin{pmatrix} p_0&p_1&p_2&p_3\end{pmatrix}=\begin{pmatrix} b_0&b_1&b_2&b_3\end{pmatrix}$$ Así que el único "real" multiplicaciones de estar abajo se entre $n$s y $p$s y entre $a$s y $b$s en la fórmula final.

1voto

Joffan Puntos 7855

Uno de los métodos de la internetz

$$\begin{align} A_1 & = (d + b) * (f + g) \\ A_3 &= (a - c) * (e + h) \\ A_4 &= (a + c) * (e - h) \\ A_2 &= A_1 + A_3 + A_4 \\ A_5 &= 0.5 * (A_2 + (d - b) * (f - g)) \\ \\ Q_1 &= A_5 - A_1 + (d - c) * (g - h)\\ Q_2 &= A_5 - A_2 + (b + a) * (f + e)\\ Q_3 &= A_5 - A_3 + (a - b) * (g + h)\\ Q_4 &= A_5 - A_4 + (d + c) * (e - f)\\ \end {Alinee el} $$

9 multiplicaciones destacan con "*" (incluyendo una división por 2)

comprobado, parece que funciona OK.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X