ecterrab

13633 Reputation

24 Badges

18 years, 320 days

MaplePrimes Activity


These are answers submitted by ecterrab

Looking closer, the simplification works fine. You say that "equation (16) should correspond to equation (14)" and that is indeed the case. One way to verify that is to take the difference (16) (14) and perform the summation over all the repeated indices:

Vacuum_Solutions_reviewed.mw

Edgardo S. Cheb-Terrab
Physics, Maplesoft

Hi Mac,
There is no addBasis command, the three coordinate systems with which the Physics :-Vectors package works are fixed, as explained in ?Physics,Vectors : [x, y, z], [rho, phi, z], [r, theta, phi]. I do have in mind implementing arbitrary basis, but it is not high in the list of priorities, mainly because these three systems of coordinates cover most applications & textbooks, swapping two coordinates in the basis definition does not really change the geometry (the existing system is mostly as good for that purpose), and there are various other things - new functionality - that look more relevant or having higher positive impact if implemented.

Regarding Physics being open: it is as open as any other Maple program. You can see the routines and change them if you want. More important: Physics (starting with Maple 17) comes with a library of more than 100 dedicated-physics-programming commands, plus approx 70 physics-dedicated-types, basically all the routines used to write Physics, that allow you to extend the package in different ways if you are willing to program. Various of these "programming" routines are also useful at interactive level. Details are in the help page (available online) ?Physics,Library

But you need to update your Maple, Mac. Have in mind that the Physics package duplicated its size for Maple 16, then again for Maple 17, and mostly one more time for Maple 18, not to mention that by now more than 40 updates were posted in the Maplesoft R&D Physics webpage after Maple 18 got released.

Edgardo S. Cheb-Terrab
Physics, Maplesoft

Hi Mac,

The problem in old maples is that assuming replaces the cartesian coordiante x with a local one and then the Nabla operator in Physics differentiates as in diff(local_x, global_x) = 0. This has been fixed in previous Maples - it works fine in Maple 18, and also in Maple 17 + the Physics update. This is what I receive in Maple 18:

 

"Maple Initialization loaded..."

(1)

restart:with(Physics[Vectors]);
Setup(mathematicalnotation = true);

[`&x`, `+`, `.`, ChangeBasis, Component, Curl, DirectionalDiff, Divergence, Gradient, Identify, Laplacian, Nabla, Norm, Setup, diff]

 

[mathematicalnotation = true]

(2)

# Maxwell's eqn
M4 := `&x`(Nabla, B1_(x, y, z, t)) = mu*epsilon*(diff(E1_(x, y, z, t), t));

Physics:-Vectors:-Curl(B1_(x, y, z, t)) = mu*epsilon*(diff(E1_(x, y, z, t), t))

(3)

eval(subs(B1_(x,y,z,t)=Bxx(x,y,z,t)*_i+Bzz(x,y,z,t)*_k,M4));

(diff(Bzz(x, y, z, t), y))*_i+(diff(Bxx(x, y, z, t), z)-(diff(Bzz(x, y, z, t), x)))*_j-(diff(Bxx(x, y, z, t), y))*_k = mu*epsilon*(diff(E1_(x, y, z, t), t))

(4)

eval(subs(B1_(x,y,z,t)=Bxx(x,y,z,t)*_i+Bzz(x,y,z,t)*_k,M4)) assuming real;

(diff(Bzz(x, y, z, t), y))*_i+(diff(Bxx(x, y, z, t), z)-(diff(Bzz(x, y, z, t), x)))*_j-(diff(Bxx(x, y, z, t), y))*_k = mu*epsilon*(diff(E1_(x, y, z, t), t))

(5)

The above is in Maple 18, but you can reproduce it in Maple 17 as well including the update of Physics available on the Maplesoft R&D Physics webpage.

 

In brief: you need to update your Maple.

 

NULL

 

Download Maxwell_testMaple18.mw

Edgardo S. Cheb-Terrab
Physics, Maplesoft

Hi

I am not sure I understand your problem, but if what you want is to solve 

ee := A*cos(x)+R*i*sin(x) = B*exp(-x)+C*exp(x);

For A, B, C, R independent of x, and such that ee is true for arbitrary values of x, as far as I can tell the problem has no solution but for the trivial solution. The command in Maple that performs this computation is PDEtools:-Solve. Check its help page for details. The input/output for your example is as follows:

PDEtools:-Solve(ee, {A, B, C, R}, independentof = x);

                                                  {A = 0, B = 0, C = 0, R = 0}


Edgardo S. Cheb-Terrab
Physics, Differential Equations and Mathematical Functions, Maplesoft

@John Fredsted 

We included the fix to this problem in the latest update for Maple 17, that also includes all the changes in the package till March 18 2014, and with this we close the updates for Maple 17. This update is available for download as usuai on the Maplesoft R&D Physics webpage (note that there are two links: one for the ongoing updates in Maple 18, these do not work in Maple 17, and another link, Physics-61.3.mla.zip, with the latest update for Maple 17).

Edgardo S. Cheb-Terrab
Physics, Differential Equations and Mathematical Functions, Maplesoft.

@Carl Love 
I see, you are correct Carl, and yes, the MeijerG function of two arguments (not talking about its list of parameters) does not exist as such in Maple. It is however easy to translate in some cases, for example in the one posted:

