Digi Area Group - Math Tools for Professionals
   Maple and Mathematica packages - math tools for professionals

atlas™ - modern differential geometry for Maple™

> Features List & Examples
> Template Worksheets
> Screenshots
> Documentation & Downloads
> License & Pricing
> Buy Online

 
 
 
 
Google

Features List & Examples  |  Introduction  |  Dimension  |  Indexing  |  Forms  |  Metric  |  atlasWizard - Maplet™

atlas[ToBasis] - To basis decomposition

Calling Sequence:

     ToBasis(T)

Parameters:

      T - variable or expression of tensor type

Description:

The ToBasis procedure decomposes a tensor into basis. No decomposition is available if coframe and frame have not been defined before.

Examples:
restart:
with(atlas):

Declare forms:
Forms(e[j]=1,xi=1,phi=1);

{xi, phi, e[j]}

Declare vectors:
Vectors(X,Y,Z,E[j]);

{E[j], X, Y, Z}

One can not make the decomposition before coframe declaration:
ToBasis(X);

X

Declare coframe:
Coframe(e[j],j=1..n);

{e[j]}[j = 1 .. n]

Declare frame:
Frame(E[k]);

{E[k]}[k = 1 .. n]

"To basis" decomposition
X=ToBasis(X);

X = Sum(iota[X](e[l[1]])*E[l[1]],l[1] = 1 .. n)

xi=ToBasis(xi);

xi = Sum(iota[E[l[1]]](xi)*e[l[1]],l[1] = 1 .. n)

X&.xi=ToBasis(X&.xi);

`&.`(X,xi) = Sum(iota[E[l[2]]](xi)*Sum(iota[X](e[l[1]])*`&.`(E[l[1]],e[l[2]]),l[1] = 1 .. n),l[2] = 1 .. n)

Functions declaration xi[i] = xi[i](x[k]):
Functions(xi[i]=xi[i](x[k]));

{xi[i]}

New cofame declaration:
Coframe(e[j]=xi[j]*d(x[j]),j=1..3);


Warning, You have to restart the Coframe procedure and then Frame procedure!



Coframe(e[j]=xi[j]*d(x[j]),j=1..3);

[e[1] = xi[1]*d(x[1]), e[2] = xi[2]*d(x[2]), e[3] = xi[3]*d(x[3])]

'd(xi[i])'=d(xi[i]);

d(xi[i]) = Diff(xi[i],x[k])*(delta[1,k]/xi[1]*e[1]+delta[2,k]/xi[2]*e[2]+delta[3,k]/xi[3]*e[3])

'd(x[k])'=d(x[k]);

d(x[k]) = delta[1,k]/xi[1]*e[1]+delta[2,k]/xi[2]*e[2]+delta[3,k]/xi[3]*e[3]

'd(e[3])'=d(e[3]);

d(e[3]) = -Diff(xi[3],x[k])/xi[3]*`&^`(e[3],d(x[k]))

Declare frame:
Frame(E[k]);

[E[1] = 1/xi[1]*Diff(``,x[1]), E[2] = 1/xi[2]*Diff(``,x[2]), E[3] = 1/xi[3]*Diff(``,x[3])]

"To basis" decomposition
X=ToBasis(X);

X = iota[X](e[1])*E[1]+iota[X](e[2])*E[2]+iota[X](e[3])*E[3]

Note that   xi[i] = xi[i](x[k])  are functions but xi  is 1-form:
xi=ToBasis(xi);

xi = iota[E[1]](xi)*e[1]+iota[E[2]](xi)*e[2]+iota[E[3]](xi)*e[3]

X&.xi=ToBasis(X&.xi);

`&.`(X,xi) = iota[X](e[1])*iota[E[1]](xi)*`&.`(E[1],e[1])+iota[X](e[1])*iota[E[2]](xi)*`&.`(E[1],e[2])+iota[X](e[1])*iota[E[3]](xi)*`&.`(E[1],e[3])+iota[X](e[2])*iota[E[1]](xi)*`&.`(E[2],e[1])+iota[X](...
`&.`(X,xi) = iota[X](e[1])*iota[E[1]](xi)*`&.`(E[1],e[1])+iota[X](e[1])*iota[E[2]](xi)*`&.`(E[1],e[2])+iota[X](e[1])*iota[E[3]](xi)*`&.`(E[1],e[3])+iota[X](e[2])*iota[E[1]](xi)*`&.`(E[2],e[1])+iota[X](...
`&.`(X,xi) = iota[X](e[1])*iota[E[1]](xi)*`&.`(E[1],e[1])+iota[X](e[1])*iota[E[2]](xi)*`&.`(E[1],e[2])+iota[X](e[1])*iota[E[3]](xi)*`&.`(E[1],e[3])+iota[X](e[2])*iota[E[1]](xi)*`&.`(E[2],e[1])+iota[X](...

xi&.xi=ToBasis(xi&.xi);

`&.`(xi,xi) = iota[E[1]](xi)^2*`&.`(e[1],e[1])+iota[E[1]](xi)*iota[E[2]](xi)*`&.`(e[1],e[2])+iota[E[1]](xi)*iota[E[3]](xi)*`&.`(e[1],e[3])+iota[E[1]](xi)*iota[E[2]](xi)*`&.`(e[2],e[1])+iota[E[2]](xi)^2...
`&.`(xi,xi) = iota[E[1]](xi)^2*`&.`(e[1],e[1])+iota[E[1]](xi)*iota[E[2]](xi)*`&.`(e[1],e[2])+iota[E[1]](xi)*iota[E[3]](xi)*`&.`(e[1],e[3])+iota[E[1]](xi)*iota[E[2]](xi)*`&.`(e[2],e[1])+iota[E[2]](xi)^2...
`&.`(xi,xi) = iota[E[1]](xi)^2*`&.`(e[1],e[1])+iota[E[1]](xi)*iota[E[2]](xi)*`&.`(e[1],e[2])+iota[E[1]](xi)*iota[E[3]](xi)*`&.`(e[1],e[3])+iota[E[1]](xi)*iota[E[2]](xi)*`&.`(e[2],e[1])+iota[E[2]](xi)^2...

&@(x)=ToBasis(&@(x));

Diff(``,x) = iota[Diff(``,x)](e[1])*E[1]+iota[Diff(``,x)](e[2])*E[2]+iota[Diff(``,x)](e[3])*E[3]

&@(x[1])=ToBasis(&@(x[1]));

Diff(``,x[1]) = E[1]*xi[1]

See Also:

atlas , atlas[Coframe] , atlas[Frame] .