Hi Alan!

On Wed, Dec 2, 2009 at 3:48 PM, Alan Bromborsky <abro...@verizon.net> wrote:
> 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!


thanks for this, I am always intrigued how well you handle the
geometric algebra and that you are able to handle all problems that
people (including myself) raise with tensors. It's really cool, I am
glad we have it in sympy.

Ondrej

--

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