Is there an error in the Maple 13 'tensor' package algorithm?

  • Context: Maple 
  • Thread starter Thread starter Orion1
  • Start date Start date
  • Tags Tags
    Maple Tensor
Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
3 replies · 7K views
Orion1
Messages
961
Reaction score
3

I attempted to use the Maple 13 'tensor' package to solve the [itex]G_{rr}[/tex] component of the Einstein_tensor for a General Relativity generic metric for which the solution is already known.<br /> <br /> General Relativity generic metric: (reference 2 - eq. 1)<br /> [tex]c^{2} d\tau^{2} = e^{\nu(r)} dt^{2} - e^{\lambda(r)} dr^{2} - r^2 d\theta^{2} - r^2 \sin^2 \theta d\phi^2[/tex]<br /> <br /> I used the exact same source code listed in the Maple 13 software help index and reference 1, except the definitions of the [tex]g_{11}[/tex] and [tex]g_{22}[/tex] matrix elements.<br /> <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code"> <div class="bbCodeBlock-title"> <i class="fa--xf fal fa-code "><svg xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true" ><use href="/data/local/icons/light.svg?v=1783977786#code"></use></svg></i> Code: </div> <div class="bbCodeBlock-content" dir="ltr"> <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>> with(tensor); coord := [t, r, th, ph]; g_compts := array(symmetric, sparse, 1 .. 4, 1 .. 4); g_compts[1, 1] := exp(nu(r)); g_compts[2, 2] := -exp(lambda(r)); g_compts[3, 3] := -r^2; g_compts[4, 4] := -r^2*sin(th)^2; g := create([-1, -1], eval(g_compts)); ginv := invert(g, 'detg'); D1g := d1metric(g, coord); D2g := d2metric(D1g, coord); Cf1 := Christoffel1(D1g); RMN := Riemann(ginv, D2g, Cf1); RICCI := Ricci(ginv, RMN); RS := Ricciscalar(ginv, RICCI); Estn := Einstein(g, RICCI, RS)</code></pre> </div> </div><br /> The Maple 13 'tensor' package generated this solution for the [itex]G_{rr}[/itex] component:<br /> [tex]G_{rr} = \frac{- r \nu'(r) + e^{\lambda(r)} - 1}{r^2}[/tex]<br /> <br /> However, the correct solution is: (reference 2 - eq. 4) <br /> [tex]G_{rr} = \frac{e^{-\lambda(r)} (-r \nu'(r) + e^{\lambda(r)} - 1)}{r^2}[/tex]<br /> <br /> Can anyone here identify any algorithmic error in my source code?<br /> [/Color]<br /> Reference:<br /> <a href="http://www.maplesoft.com/support/help/AddOns/view.aspx?path=tensor/Einstein"" target="_blank" class="link link--external" rel="nofollow ugc noopener">http://www.maplesoft.com/support/help/AddOns/view.aspx?path=tensor/Einstein"</a><br /> "www.new.dli.ernet.in/rawdataupload/upload/insa/INSA_2/20005a87_195.pdf"[/URL][/itex]
 
Last edited by a moderator:
on Phys.org
Mathematica Einsteintensor package...


Schwarzschild metric: (reference 2 - eq. 1)
[tex]c^{2} d\tau^{2} = e^{\nu(r)} dt^{2} - e^{\lambda(r)} dr^{2} - r^2 d\theta^{2} - r^2 \sin^2 \theta d\phi^2[/tex]

Mathematica 'Einsteintensor' package source code:
Code:
ToFileName[{$TopDirectory, "AddOns", "Applications"}]
<< einsteintensor.m
x = {t, r, \[Theta], \[Phi]}
(metric = {{\[ExponentialE]^\[Nu][r]*c^2, 0, 0, 
     0}, {0, -\[ExponentialE]^\[Lambda][r], 0, 0}, {0, 0, -r^2, 
     0}, {0, 0, 0, -r^2*Sin[\[Theta]]^2}}) // MatrixForm
Simplify[(Einstein = 
    Inverse[metric].Simplify[EinsteinTensor[metric, x]]) // 
  MatrixForm]