MeijerG[{{0, 1/2}, {}}, {{0, 1}, {-1, -1}}, 10, 1/2] = MeijerG[{{0, 1/2}, {}}, {{0, 1}, {-1, -1}}, 10^(1/2)] 

and the rhs above exists in Maple.

I will fix the convert facility regarding this - one more for the next update of the Mathematical functions code.

Edgardo S. Cheb-Terrab
Physics, Differential Equations and Mathematical Functions, Maplesoft

Hi

You ask on how to implement this function in Maple. But the MeijerG function is already implemented in Maple, you do not need to implement it. Please give a look at ?MeijerG.

Regarding your question about Matlab, or comment about the output of the Mathematica command Integrate, note please that in this forum we work with Maple, not Matlab nor Mathematica, so perhaps it is better if you ask those question in Matlab or Mathematica forums?

Edgardo S. Cheb-Terrab
Physics, Differential Equations and Mathematical Functions, Maplesoft

Hi
If all what you want is to indicate that {a, b} are real then Physics:-Setup(realobjects = {a, b}) will suffice for the `is` command, and through it everything else in the library (including conjugate), recognize these are real objects. You can also use the standard assume facility, as in assume(a, real) assume(b, real) but that changes who a and b are and that may or not be convenient in general (it frequentiy is not).

So for example Setup(quantumoperator = {a, b}, real = {a, b}) will do what you want to do, then expand(conjugate(k1*a+k2*conjugate(b))) returns as you expect/mentioned in your question.

Note also that you can indicate Setup(hermitianoperator = {a,b}) for the case of a = Dagger(a); generally speaking you can set a quantumoperator, hermitianoperator and unitaryoperator.

The types of operators that you can set as well as the realobjects are all explained in ?Physics:-Setup. 

Finally, note that entering Physics:-Setup(); so without any arguments, you open an applet that shows all the Physics setup at once, and directly in the applet you can specify quantum, hermitian and unitary operators as well as realobjects.

Edgardo S. Cheb-Terrab
Physics, Maplesoft

Generally speaking, the command for changing variables in sums is PDEtools:-dchange, for example:

Edgardo S. Cheb-Terrab
Physics, Differential Equations and Mathematical Functions, Maplesoft

Hi

If I understand you correctly, a step forward with regards to your previous question  you want to also

express tensorial expressions involving the metric g_[mu, nu] in terms of the 4-vector l[mu] and the Minkowski

form of the metric - call it eta[mu, nu]. Here is one way to do that, you tell  whether I am missing something and

we move from there.

 

Load the package, set the notation to be textbooklike

restart; with(Physics); Setup(notation = true)

`* Partial match of  'notation' against keyword 'mathematicalnotation'`

(1)

NOTE: I am using the latest version of Physics for Maple 18, that you can download from

Maplesoft's R&D Physics webpage; you verify that checking the Physics datestamp:

Physics:-Version()[2]

`2014, April 15, 18:46 hours`

(2)

So, define your 4-Vector l[mu]

Define(l[mu])

`Defined objects with tensor properties`

 

{Physics:-Dgamma[mu], Physics:-Psigma[mu], Physics:-d_[mu], Physics:-g_[mu, nu], l[mu], Physics:-KroneckerDelta[mu, nu], Physics:-LeviCivita[alpha, beta, mu, nu]}

(3)

If you want to define it giving the components, try Define(l[mu] = [a, b, c, d]) where the list on the

right-hand side contains each of the four covariant components of l[mu]

 

I assume also that, in the metric you may want to define, the components of l[mu] depend on the

coordinates, so set a system of coordinates, which you will need anyway to have the Christoffel

symbols working. For simplicity I use here cartesian coordinates  (NOTE: cartesian or arbitrary at this

point mean the same, but if you prefer 'arbitrary' try Setup(coordinates = X))

Setup(Coordinates = cartesian)

`* Partial match of  'Physics:-Coordinates' against keyword 'coordinatesystems'`

 

`Default differentiation variables for d_, D_ and dAlembertian are: `*{X = (x, y, z, t)}

 

`Systems of spacetime Coordinates are: `*{X = (x, y, z, t)}

 

[coordinatesystems = {X}]

(4)

Again for simplicity, let's have the functionality of l[mu] not displayed all the time, so that everything is

more readable

PDEtools:-declare(l(X))

l(x, y, z, t)*`will now be displayed as`*l

(5)

Getting into the problem: you want to define a metric - that at this point, as a draft, I am calling it

G - equal to:

G[mu, nu] = g_[mu, nu]+l[mu](X)*l[nu](X)

G[mu, nu] = Physics:-g_[mu, nu]+l[mu](X)*l[nu](X)

(6)

So define this G as a tensor

Define(G[mu, nu] = Physics[g_][mu, nu]+l[mu](X)*l[nu](X))

`Defined objects with tensor properties`

 

{Physics:-Dgamma[mu], G[mu, nu], Physics:-Psigma[mu], Physics:-d_[mu], Physics:-g_[mu, nu], l[mu], Physics:-KroneckerDelta[mu, nu], Physics:-LeviCivita[alpha, beta, mu, nu], Physics:-SpaceTimeVector[mu](X)}

