Ask Your Question

Exponential in Clifford algebra

asked 2021-11-12 14:41:07 +0200

anon2203 gravatar image

updated 2021-11-12 15:03:01 +0200

Hello, I am trying to take the exponential of A+B*i in Clifford algebra (isomorphic to the complex numbers) .

Code is:

sage: R.<A,B> = PolynomialRing(ZZ);
sage: Q = QuadraticForm(R,1,[-1]);
sage: Cl.<i> = CliffordAlgebra(Q);
sage: exp(A+B*i)*exp(A-B*i)

I would expect it to output exp(2*A), but it produces this error:

TypeError: cannot coerce arguments: no canonical coercion from The Clifford algebra of the Quadratic form in 1 variables over Multivariate Polynomial Ring in A, B over Integer Ring with coefficients: 
[ 1 ] to Symbolic Ring
edit retag flag offensive close merge delete



What do you expect as a result? Is it a polynomial in A, B, i?

Max Alekseyev gravatar imageMax Alekseyev ( 2021-11-12 14:49:58 +0200 )edit

@MaxAlekseyez Good question. What I want, really, is for this exp(A+B*i)*exp(A-B*i) to give exp(2*A) (I've edited the question).

anon2203 gravatar imageanon2203 ( 2021-11-12 14:56:33 +0200 )edit

There are no such things in the polynomial ring.

Max Alekseyev gravatar imageMax Alekseyev ( 2021-11-12 14:57:32 +0200 )edit

@MaxAlekseyez Well, I just want A and B to be symbolic variables. In my mind A and B are elements of the reals. Using polynomial ring was suggested by a colleague on this site to make A and B work as symbolic variables in Clifford algebras. I am willing to look at other things. Specifically I would like to set up a Clifford algebra, such that both (A+B*i)*(A-B*i)=A^2+B^2 and exp(A+B*i)*exp(A-B*i)=exp(2*A) are realized. I don't mind playing around with the definitions of the setup of the algebra to make this possible.

anon2203 gravatar imageanon2203 ( 2021-11-12 15:06:00 +0200 )edit

You can define A and B as symbolic variables, and exp(2A) would be a legitimate object, however exp(B*i) would still not make sense as exponentiation of the generator of the Clifford algebra is not defined.

Max Alekseyev gravatar imageMax Alekseyev ( 2021-11-12 16:29:32 +0200 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2021-11-12 17:37:32 +0200

Max Alekseyev gravatar image

As I pointed out in the comments, the issue is that exponentiation is defined neither in the polynomial ring, nor for the algebra generators. While the first issue can be alleviated by switching to symbolic variables A and B, the second issue is more trickier. A possible approach here can be introducing a symbolic variable E for exp(i) and defining our own exponentiation function:

A,B,E = var('A B E')
def myexp(x):
    return prod(E^c if t else exp(c) for t,c in x)

Q = QuadraticForm(SR,1,[-1]);
Cl.<i> = CliffordAlgebra(Q);


This gives e^(2*A) as expected.

edit flag offensive delete link more


Can you explain what c and t means in the function, and what for t,c in x do, with respect to x=A+B*i?

anon2203 gravatar imageanon2203 ( 2021-11-13 01:02:05 +0200 )edit

c are coefficients (depending on A and B) and t are terms (either () for scalar or (1,) for i). Just run for t,c in A+B*i: print(t,c) and you'll see.

Max Alekseyev gravatar imageMax Alekseyev ( 2021-11-13 02:53:52 +0200 )edit

"Just run for t,c in A+B*i: print(t,c) and you'll see." Oh that's fancy.. I'm gonna like this software :)

anon2203 gravatar imageanon2203 ( 2021-11-13 16:52:16 +0200 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower


Asked: 2021-11-12 14:41:07 +0200

Seen: 408 times

Last updated: Nov 12 '21