Re: equations
- To: mathgroup at smc.vnet.net
- Subject: [mg3785] Re: equations
- From: Paul Abbott <paul at earwax.pd.uwa.edu.au>
- Date: Sun, 21 Apr 1996 23:24:19 -0400
- Organization: University of Western Australia
- Sender: owner-wri-mathgroup at wolfram.com
Michael Probst wrote:
> I have a rotation matrix rm:
> MatrixForm[rm]
> -0.772889 -0.568925 -0.28101
> 0.633718 -0.71461 -0.296198
> -0.0322979 -0.407009 0.912853
>
> which I know must be equal to the rotation matrix qrm:
>
> MatrixForm[qrm]
> 2 2 2 2
> q0 + q1 - q2 - q3 2 (q1 q2 - q0 q3) 2 (q0 q2 + q1 q3)
>
> 2 2 2 2
> (q1 q2 + q0 q3) q0 - q1 + q2 - q3 2 (-(q0 q1) + q2 q3)
>
> 2 2 2 2
> 2 (-(q0 q2) + q1 q3) 2 (q0 q1 + q2 q3) q0 - q1 - q2 + q3
>
> in the variables q0,q1,q2,q3
I think qrm should be (a 2 is missing in the {2,1} element):
2 2 2 2
q0 + q1 - q2 - q3 2 (q1 q2 - q0 q3) 2 (q0 q2 + q1 q3)
2 2 2 2
2 (q1 q2 + q0 q3) q0 - q1 + q2 - q3 2 (-(q0 q1) + q2 q3)
2 2 2 2
2 (-(q0 q2) + q1 q3) 2 (q0 q1 + q2 q3) q0 - q1 - q2 + q3
> If I have this, how do I get the values for q0,q1,q2,q3 ?
One way is to use FindMinimum. Computing the squared difference between
qrm and rm and summing all terms:
(Plus @@ Plus @@ ((qrm - rm)^2)) // Expand;
then
FindMinimum[%, {q0,1.},{q1,0.},{q2,1.},{q3,1.}]
(with arbitrary starting values) yields {q0,q1,q2,q3}:
-13
{3.7037 10 , {q0 -> 0.326096, q1 -> -0.0849531, q2 -> -0.190674,
q3 -> 0.922002}}
As a check, we substitute this answer back into the difference:
qrm-rm /. Last[%]
-7 -8 -7
{{-1.19421 10 , 4.37326 10 , 3.18153 10 },
-7 -8 -7
{3.01553 10 , -9.22842 10 , 1.46602 10 },
-7 -7 -7
{-1.09731 10 , -1.50041 10 , -3.12856 10 }}
Cheers,
Paul
_________________________________________________________________
Paul Abbott
Department of Physics Phone: +61-9-380-2734
The University of Western Australia Fax: +61-9-380-1014
Nedlands WA 6907 paul at physics.uwa.edu.au
AUSTRALIA http://www.pd.uwa.edu.au/Paul
_________________________________________________________________
==== [MESSAGE SEPARATOR] ====