| atlas[dual] - dual operator Calling Sequence: dual(expr) Parameters: expr - any tensor expression. Description: - The dual procedure calculates the dual operator on an expression (just rise and lower indexes in local coordinates). The operator has the following properties.
- The dual operator is linear.
- For any vector field X in local coordinates we have:
. - For any 1-form
in local coordinates we have: . - For any tensor fields
and the following rule for dual operator takes place: .
Examples: restart: with(atlas): Declare constants: Constants(Lambda); 
Declare functions: Functions(f=f(x,y),h=h(z)); 
Declare p-forms: Forms(e[k]=1,xi=1); ![{xi, e[k]}](prod/atlas/help/images/dual9.gif)
Declare vectors: Vectors(E[j],X,Y,Z); ![{X, Y, Z, E[j]}](prod/atlas/help/images/dual10.gif)
Declare coframe: Coframe(e[1]=d(x),e[2]=d(y)); ![[e[1] = d(x), e[2] = d(y)]](prod/atlas/help/images/dual11.gif)
Declare frame: Frame(E[k]); ![[E[1] = Diff(``,x), E[2] = Diff(``,y)]](prod/atlas/help/images/dual12.gif)
Declare metric: Metric(g=4*(d(x)&.d(x)+d(y)&.d(y))/(1+Lambda*(x^2+y^2))^2); ![g = 4*(`&.`(e[1],e[1])+`&.`(e[2],e[2]))/(1+Lambda*(x^2+y^2))^2](prod/atlas/help/images/dual13.gif)
Using dual - procedure: For frame vectors: 'dual(E[j])'=dual(E[j]); ![dual(E[j]) = 4*delta[1,j]/(1+Lambda*(x^2+y^2))^2*e[1]+4*delta[2,j]/(1+Lambda*(x^2+y^2))^2*e[2]](prod/atlas/help/images/dual14.gif)
For coframe 1-forms: 'dual(e[j])'=dual(e[j]); ![dual(e[j]) = 1/4*delta[1,j]*(1+Lambda*x^2+Lambda*y^2)^2*E[1]+1/4*delta[2,j]*(1+Lambda*x^2+Lambda*y^2)^2*E[2]](prod/atlas/help/images/dual15.gif)
For exact 1-form: 'dual(d(f))'=dual(d(f)); ![dual(d(f)) = 1/4*Diff(f,x)*(1+Lambda*x^2+Lambda*y^2)^2*E[1]+1/4*Diff(f,y)*(1+Lambda*x^2+Lambda*y^2)^2*E[2]](prod/atlas/help/images/dual16.gif)
With ToBasis procedure: dual(X)=dual(ToBasis(X)); /(1+Lambda*(x^2+y^2))^2*e[1]+4*iota[X](e[2])/(1+Lambda*(x^2+y^2))^2*e[2]](prod/atlas/help/images/dual17.gif)
For 1-form: dual(xi)=dual(ToBasis(xi)); ![dual(xi) = 1/4*iota[E[1]](xi)*(1+Lambda*x^2+Lambda*y^2)^2*E[1]+1/4*iota[E[2]](xi)*(1+Lambda*x^2+Lambda*y^2)^2*E[2]](prod/atlas/help/images/dual18.gif)
For [1,1] tensor: 'dual(&.(E[i],e[j]))'=dual(&.(E[i],e[j])); ![dual(`&.`(E[i],e[j])) = delta[1,i]*delta[1,j]*`&.`(e[1],E[1])+delta[1,i]*delta[2,j]*`&.`(e[1],E[2])+delta[2,i]*delta[1,j]*`&.`(e[2],E[1])+delta[2,i]*delta[2,j]*`&.`(e[2],E[2])](prod/atlas/help/images/dual20.gif)
For metric tensor: 'dual(g)'=simplify(dual(g)); ![dual(g) = 1/4*(1+Lambda*x^2+Lambda*y^2)^2*(`&.`(E[1],E[1])+`&.`(E[2],E[2]))](prod/atlas/help/images/dual21.gif)
See Also: atlas , atlas[d] , atlas[cov] , atlas[`&.`] , atlas[`&^`] , atlas[iota] . |