Alan Bromborsky wrote:
> Vinzent Steinberg wrote:
>    
>> On 1 déc, 21:28, Scott<scotta_2...@yahoo.com>   wrote:
>>
>>      
>>> Is there a sympy function for making symbolic tensors?
>>> Basically I want to treat 3x3 rotation tensor symbol that is constant
>>> inside of an integral while preserving the tensor algebra (A*B .ne.
>>> B*A).  The 3x3 rotain tensor is multiplied by a 3x1 position tenosr
>>> which is integrated.
>>>
>>>    Is there a built in function for converting a 3*1  tensor to a skew
>>> antisymetric cross product matrix then back again?
>>> V/R
>>>
>>> Scott
>>>
>>>        
>> This is one of our oldest issues: 
>> http://code.google.com/p/sympy/issues/detail?id=16
>>
>> You may have a look at the geometric algebra module, but there are no
>> tensors in sympy yet.
>>
>> Vinzent
>>
>> --
>>
>> You received this message because you are subscribed to the Google Groups 
>> "sympy" group.
>> To post to this group, send email to sy...@googlegroups.com.
>> To unsubscribe from this group, send email to 
>> sympy+unsubscr...@googlegroups.com.
>> For more options, visit this group at 
>> http://groups.google.com/group/sympy?hl=en.
>>
>>
>>
>>
>>      
> In geometric algebra rotations are done via rotors (spinors) as follows:
>
>       For a the rotation of a vector x around an axis u (|u| = 1) through
> an angle theta, the rotor is:
>
>           R = cos(theta)-I*u*sin(theta)
>
>       where I is the pseudo scalar (I=i*j*k if i, j, and k are orthogonal
> basis vectors and * the geometric product).
>       The components of I*u form a rank 2 antisymmetric tensor.  The
> reverse of R, rev(R) is:
>
>           rev(R) = cos(theta)+I*u*sin(theta)
>
>       The rotated x, x' is then:
>
>           x' = R*x*rev(R)
>
>       where again * is the geometric product.
>
>       What domain (path, area, or volume) do you want to integrate
> R*x*rev(R) over?
>
> --
>
> You received this message because you are subscribed to the Google Groups 
> "sympy" group.
> To post to this group, send email to sy...@googlegroups.com.
> To unsubscribe from this group, send email to 
> sympy+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/sympy?hl=en.
>
>
>
>    
Here is your example:

First the code -

#!/usr/bin/python

import sys
import os,sympy,time
from sympy.galgebra.GA import *
from sympy import cos,sin
set_main(sys.modules[__name__])

if __name__ == '__main__':

     make_symbols('a x y z')
     MV.setup('e',metric='[1,1,1]',coords=[x,y,z])
     MV.set_str_format(1)
     u = MV('u','vector')
     x = MV('x','vector')
     print u
     print x
     print MV.I*u
     R = cos(a)-MV.I*u*sin(a/2)
     Rrev = R.rev()
     print R
     print Rrev
     MV.set_str_format(2)
     rot_x = R*x*Rrev
     rot_x.simplify()
     print rot_x

Second the result -

u__x*e_x+u__y*e_y+u__z*e_z

x__x*e_x+x__y*e_y+x__z*e_z

u__z*e_xe_y-u__y*e_xe_z+u__x*e_ye_z

cos(a/2)-u__z*sin(a/2)*e_x^e_y+u__y*sin(a/2)*e_x^e_z-u__x*sin(a/2)*e_y^e_z

cos(a/2)+u__z*sin(a/2)*e_x^e_y-u__y*sin(a/2)*e_x^e_z+u__x*sin(a/2)*e_y^e_z

(-2*u__z*x__y*cos(a/2)*sin(a/2)+2*u__y*x__z*cos(a/2)*sin(a/2)+x__x*cos(a/2)**2+x__x*u__x**2*sin(a/2)**2-x__x*u__y**2*sin(a/2)**2-x__x*u__z**2*sin(a/2)**2+2*u__x*u__y*x__y*sin(a/2)**2+2*u__x*u__z*x__z*sin(a/2)**2)*e_x
+(-2*u__x*x__z*cos(a/2)*sin(a/2)+2*u__z*x__x*cos(a/2)*sin(a/2)+x__y*cos(a/2)**2+x__y*u__y**2*sin(a/2)**2-x__y*u__x**2*sin(a/2)**2-x__y*u__z**2*sin(a/2)**2+2*u__x*u__y*x__x*sin(a/2)**2+2*u__y*u__z*x__z*sin(a/2)**2)*e_y
+(-2*u__y*x__x*cos(a/2)*sin(a/2)+2*u__x*x__y*cos(a/2)*sin(a/2)+x__z*cos(a/2)**2+x__z*u__z**2*sin(a/2)**2-x__z*u__x**2*sin(a/2)**2-x__z*u__y**2*sin(a/2)**2+2*u__x*u__z*x__x*sin(a/2)**2+2*u__y*u__z*x__y*sin(a/2)**2)*e_z

In the previous post I forgot you had to use the half-angle!

--

You received this message because you are subscribed to the Google Groups 
"sympy" group.
To post to this group, send email to sy...@googlegroups.com.
To unsubscribe from this group, send email to 
sympy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sympy?hl=en.


Reply via email to