Re: Quaternion problem-> visualization
- To: mathgroup at smc.vnet.net
- Subject: [mg67471] Re: Quaternion problem-> visualization
- From: Roger Bagula <rlbagula at sbcglobal.net>
- Date: Tue, 27 Jun 2006 03:14:42 -0400 (EDT)
- References: <e7ap5q$952$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Staffan Langin wrote: >Hello, > >I'm a total Mathematica newbee so please bear with me :-). I'm trying to let >Mathematica analytically evaluate a second order derivative for me. The >function has several parameters with some of them being of >"Quaternion-type". I want to instruct Mathematica that the commutative rule >doesn't apply when evaluation the function. Is that possible? Thanks in >advance. > >Staffan Langin > > > Apparently ther is a reason a Clifford Torus has the name Clifford attached! If you take the two complex plane circles: z1=Cos[t]+I*Sin[t] z2=Cos[p]+I*Sin[p] and form : q=z1+J*z2 You get: Quaternion[Cos[t],Sin[t],Cos[p],Sin[p]] The visualization in 3d is: Clear[x1, y1, z1] w = Sqrt[2] - Sin[p] x1 = 2*Cos[t]/w y1 = 2*Sin[t]/w z1 = 2*Cos[p]/w g1 = ParametricPlot3D[{x1, y1, z1}, {p, 0.001, 2*Pi - 0.001}, {t, 0, 2*Pi}, PlotPoints -> {40, 40}, Axes -> False, Boxed -> False, PlotRange -> All] Show[g1, ViewPoint -> {-3.370, -0.295, -0.076}] Show[g1, ViewPoint -> {0.002, 0.045, 3.383}] Show[g1, ViewPoint -> {0.209, 3.361, 0.329}] The really good thing is that the double derivative in two variables comes out as the negative of the original quaternion ( it's a special case): << Algebra`Quaternions` i = {{0, 1}, {-1, 0}}; j = {{0, I}, {I, 0}}; k = {{I, 0}, {0, -I}}; e = IdentityMatrix[2]; q[t_, x_, y_, z_] := e*t + x*i + j*y + k*z; (* Clifford torus quaternion*) qc = q[Cos[t], Sin[t], Cos[p], Sin[p]] qcs = q[Cos[t], -Sin[t], -Cos[p], -Sin[p]] FullSimplify[ExpandAll[qc.qcs]] dqt = D[qc, {p, 2}] dqp = D[qc, {t, 2}] q2_out = Quaternion[Re[dqt[[1, 1]]], Re[dqt[[1, 2]]], Re[dqt[[1, 2]]], Im[dqt[[1, 1]]]] + Quaternion[Re[dqp[[1, 1]]], Re[dqp[[ 1, 2]]], Re[dqp[[1, 2]]], Im[dqp[[1, 1]]]] (* if the angles are all real*) -dqt - dqp == qc True