(7)

Moreover, you want to have a tensor that is exactly equal to the Minkowski metric, and that is available

for computations even after you set the metric g[mu, nu] to something else. You can always do that defining

such a tensor; it is simpler at this point, before changing the metric as follows:

eta[mu, nu] = rhs(g_[])

eta[mu, nu] = Matrix(%id = 18446744078329981398)

(8)

"Define(?)"

`Defined objects with tensor properties`

 

{Physics:-Dgamma[mu], G[mu, nu], Physics:-Psigma[mu], Physics:-d_[mu], eta[mu, nu], Physics:-g_[mu, nu], l[mu], Physics:-KroneckerDelta[mu, nu], Physics:-LeviCivita[alpha, beta, mu, nu], Physics:-SpaceTimeVector[mu](X)}

(9)

Verify ...

eta[]

eta[mu, nu] = Matrix(%id = 18446744078519433926)

(10)

Let's continue defining the actual metric g[mu, nu] using the matrix of the covariant components of G 

NULL

Setup(metric = rhs(G[]))

[metric = {(1, 1) = -1+l[1](X)^2, (1, 2) = l[1](X)*l[2](X), (1, 3) = l[1](X)*l[3](X), (1, 4) = l[1](X)*l[4](X), (2, 2) = -1+l[2](X)^2, (2, 3) = l[2](X)*l[3](X), (2, 4) = l[2](X)*l[4](X), (3, 3) = -1+l[3](X)^2, (3, 4) = l[3](X)*l[4](X), (4, 4) = 1+l[4](X)^2}]

(11)

Check g[mu, nu]

g_[]

Physics:-g_[mu, nu] = Matrix(%id = 18446744078525716710)

(12)

Rewrite now the Christoffel symbols in terms of the metric

Christoffel[alpha, mu, nu] = convert(Christoffel[alpha, mu, nu], g_)

Physics:-Christoffel[alpha, mu, nu] = (1/2)*Physics:-d_[nu](Physics:-g_[alpha, mu], [X])+(1/2)*Physics:-d_[mu](Physics:-g_[alpha, nu], [X])-(1/2)*Physics:-d_[alpha](Physics:-g_[mu, nu], [X])

(13)

and you want to express this result (13) in terms of l[mu] using

g_[mu, nu] = eta[mu, nu]+l[mu](X)*l[nu](X)

Physics:-g_[mu, nu] = eta[mu, nu]+l[mu](X)*l[nu](X)

(14)

Before moving ahead, verify that this equation is true

TensorArray(Physics[g_][mu, nu] = eta[mu, nu]+l[mu](X)*l[nu](X))

Matrix(%id = 18446744078525784902)

(15)

You see by eye that this is an Array of equations all of which are true:

"map(evalb,?)"

Matrix(%id = 18446744078462675414)

(16)

To substitute now (14) in (13) you can use the library command Library:-SubstituteTensor, for which

you have a help page section in the help page for Physics,Library . Note that it will take care of the

indices automatically

Library:-SubstituteTensor(Physics[g_][mu, nu] = eta[mu, nu]+l[mu](X)*l[nu](X), Physics[Christoffel][alpha, mu, nu] = (1/2)*Physics[d_][nu](Physics[g_][alpha, mu], [X])+(1/2)*Physics[d_][mu](Physics[g_][alpha, nu], [X])-(1/2)*Physics[d_][alpha](Physics[g_][mu, nu], [X]))

Physics:-Christoffel[alpha, mu, nu] = (1/2)*Physics:-d_[nu](eta[alpha, mu]+l[alpha](X)*l[mu](X), [X])+(1/2)*Physics:-d_[mu](eta[alpha, nu]+l[alpha](X)*l[nu](X), [X])-(1/2)*Physics:-d_[alpha](eta[mu, nu]+l[mu](X)*l[nu](X), [X])

(17)

You may prefer to see the d_[mu] derivatives evaluated. For that you can just invoke the label or use the

optional argument evaluateexpression

Physics[Christoffel][alpha, mu, nu] = (1/2)*Physics[d_][nu](eta[alpha, mu]+l[alpha](X)*l[mu](X), [X])+(1/2)*Physics[d_][mu](eta[alpha, nu]+l[alpha](X)*l[nu](X), [X])-(1/2)*Physics[d_][alpha](eta[mu, nu]+l[mu](X)*l[nu](X), [X])

Physics:-Christoffel[alpha, mu, nu] = (1/2)*Physics:-d_[nu](l[alpha](X), [X])*l[mu](X)+(1/2)*l[alpha](X)*Physics:-d_[nu](l[mu](X), [X])+(1/2)*Physics:-d_[mu](l[alpha](X), [X])*l[nu](X)+(1/2)*l[alpha](X)*Physics:-d_[mu](l[nu](X), [X])-(1/2)*Physics:-d_[alpha](l[mu](X), [X])*l[nu](X)-(1/2)*l[mu](X)*Physics:-d_[alpha](l[nu](X), [X])

(18)

Library:-SubstituteTensor(Physics[g_][mu, nu] = eta[mu, nu]+l[mu](X)*l[nu](X), Physics[Christoffel][alpha, mu, nu] = (1/2)*Physics[d_][nu](Physics[g_][alpha, mu], [X])+(1/2)*Physics[d_][mu](Physics[g_][alpha, nu], [X])-(1/2)*Physics[d_][alpha](Physics[g_][mu, nu], [X]), evaluateexpression)

