Thank you very much for the quick reply and the code! I will start to play 
around with the new code.

> Multivectors do not inherit from sympy symbols so solve does not work.
How hard would it be to implement this? Is it only a (possibly difficult, 
time consuming) programming exercise or is there a fundamental reason why 
this is hard to do for GA equations? How well do the solve routines deal 
with noncommutative symbols, for instance?

Regarding division, I suppose it wouldn't be too hard to implement division 
for blades and simply check if the squared norm is zero before dividing by 
it.

Regarding speed improvements for orthogonal bases: is there any improvement 
for 'almost orthogonal' bases, such as the CGA diag(1,1,1,1,-1) basis?

How would you rate the new version of the software in terms of stability 
and correctness?

Best,
tsc

On Sunday, March 3, 2013 5:10:53 PM UTC+1, brombo wrote:
>
>  On 03/03/2013 08:07 AM, tsc wrote:
>  
> I've just found the sympy GA module, and I must say it looks really neat! 
> I'd like to use it for automatic differentiation and equation solving in 
> high-dimensional conformal geometric algebra. While experimenting with the 
> module, I've run into a few problems though. I'm not familiar with sympy 
> internals, so before I dive into the source of this module to fix things, 
> I'd like to see if anyone can tell me if these are really bugs or if I'm 
> misunderstanding something. 
>
>  All examples below are run in isympy, just pulled from github. I 
> initialized with:
> from sympy.galgebra.GA import *
>  e1,e2,e3= MV.setup('e1 e2 e3', '1 0 0, 0 1 0, 0 0 1')
>
>  
>    1. Division:
>    
>    When I perform e1 / e1, I get an error: "TypeError: unsupported 
>    operand type(s) for /: 'MV' and 'MV'". Is this not implemented? For 
>    non-null vectors (i.e. x >> x != 0), the inverse is x / (x >> x). The 
>    inverse of a product of invertible vectors is just the reverse product of 
>    the inverses. For an invertible blade A, this reduces to A / (A >> A).  
>    2. Solving equations:
>    
>    I tried to solve some basic equations, e.g.
>    >> solve( (x - e1) * e2, x)
>    _1*e1e2/e2
>    
>    This is correct, but strangely it involves division which doesn't 
>    appear to work when typed into the terminal. Other examples that act 
>    strange:
>    >> solve( (x - e1) >> e2, x)
>    []
>    >> solve( (x - e1) | e2, x)
>    [0]
>    
>    Even though | and >> should both implement contraction. 
>    3. Efficiency:
>    I tried MV.setup on some high-dimensional algebras, and noticed that 
>    it takes very long to initialize beyond n=8. The multivector basis is 2^n, 
>    so a slowdown is to be expected, but 2^8 = 256, which seems a bit low. 
>    Would it be possible to speed up the implementation, e.g. using 
>    bitarray <https://pypi.python.org/pypi/bitarray> to represent the 
>    presence or absence of a multivector basis element, and compute products 
>    using a combination of scalar multiplication on numpy arrays and bitwise 
>    operations on bitarrays? 
>    4. Notation for outer product and powers:
>    I find the notation '**' for the wedge product confusing. Consider 
>    typing this into a terminal:
>    >> e1*e1
>    e1**2
>    >> e1**2
>    2*e1
>    
>    Why is the result of e1*e1 (e1 squared) written in the usual python 
>    exponentiation notation e1**2, while at the same time we cannot use that 
>    notation to perform exponentiation? I think it would be best to use ** for 
>    exponentiation, since that is the python standard. We can use ^ for the 
>    wedge, which is visually most natural anyway. 
>    5. Contraction with scalar doesn't work.
>    When I compute e1 >> 2, or any other contraction with a scalar, I get 
>    None. The correct results is 0 when a (multi)vector is contracted onto a 
>    scalar. When a scalar is contracted onto a multivector, the result should 
>    be the same as scalar multiplication. 
>
>  
>  If I can make it all work I might be interested in implementing a module 
> for conformal GA, and one for linking sympy to GAViewer. The latter would 
> make it possible to visualize results from symbolic computations in a 3D 
> viewer.
>
>  Thanks in advance for any help!
>
>  -- 
> You received this message because you are subscribed to the Google Groups 
> "sympy" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected] <javascript:>.
> To post to this group, send email to [email protected] <javascript:>.
> Visit this group at http://groups.google.com/group/sympy?hl=en.
> For more options, visit https://groups.google.com/groups/opt_out.
>  
>  
>
> I forgot to mention that the attached file in the previous response is 
> named GA.bip but is really GA.zip.  I was renamed so that certain mail 
> programs would not reject the attachment.
>  

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sympy?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to