Mathematica 6 'Einsteintensorr' package generated this solution for the [itex]G_{11}[/itex] component:
[tex]G_{11} = \frac{e^{-\lambda} (-r \nu' + e^{\lambda} - 1)}{r^2}[/tex]

According to reference 2 - eq. 4, the solution solution for the [itex]G_{11}[/itex] component:
[tex]G_{11} = \frac{e^{-\lambda} (r \nu' - e^{\lambda} + 1)}{r^2}[/tex]

Which package is generating the correct solution?
[/Color]
Reference:
http://library.wolfram.com/infocenter/MathSource/162/"
http://www.new.dli.ernet.in/rawdataupload/upload/insa/INSA_2/20005a87_195.pdf"
 
Last edited by a moderator:
Mathematica 6 Einstein Tensor package...



Code:
(* Package written by 
      Pekka Janhunen
      Finnish Meteorological Institute
      Geophysics Dept. *)

BeginPackage["EinsteinTensor`"]

EinsteinTensor::usage = "EinsteinTensor[g,x] with g a nxn-matrix
  (the metric with lower indices) and x n-vector (the coordinates)
  gives the Einstein tensor (a nxn-matrix) with lower indices."

Begin["`Private`"]

EinsteinTensor[metric_,x_]:=
  Block[ {Dim,Metric, PreChristoffel, Christoffel, Riemann,
          PreRiemann, Ricci, CurvatureScalar,
          sigma, mu, nu, alpha, beta, gamma},
          Dim = Length[x];
          Metric = Simplify[Inverse[metric]];
            (* Metric with upper indices *)
          PreChristoffel =
            Table[ D[metric[[gamma,alpha]],x[[beta]]]
                 + D[metric[[beta,gamma]],x[[alpha]]]
           		    - D[metric[[alpha,beta]],x[[gamma]]],
           	   	 {gamma,Dim}, {alpha,Dim}, {beta,Dim} ];
           	 (* The "lower index part" of Christoffel symbols *)
          PreChristoffel = Simplify[PreChristoffel];
          Christoffel = (1/2) Metric . PreChristoffel;
             (* The full Christoffel symbols *)
          Christoffel = Simplify[Christoffel];
          PreRiemann = 
             Table[ D[Christoffel[[sigma,alpha,nu]],x[[mu]]]
                    + Sum[Christoffel[[gamma,alpha,nu]]
                            Christoffel[[sigma,gamma,mu]],
                          {gamma,Dim} ],
                    {sigma,Dim}, {alpha,Dim}, {mu,Dim}, {nu,Dim} ];
           	(* PreRiemann has to be antisymmetrized to yield
           	   Riemann tensor: *)
          Riemann = Table[ PreRiemann[[sigma,alpha,mu,nu]]
                         - PreRiemann[[sigma,alpha,nu,mu]],
                           {sigma,Dim}, {alpha,Dim},
                           {mu,Dim}, {nu,Dim} ];
          Ricci = Table[ Sum[Riemann[[sigma,alpha,sigma,beta]],
                             {sigma,Dim}],
                         {alpha,Dim}, {beta,Dim} ];
          CurvatureScalar = Sum[ Metric[[alpha,beta]]
                                 Ricci[[alpha,beta]],
                                 {alpha,Dim}, {beta,Dim} ];
          (* Return Einstein tensor: *)
          Ricci - (1/2) CurvatureScalar metric ]

End[]

EndPackage[]

Print[{EinsteinTensor}]
The output appears to be in the form:
[tex]G^i_j[/tex]

[tex]G^1_1 = g^{1i}G_{1i} = g^{11}G_{11}[/tex]

The Mathematica 6 'Einstein Tensor' package generated this solution for the [itex]G^i_j[/itex] component:
[tex]G^1_1} = \frac{e^{-\lambda} (-r \nu' + e^{\lambda} - 1)}{r^2}[/tex]

The correct [itex]G^1_1[/itex] component is:
[tex]G^1_1} = - \frac{e^{- \lambda} (-r {\nu}' + e^{\lambda} - 1)}{r^2}[/tex]
[/Color]
Reference:
http://library.wolfram.com/infocenter/MathSource/162/"
 
Last edited by a moderator:

Mathematica Ricci tensor:
[tex]R_{ab} = R^c_{acb}[/tex]

Maple Ricci tensor:
[tex]R_{ac} = R^b_{acb}[/tex]

Package criteria:
[tex]R^{Mathematica} = -R^{Maple}[/tex]

[tex]G^{Mathematica}_{ij} = - G^{Maple}_{ij}[/tex]

The different signs are due to the use of different Ricci tensors.

Mathematica generated output:
[tex]G^1_1 = g^{1i}G_{1i}=g^{11}G_{11} = -e^{-\lambda}\frac{ r{\nu}' - e^{\lambda} + 1}{r^2} = \frac{e^{-\lambda} (-r{\nu}'+ e^{\lambda} - 1)}{r^2}[/tex]

Maple generated output:
[tex]G_{11} = \frac{- r \nu' + e^{\lambda} - 1}{r^2}[/tex]
[/Color]