Physics:-Christoffel[alpha, mu, nu] = (1/2)*Physics:-d_[nu](l[alpha](X), [X])*l[mu](X)+(1/2)*l[alpha](X)*Physics:-d_[nu](l[mu](X), [X])+(1/2)*Physics:-d_[mu](l[alpha](X), [X])*l[nu](X)+(1/2)*l[alpha](X)*Physics:-d_[mu](l[nu](X), [X])-(1/2)*Physics:-d_[alpha](l[mu](X), [X])*l[nu](X)-(1/2)*l[mu](X)*Physics:-d_[alpha](l[nu](X), [X])

(19)

Likewise, for the Ricci tensor,

Ricci[mu, nu]; % = convert(%, Christoffel)

Physics:-Ricci[mu, nu] = Physics:-d_[alpha](Physics:-Christoffel[`~alpha`, mu, nu], [X])-Physics:-d_[nu](Physics:-Christoffel[`~alpha`, alpha, mu], [X])+Physics:-Christoffel[`~beta`, mu, nu]*Physics:-Christoffel[`~alpha`, alpha, beta]-Physics:-Christoffel[`~beta`, alpha, mu]*Physics:-Christoffel[`~alpha`, beta, nu]

(20)

so this expresses the Ricci tensor in terms of derivatives of l[mu]

Library:-SubstituteTensor(Physics[Christoffel][alpha, mu, nu] = (1/2)*Physics[d_][nu](l[alpha](X), [X])*l[mu](X)+(1/2)*l[alpha](X)*Physics[d_][nu](l[mu](X), [X])+(1/2)*Physics[d_][mu](l[alpha](X), [X])*l[nu](X)+(1/2)*l[alpha](X)*Physics[d_][mu](l[nu](X), [X])-(1/2)*Physics[d_][alpha](l[mu](X), [X])*l[nu](X)-(1/2)*l[mu](X)*Physics[d_][alpha](l[nu](X), [X]), Physics[Ricci][mu, nu] = Physics[d_][alpha](Physics[Christoffel][`~alpha`, mu, nu], [X])-Physics[d_][nu](Physics[Christoffel][`~alpha`, alpha, mu], [X])+Physics[Christoffel][`~beta`, mu, nu]*Physics[Christoffel][`~alpha`, alpha, beta]-Physics[Christoffel][`~beta`, alpha, mu]*Physics[Christoffel][`~alpha`, beta, nu], evaluateexpression)

