[GiNaC-list] Question (Thanks)
Javier Ros Ganuza
jros at unavarra.es
Sat Jun 18 16:38:14 CEST 2005
Thanks to all for your interesting answers, I'm digging now into
Vladimir answer. So I'll come back when I undertand it.
On Fri, 2005-06-17 at 10:10 +0100, Vladimir V. Kisil wrote:
> >>>>> "JRG" == Javier Ros Ganuza <jros at unavarra.es> writes:
> JRG> I want to do algebra with cartesian (3x1) "vectors". Cartesian
> JRG> "vector"s are to be represented by a 3x1 Ginac vector (3-tuple)
> JRG> and a reference to a basis that tell us in which base the
> JRG> components have physical sense.
> Extension of GiNaC classes is not very difficult and you may implement
> from scratch.
> However it may be better to do this through the Clifford algebras in
> GiNaC. There are many references (e.g. books of Hestenes) on doing
> geometry with Clifford algebras.
> JRG> for example (in my particular jargon):
> JRG> vector1.expresion=matrix(3,1,lst(a1,b1,c1));
> JRG> vector1.basis=basis_k;
> JRG> vector2.expresion=matrix(3,1,lst(a2,b2,c2));
> JRG> vector1.basis=basis_l;
> This can be implemented as follows:
> varidx nu(symbol("nu", "\\nu"), 3), mu(symbol("mu", "\\mu"), 3);
> xi(symbol("xi", "\\xi"), 3), rho(symbol("rho", "\\rho"),3);
> basis1 = clifford_unit(mu, diag_matrix(lst(1, 1, 1)));
> basis2 = clifford_unit(nu, diag_matrix(lst(1, 1, 1)));
> vector1 = lst_to_clifford(lst(a1,b1,c1), xi, basis1);
> vector2 = lst_to_clifford(lst(a1,b1,c1), rho, basis2);
> Then the expression
> JRG> result=2*vector1+vector2;
> will be well defined and behave as expected even without reduction to
> the single basis. The reduction is needed only if someone try to
> extract its components in either basis1, basis2, or even another
> basis3. To this end values of all products like basis1[i]*basis2[j]
> (i.e. transition matrix) should be defined.
> Best wishes,
More information about the GiNaC-list