Physics:-Ricci[mu, nu] = ((1/2)*Physics:-d_[nu](l[`~beta`](X), [X])*l[mu](X)+(1/2)*l[`~beta`](X)*Physics:-d_[nu](l[mu](X), [X])+(1/2)*Physics:-d_[mu](l[`~beta`](X), [X])*l[nu](X)+(1/2)*l[`~beta`](X)*Physics:-d_[mu](l[nu](X), [X])-(1/2)*Physics:-d_[`~beta`](l[mu](X), [X])*l[nu](X)-(1/2)*l[mu](X)*Physics:-d_[`~beta`](l[nu](X), [X]))*((1/2)*Physics:-d_[beta](l[`~alpha`](X), [X])*l[alpha](X)+(1/2)*l[`~alpha`](X)*Physics:-d_[beta](l[alpha](X), [X])+(1/2)*Physics:-d_[alpha](l[`~alpha`](X), [X])*l[beta](X)+(1/2)*l[`~alpha`](X)*Physics:-d_[alpha](l[beta](X), [X])-(1/2)*Physics:-d_[`~alpha`](l[alpha](X), [X])*l[beta](X)-(1/2)*l[alpha](X)*Physics:-d_[`~alpha`](l[beta](X), [X]))-((1/2)*Physics:-d_[mu](l[`~beta`](X), [X])*l[alpha](X)+(1/2)*l[`~beta`](X)*Physics:-d_[mu](l[alpha](X), [X])+(1/2)*Physics:-d_[alpha](l[`~beta`](X), [X])*l[mu](X)+(1/2)*l[`~beta`](X)*Physics:-d_[alpha](l[mu](X), [X])-(1/2)*Physics:-d_[`~beta`](l[alpha](X), [X])*l[mu](X)-(1/2)*l[alpha](X)*Physics:-d_[`~beta`](l[mu](X), [X]))*((1/2)*Physics:-d_[nu](l[`~alpha`](X), [X])*l[beta](X)+(1/2)*l[`~alpha`](X)*Physics:-d_[nu](l[beta](X), [X])+(1/2)*Physics:-d_[beta](l[`~alpha`](X), [X])*l[nu](X)+(1/2)*l[`~alpha`](X)*Physics:-d_[beta](l[nu](X), [X])-(1/2)*Physics:-d_[`~alpha`](l[beta](X), [X])*l[nu](X)-(1/2)*l[beta](X)*Physics:-d_[`~alpha`](l[nu](X), [X]))+(1/2)*Physics:-d_[nu](l[alpha](X), [X])*Physics:-d_[`~alpha`](l[mu](X), [X])+(1/2)*l[alpha](X)*Physics:-d_[nu](Physics:-d_[`~alpha`](l[mu](X), [X]), [X])+(1/2)*Physics:-d_[nu](Physics:-d_[`~alpha`](l[alpha](X), [X]), [X])*l[mu](X)+(1/2)*Physics:-d_[`~alpha`](l[alpha](X), [X])*Physics:-d_[nu](l[mu](X), [X])-(1/2)*l[`~alpha`](X)*Physics:-d_[nu](Physics:-d_[alpha](l[mu](X), [X]), [X])-(1/2)*Physics:-d_[nu](Physics:-d_[alpha](l[`~alpha`](X), [X]), [X])*l[mu](X)-(1/2)*Physics:-d_[nu](l[`~alpha`](X), [X])*Physics:-d_[mu](l[alpha](X), [X])-(1/2)*l[`~alpha`](X)*Physics:-d_[nu](Physics:-d_[mu](l[alpha](X), [X]), [X])-(1/2)*Physics:-d_[nu](Physics:-d_[mu](l[`~alpha`](X), [X]), [X])*l[alpha](X)-(1/2)*Physics:-d_[mu](l[`~alpha`](X), [X])*Physics:-d_[nu](l[alpha](X), [X])-(1/2)*Physics:-d_[alpha](l[mu](X), [X])*Physics:-d_[`~alpha`](l[nu](X), [X])-(1/2)*l[mu](X)*(Physics:-d_[alpha](Physics:-g_[`~alpha`, `~kappa`], [X])*Physics:-d_[kappa](l[nu](X), [X])+Physics:-dAlembertian(l[nu](X), [X]))-(1/2)*(Physics:-d_[alpha](Physics:-g_[`~alpha`, `~kappa`], [X])*Physics:-d_[kappa](l[mu](X), [X])+Physics:-dAlembertian(l[mu](X), [X]))*l[nu](X)-(1/2)*Physics:-d_[`~alpha`](l[mu](X), [X])*Physics:-d_[alpha](l[nu](X), [X])+(1/2)*Physics:-d_[alpha](l[`~alpha`](X), [X])*Physics:-d_[mu](l[nu](X), [X])+(1/2)*l[`~alpha`](X)*Physics:-d_[alpha](Physics:-d_[mu](l[nu](X), [X]), [X])+(1/2)*Physics:-d_[mu](l[`~alpha`](X), [X])*Physics:-d_[alpha](l[nu](X), [X])+(1/2)*Physics:-d_[alpha](Physics:-d_[mu](l[`~alpha`](X), [X]), [X])*l[nu](X)+(1/2)*l[`~alpha`](X)*Physics:-d_[alpha](Physics:-d_[nu](l[mu](X), [X]), [X])+(1/2)*Physics:-d_[alpha](Physics:-d_[nu](l[`~alpha`](X), [X]), [X])*l[mu](X)

(21)

The same for Riemann

Riemann[alpha, mu, beta, nu]; % = convert(%, Christoffel)

Physics:-Riemann[alpha, mu, beta, nu] = Physics:-g_[alpha, lambda]*(Physics:-d_[beta](Physics:-Christoffel[`~lambda`, mu, nu], [X])-Physics:-d_[nu](Physics:-Christoffel[`~lambda`, beta, mu], [X])+Physics:-Christoffel[`~lambda`, beta, kappa]*Physics:-Christoffel[`~kappa`, mu, nu]-Physics:-Christoffel[`~lambda`, kappa, nu]*Physics:-Christoffel[`~kappa`, beta, mu])

(22)

Library:-SubstituteTensor(Physics[Christoffel][alpha, mu, nu] = (1/2)*Physics[d_][nu](l[alpha](X), [X])*l[mu](X)+(1/2)*l[alpha](X)*Physics[d_][nu](l[mu](X), [X])+(1/2)*Physics[d_][mu](l[alpha](X), [X])*l[nu](X)+(1/2)*l[alpha](X)*Physics[d_][mu](l[nu](X), [X])-(1/2)*Physics[d_][alpha](l[mu](X), [X])*l[nu](X)-(1/2)*l[mu](X)*Physics[d_][alpha](l[nu](X), [X]), Physics[Riemann][alpha, mu, beta, nu] = Physics[g_][alpha, lambda]*(Physics[d_][beta](Physics[Christoffel][`~lambda`, mu, nu], [X])-Physics[d_][nu](Physics[Christoffel][`~lambda`, beta, mu], [X])+Physics[Christoffel][`~lambda`, beta, kappa]*Physics[Christoffel][`~kappa`, mu, nu]-Physics[Christoffel][`~lambda`, kappa, nu]*Physics[Christoffel][`~kappa`, beta, mu]), evaluateexpression)

Physics:-Riemann[alpha, mu, beta, nu] = Physics:-g_[alpha, lambda]*((1/2)*Physics:-d_[beta](Physics:-d_[nu](l[`~lambda`](X), [X]), [X])*l[mu](X)+(1/2)*l[`~lambda`](X)*Physics:-d_[beta](Physics:-d_[nu](l[mu](X), [X]), [X])+(1/2)*Physics:-d_[beta](Physics:-d_[mu](l[`~lambda`](X), [X]), [X])*l[nu](X)+(1/2)*Physics:-d_[mu](l[`~lambda`](X), [X])*Physics:-d_[beta](l[nu](X), [X])+(1/2)*Physics:-d_[beta](l[`~lambda`](X), [X])*Physics:-d_[mu](l[nu](X), [X])+(1/2)*l[`~lambda`](X)*Physics:-d_[beta](Physics:-d_[mu](l[nu](X), [X]), [X])-(1/2)*Physics:-d_[beta](Physics:-d_[`~lambda`](l[mu](X), [X]), [X])*l[nu](X)-(1/2)*Physics:-d_[`~lambda`](l[mu](X), [X])*Physics:-d_[beta](l[nu](X), [X])-(1/2)*Physics:-d_[beta](l[mu](X), [X])*Physics:-d_[`~lambda`](l[nu](X), [X])-(1/2)*l[mu](X)*Physics:-d_[beta](Physics:-d_[`~lambda`](l[nu](X), [X]), [X])-(1/2)*Physics:-d_[nu](Physics:-d_[mu](l[`~lambda`](X), [X]), [X])*l[beta](X)-(1/2)*Physics:-d_[mu](l[`~lambda`](X), [X])*Physics:-d_[nu](l[beta](X), [X])-(1/2)*Physics:-d_[nu](l[`~lambda`](X), [X])*Physics:-d_[mu](l[beta](X), [X])-(1/2)*l[`~lambda`](X)*Physics:-d_[nu](Physics:-d_[mu](l[beta](X), [X]), [X])-(1/2)*Physics:-d_[nu](Physics:-d_[beta](l[`~lambda`](X), [X]), [X])*l[mu](X)-(1/2)*l[`~lambda`](X)*Physics:-d_[nu](Physics:-d_[beta](l[mu](X), [X]), [X])+(1/2)*Physics:-d_[nu](Physics:-d_[`~lambda`](l[beta](X), [X]), [X])*l[mu](X)+(1/2)*Physics:-d_[`~lambda`](l[beta](X), [X])*Physics:-d_[nu](l[mu](X), [X])+(1/2)*Physics:-d_[nu](l[beta](X), [X])*Physics:-d_[`~lambda`](l[mu](X), [X])+(1/2)*l[beta](X)*Physics:-d_[nu](Physics:-d_[`~lambda`](l[mu](X), [X]), [X])+((1/2)*Physics:-d_[kappa](l[`~lambda`](X), [X])*l[beta](X)+(1/2)*l[`~lambda`](X)*Physics:-d_[kappa](l[beta](X), [X])+(1/2)*Physics:-d_[beta](l[`~lambda`](X), [X])*l[kappa](X)+(1/2)*l[`~lambda`](X)*Physics:-d_[beta](l[kappa](X), [X])-(1/2)*Physics:-d_[`~lambda`](l[beta](X), [X])*l[kappa](X)-(1/2)*l[beta](X)*Physics:-d_[`~lambda`](l[kappa](X), [X]))*((1/2)*Physics:-d_[nu](l[`~kappa`](X), [X])*l[mu](X)+(1/2)*l[`~kappa`](X)*Physics:-d_[nu](l[mu](X), [X])+(1/2)*Physics:-d_[mu](l[`~kappa`](X), [X])*l[nu](X)+(1/2)*l[`~kappa`](X)*Physics:-d_[mu](l[nu](X), [X])-(1/2)*Physics:-d_[`~kappa`](l[mu](X), [X])*l[nu](X)-(1/2)*l[mu](X)*Physics:-d_[`~kappa`](l[nu](X), [X]))-((1/2)*Physics:-d_[nu](l[`~lambda`](X), [X])*l[kappa](X)+(1/2)*l[`~lambda`](X)*Physics:-d_[nu](l[kappa](X), [X])+(1/2)*Physics:-d_[kappa](l[`~lambda`](X), [X])*l[nu](X)+(1/2)*l[`~lambda`](X)*Physics:-d_[kappa](l[nu](X), [X])-(1/2)*Physics:-d_[`~lambda`](l[kappa](X), [X])*l[nu](X)-(1/2)*l[kappa](X)*Physics:-d_[`~lambda`](l[nu](X), [X]))*((1/2)*Physics:-d_[mu](l[`~kappa`](X), [X])*l[beta](X)+(1/2)*l[`~kappa`](X)*Physics:-d_[mu](l[beta](X), [X])+(1/2)*Physics:-d_[beta](l[`~kappa`](X), [X])*l[mu](X)+(1/2)*l[`~kappa`](X)*Physics:-d_[beta](l[mu](X), [X])-(1/2)*Physics:-d_[`~kappa`](l[beta](X), [X])*l[mu](X)-(1/2)*l[beta](X)*Physics:-d_[`~kappa`](l[mu](X), [X])))

(23)

Also, recalling from my previous reply you have not defined l[mu], so in practice you do not have l[mu]*l[`~mu`] = 0.

Hence, I understand that, generally speaking, l[mu]*l[nu]*R[`~mu`, `~nu`] <> 0.

 

Regarding the simplifications you mention: could you please attach a worksheet to your post showing

the actual input you are using in Maple to represent your computation? Looking at this actual Maple

input I could probably give you some concrete feedback.

 

As an example illustrating what I say above, the following shows that, without specifying l[mu], you have

l[mu]*l[nu]*R[`~mu`, `~nu`] <> 0:

Ricci[mu, nu]*l[mu](X)*l[nu](X)

l[mu](X)*l[nu](X)*Physics:-Ricci[`~mu`, `~nu`]

(24)

If you uncomment the following input line you see a rather long expression different from zero involving

the components of l[mu] and their derivatives

NULL

NULL

 

Download RewriteTensors.mw


Edgardo S. Cheb-Terrab
Physics, Differential Equations and Mathematical Functions, Maplesoft

Hi
In a previous post in Mapleprimes, the question possed was a bit different but the answer is precisely what you are asking now, about setting the algebra for Pauli matrices. So in addition to Mehdi's answer you may want to check the reply entitled "Algebra for Pauli matrices" (you will need to scroll down the page to see this answer, by myself).

Independent of these two answers: a) it is possible as well to set this algebra as a tensor algebra, by setting spaceindices and using them to set the algebra; b) this algebra, as well as the algebra for Dirac matrices, they will soon both be loaded by default when you load Physics; that is, implemented directly in the package, not requiring someone to code them.

Edgardo S. Cheb-Terrab
Physics, Maplesoft

 

Hi

This is how I would do it: 

Load the package, set the notation to be textbooklike

restart; with(Physics); Setup(notation = true)

`* Partial match of  'notation' against keyword 'mathematicalnotation'`

(1)

Define your 4-Vector l[mu]

Define(l[mu])

`Defined objects with tensor properties`

 

{Physics:-Dgamma[mu], Physics:-Psigma[mu], Physics:-d_[mu], Physics:-g_[mu, nu], l[mu], Physics:-KroneckerDelta[mu, nu], Physics:-LeviCivita[alpha, beta, mu, nu]}

(2)

If you want to define it giving the components, try Define(l[mu] = [a, b, c, d]) where the list on the right-hand side contains

each of the four covariant components of l[mu]

 

I assume also that, in the metric you may want to define, the components of l[mu] depend on the coordinates, so set a system

of coordinates, which you will need anyway to have the Christoffel symbols working. For simplicity I use here cartesian

coordinates

Setup(Coordinates = cartesian)

`* Partial match of  'Physics:-Coordinates' against keyword 'coordinatesystems'`

 

`Default differentiation variables for d_, D_ and dAlembertian are: `*{X = (x, y, z, t)}

 

`Systems of spacetime Coordinates are: `*{X = (x, y, z, t)}

 

[coordinatesystems = {X}]

(3)

Again for simplicity, let's have the functionality of l[mu] not displayed all the time, so that everything is more readable

PDEtools:-declare(l(X))

l(x, y, z, t)*`will now be displayed as`*l

(4)

Now your problem: you want to define a metric - that at this point, as a draft, I am calling it G - equal to:

G[mu, nu] = g_[mu, nu]+l[mu](X)*l[nu](X)

G[mu, nu] = Physics:-g_[mu, nu]+l[mu](X)*l[nu](X)

(5)

Am I correct? Suppose yes. So define this G as a tensor

Define(G[mu, nu] = Physics[g_][mu, nu]+l[mu](X)*l[nu](X))

`Defined objects with tensor properties`

 

{Physics:-Dgamma[mu], G[mu, nu], Physics:-Psigma[mu], Physics:-d_[mu], Physics:-g_[mu, nu], l[mu], Physics:-KroneckerDelta[mu, nu], Physics:-LeviCivita[alpha, beta, mu, nu], Physics:-SpaceTimeVector[mu](X)}

(6)

Let's check the components of G

G[]

G[mu, nu] = Matrix(%id = 18446744078377195630)

(7)

You can now define the actual metric g[mu, nu] using the matrix of the covariant components of G 

"Setup(metric = rhs(?))"

[metric = {(1, 1) = -1+l[1](X)^2, (1, 2) = l[1](X)*l[2](X), (1, 3) = l[1](X)*l[3](X), (1, 4) = l[1](X)*l[4](X), (2, 2) = -1+l[2](X)^2, (2, 3) = l[2](X)*l[3](X), (2, 4) = l[2](X)*l[4](X), (3, 3) = -1+l[3](X)^2, (3, 4) = l[3](X)*l[4](X), (4, 4) = 1+l[4](X)^2}]

(8)

Check g[mu, nu]

g_[]

Physics:-g_[mu, nu] = Matrix(%id = 18446744078346400822)

(9)

Note also that there are other manners of defining the metric: you can also pass the corresonding line element, or use one

of the predefined ones, etc. but most of the time you just construct a matrix and use it to define a metric as shown above.

 

So if I understood what you want to do correctly, the above is the answer, plus that you may want to define l[mu] more concretely,

indicating its covariant (or contravariant) components (so that "l[]^(nu) l[nu]=0 "?"").

 

Finally, regarding the Christoffel symbols, you do not need to define them - in the context of the Physics package everything

(the Christoffel, Ricci, Riemann, Einsten tensors, the covariant derivative D_[mu] etc. - see the corresponding help page) gets

automatically defined after you set the metric. For example:

"'Christoffel[~1,2,3]' = Christoffel[~1,2,3]"

Physics:-Christoffel[`~1`, 2, 3] = -(1/2)*((diff(l[1](X), z))*l[2](X)+l[1](X)*(diff(l[2](X), z))+(diff(l[1](X), y))*l[3](X)+l[1](X)*(diff(l[3](X), y))-(diff(l[2](X), x))*l[3](X)-l[2](X)*(diff(l[3](X), x))-l[3](X)^3*(diff(l[1](X), y))+l[3](X)^3*(diff(l[2](X), x))-l[2](X)^3*(diff(l[1](X), z))+l[2](X)^3*(diff(l[3](X), x))+l[1](X)*l[2](X)^2*(diff(l[2](X), z))-l[2](X)^2*l[1](X)*(diff(l[3](X), y))+l[4](X)^2*l[3](X)*(diff(l[1](X), y))-l[4](X)^2*l[3](X)*(diff(l[2](X), x))+l[4](X)^2*l[2](X)*(diff(l[1](X), z))-l[4](X)^2*l[2](X)*(diff(l[3](X), x))-l[3](X)^2*l[2](X)*(diff(l[1](X), z))+l[3](X)^2*l[2](X)*(diff(l[3](X), x))-l[3](X)^2*l[1](X)*(diff(l[2](X), z))+l[1](X)*l[3](X)^2*(diff(l[3](X), y))-l[3](X)*l[2](X)^2*(diff(l[1](X), y))+l[3](X)*l[2](X)^2*(diff(l[2](X), x))+l[4](X)*l[3](X)*l[1](X)*(diff(l[2](X), t))-l[4](X)*l[3](X)*l[1](X)*(diff(l[4](X), y))+l[4](X)*l[2](X)*l[1](X)*(diff(l[3](X), t))-l[4](X)*l[2](X)*l[1](X)*(diff(l[4](X), z)))/(l[4](X)^2-l[3](X)^2-l[2](X)^2-l[1](X)^2+1)

(10)

The Einstein covariant components: uncommenting the following line you get Einstein[1, 1] - a rather large expression

 

Download SetMetric.mw

 

Edgardo S. Cheb-Terrab 

Physics, Differential Equations and Mathematical Functions, Maplesoft

Hi Mac Dude

This example you show looks to me sufficiently similar to the one you see as the last example in the help page for dchange. So the same solution can be used: just call G the inverse of F entering Theta = F(s), so s = G(Theta), and proceed ahead, as shown in the page.

Similarly, in the context of the example shown in the page, if itr is Theta = F(s), you can use PDEtools:-Solve to get a RootOf exact representation of the inverse using PDEtools:-Solve(itr, s) (note the use of PDEtools:-Solve instead of solve, which, for historical reasons only, will refuse to construct this representation). Then change variables using this exact representation of the inverse of F returned by PDEtools:-Solve. To see how this works you can use it instead of the 'tr := {s = am(w)}' shown in the help page, and you see it produces the same desired result shown in the page as equation (19).

Edgardo S. Cheb-Terrab
Physics, Differential Equations and Mathematical Functions, Maplesoft

Hi
I didn't investigate the solutions to your system, but can see a syntax problem in the input you show. First, you write D(u(t)) -- it should be D(u)(t); then you write inits and sys1 as lists, but then you ask {sys1} union {inits} -- that does not produce a single set of equations and initial conditions as you expect. 

Correcting these syntax issues, the input to your problem would be:

inits := {u(0) = 1, v(0) = 1, D(u)(0) = 1, D(v)(0) = 1};

sys1 := {D[1, 1](u)(t)+C[1, 1, 1]*D(u)(t)^2+2*C[1, 1, 2]*D(u)(t)*D(v)(t)+C[1, 2, 2]*D(v)(t)^2 = 0, D[1, 1](v)(t)+C[2, 1, 1]*D(u)(t)^2+2*C[2, 1, 2]*(D(u)(t)*D(v)(t))^2+C[2, 2, 2]*D(v)(t)^2 = 0};

L := dsolve(sys1 union inits);

Then dsolve(L) does not return unexpected error messages - but although you have defined a procedure Christoff (I understand that for the Christoffel symbols) you have not executed it, so the C[i,j,k] have no values assigned, and so the system, for generic C[i,j,k], is not solvable automatically by dsolve (perhaps it is solvable interactively using symmetries or integrating factors ...). I believe that in order to tackle your problem you first need to assign values to these C[i,j,k].

Independent of all this, the error message you show indicates that the program is not capturing the wrong syntax properly, as it should - I will give a look at that.

Also: note that the Physics package has dedicated commands to compute Geodesics - see ?Physics,Geodesics, and for the Christoffel symbols.

Edgardo S. Cheb-Terrab
Physics, Differential Equations and Mathematical functions, Maplesoft

Hi

There were some similar questions/answers here in Mapleprimes. One that comes to my mind is 4-Vectors of arbitrary form - see ?Physics:-Define... There you will also find links to more Mapleprimes post about similar or the same. Let me know please if these do not contain the answer to your question.

Regarding a Student:-Physics, we are not here yet. I feel that first we need to fill some gaps, and that will probably take not less than 2 releases after Maple 18.

Edgardo S. Cheb-Terrab
Physics, Maplesoft

First 45 46 47 48 49 50 51 Last Page 47 of 56