Viktor T. Toth
2017-07-04 20:54:00 UTC
Dear Daniel,
Sorry, didn't mean to be cryptic, I thought my answer leads you to the right solution. Allow me to elaborate on three major points.
First, the question of position vectors.
Let's go through this methodically, starting with an arbitrary coordinate system x^i. A position vector R is represented by x^i, which is really shorthand for
R = x^i e_i,
Where the e_i are the covariant basis vectors.
Your point is that \partial R/\partial x^i = e_i, so differentiating R with respect to any of the coordinates should give the corresponding basis vector. It is, of course, trivially true:
\partial _i R = \partial (x^i e_i) / \partial x^i = e_i.
So what would this position vector be in polar cylindrical coordinates? Why, it is R = x^i of course, that is to say,
R : [rho, theta, z].
Indeed you can see (even without Maxima) that, say, diff(R, rho) = [1, 0, 0], which is just as it should be: this is e_rho.
But this is not what you have in your script. Instead, you have an R that is the components of a position vector in _Cartesian_ coordinates:
R : [rho*cos(theta), rho*sin(theta), z].
Why would the Cartesian components of R have any special behavior under covariant differentiation in polar cylindrical coordinates? Of course they wouldn't.
Second, the question of covariant derivatives.
You assert that the covariant derivative of the basis vectors should be zero. But is this really true?
We have three basis vectors: e_rho = [1, 0, 0], e_theta = [0, 1, 0] and e_z = [0, 0, 1]. Let us calculate their covariant derivatives by hand.
The covariant derivative of a covariant vector V_i is, of course,
D_i V_j = \partial_i V_j - Gamma_{ij}^k V_k. The only nonzero Christoffel symbols in polar cylindrical coordinates are
Gamma_{12}^2 = Gamma_{21}^2 = 1 / rho,
Gamma_{22}^1 = -rho.
Consequently, for e_rho, we have
(D_1 e_rho)_1 = \partial_rho 1 - \Gamma_{11}^1 1 = 0.
(D_1 e_rho)_2 = -Gamma_{12}^1 1 = 0.
(D_1 e_rho)_3 = -Gamma_{13}^1 1 = 0.
(D_2 e_rho)_1 = \partial_theta 1 - \Gamma_{21}^1 1 = 0.
(D_2 e_rho)_2 = \partial_rho 1 - \Gamma_{22}^1 1 = rho.
Whoops. That term is not zero, falsifying your assertion, so I don't even need to continue. (The rest of the terms are zero, by the way.)
The reason, of course, is that this is precisely what the covariant derivative measures: how the basis vectors _change_ as we transport them along the manifold. So contrary to your expectation, the covariant derivative of the basis vectors should not be zero unless all Christoffel-symbols vanish (e.g., Cartesian coordinates in flat space.)
Third, the covariant derivative of Cartesian basis vectors.
The preceding discussion leads me to my final point: the covariant derivatives of a set of basis vectors that does NOT change under parallel transport, such as the Cartesian basis vectors, should be zero! But for this, we need to do the exact opposite of what you have been doing. Instead of taking R to be a position vector in cylindrical coordinates and then express its components in Cartesian coordinates, we need to take the Cartesian basis vectors and express their coordinates using the polar cylindrical coordinate system.
So given Cartesian basis vectors I, J and K, their components in polar cylindrical coordinates would be:
I = [cos(theta), -rho*sin(theta), 0]
J = [sin(theta), rho*cos(theta), 0]
K = [0, 0, 1].
Unsurprisingly, if arranged in a matrix, this would indeed be the transpose of the matrix that you obtain from the vectors that you believed to be basis vectors.
When we take the covariant derivatives of these three vectors: that is to say, the polar cylindrical covariant derivative of the Cartesian basis vectors expressed in polar cylindrical coordinates, we indeed get zeros everywhere.
By the way, polar cylindrical coordinates are a ctensor/ct_coordsys builtin, so there is no need to construct them from scratch. (The builtin uses r instead of rho as the name of the radial coordinate.)
load(itensor)$
load(ctensor)$
ct_coordsys(polarcylindrical,all)$
ldisplay(R:[r*cos(theta),r*sin(theta),z])$
ishow(Eq:Q([j,i],[])=subst([%1=m],rename(covdiff(Z([j],[]),i))))$
Eq:ic_convert(Eq);
C:apply(matrix,makelist(diff(R,ct_coords[i]),i,dim));
trigsimp(C.transpose(C).ug);
I:transpose(C)[1];
J:transpose(C)[2];
K:transpose(C)[3];
Z:I$ Q:zeromatrix(dim,dim)$ ev(Eq)$ Q;
Z:J$ Q:zeromatrix(dim,dim)$ ev(Eq)$ Q;
Z:K$ Q:zeromatrix(dim,dim)$ ev(Eq)$ Q;
Viktor
Sorry, didn't mean to be cryptic, I thought my answer leads you to the right solution. Allow me to elaborate on three major points.
First, the question of position vectors.
Let's go through this methodically, starting with an arbitrary coordinate system x^i. A position vector R is represented by x^i, which is really shorthand for
R = x^i e_i,
Where the e_i are the covariant basis vectors.
Your point is that \partial R/\partial x^i = e_i, so differentiating R with respect to any of the coordinates should give the corresponding basis vector. It is, of course, trivially true:
\partial _i R = \partial (x^i e_i) / \partial x^i = e_i.
So what would this position vector be in polar cylindrical coordinates? Why, it is R = x^i of course, that is to say,
R : [rho, theta, z].
Indeed you can see (even without Maxima) that, say, diff(R, rho) = [1, 0, 0], which is just as it should be: this is e_rho.
But this is not what you have in your script. Instead, you have an R that is the components of a position vector in _Cartesian_ coordinates:
R : [rho*cos(theta), rho*sin(theta), z].
Why would the Cartesian components of R have any special behavior under covariant differentiation in polar cylindrical coordinates? Of course they wouldn't.
Second, the question of covariant derivatives.
You assert that the covariant derivative of the basis vectors should be zero. But is this really true?
We have three basis vectors: e_rho = [1, 0, 0], e_theta = [0, 1, 0] and e_z = [0, 0, 1]. Let us calculate their covariant derivatives by hand.
The covariant derivative of a covariant vector V_i is, of course,
D_i V_j = \partial_i V_j - Gamma_{ij}^k V_k. The only nonzero Christoffel symbols in polar cylindrical coordinates are
Gamma_{12}^2 = Gamma_{21}^2 = 1 / rho,
Gamma_{22}^1 = -rho.
Consequently, for e_rho, we have
(D_1 e_rho)_1 = \partial_rho 1 - \Gamma_{11}^1 1 = 0.
(D_1 e_rho)_2 = -Gamma_{12}^1 1 = 0.
(D_1 e_rho)_3 = -Gamma_{13}^1 1 = 0.
(D_2 e_rho)_1 = \partial_theta 1 - \Gamma_{21}^1 1 = 0.
(D_2 e_rho)_2 = \partial_rho 1 - \Gamma_{22}^1 1 = rho.
Whoops. That term is not zero, falsifying your assertion, so I don't even need to continue. (The rest of the terms are zero, by the way.)
The reason, of course, is that this is precisely what the covariant derivative measures: how the basis vectors _change_ as we transport them along the manifold. So contrary to your expectation, the covariant derivative of the basis vectors should not be zero unless all Christoffel-symbols vanish (e.g., Cartesian coordinates in flat space.)
Third, the covariant derivative of Cartesian basis vectors.
The preceding discussion leads me to my final point: the covariant derivatives of a set of basis vectors that does NOT change under parallel transport, such as the Cartesian basis vectors, should be zero! But for this, we need to do the exact opposite of what you have been doing. Instead of taking R to be a position vector in cylindrical coordinates and then express its components in Cartesian coordinates, we need to take the Cartesian basis vectors and express their coordinates using the polar cylindrical coordinate system.
So given Cartesian basis vectors I, J and K, their components in polar cylindrical coordinates would be:
I = [cos(theta), -rho*sin(theta), 0]
J = [sin(theta), rho*cos(theta), 0]
K = [0, 0, 1].
Unsurprisingly, if arranged in a matrix, this would indeed be the transpose of the matrix that you obtain from the vectors that you believed to be basis vectors.
When we take the covariant derivatives of these three vectors: that is to say, the polar cylindrical covariant derivative of the Cartesian basis vectors expressed in polar cylindrical coordinates, we indeed get zeros everywhere.
By the way, polar cylindrical coordinates are a ctensor/ct_coordsys builtin, so there is no need to construct them from scratch. (The builtin uses r instead of rho as the name of the radial coordinate.)
load(itensor)$
load(ctensor)$
ct_coordsys(polarcylindrical,all)$
ldisplay(R:[r*cos(theta),r*sin(theta),z])$
ishow(Eq:Q([j,i],[])=subst([%1=m],rename(covdiff(Z([j],[]),i))))$
Eq:ic_convert(Eq);
C:apply(matrix,makelist(diff(R,ct_coords[i]),i,dim));
trigsimp(C.transpose(C).ug);
I:transpose(C)[1];
J:transpose(C)[2];
K:transpose(C)[3];
Z:I$ Q:zeromatrix(dim,dim)$ ev(Eq)$ Q;
Z:J$ Q:zeromatrix(dim,dim)$ ev(Eq)$ Q;
Z:K$ Q:zeromatrix(dim,dim)$ ev(Eq)$ Q;
Viktor
-----Original Message-----
Sent: Monday, July 3, 2017 7:15 AM
Subject: Re: [Maxima-discuss] Tensor question
Hi Viktor,
Thank you for your response, but I have a hard time understanding your answer.
Given the Position Vector R, I find the covariant basis vectors as follows: diff(R,ct_coords[1]),
diff(R,ct_coords[2]) and diff(R,ct_coords[3]).
On the other hand, you find the covariant basis vectors as follows: makelist(diff(R[1],ct_coords[i]),i,dim),
makelist(diff(R[2],ct_coords[i]),i,dim) and makelist(diff(R[3],ct_coords[i]),i,dim).
One seems to be the transpose of the other (if one puts all three vectors in a matrix).
I still claim that my way is the correct way as it appears in Differential Geometry books, hence my problem with the
Covariant Derivative still remains.
Thanks,
Daniel
Daniel,
Please forgive me, I have not noticed your question earlier.
Would the following answer your question?
load(itensor)$
load(ctensor)$
ct_coords:[rho,theta,z]$
dim:length(ct_coords)$
ldisplay(R:[rho*cos(theta),rho*sin(theta),z])$
ct_coordsys(append(R,[ct_coords]),all)$
ishow(Eq:Q([j,i],[])=subst([%1=m],rename(covdiff(Z([j],[]),i))))$
Eq:ic_convert(Eq);
ldisplay(Z:makelist(diff(R[1],ct_coords[i]),i,3))$
Q:zeromatrix(dim,dim)$
ev(Eq)$
Q;
ldisplay(Z:makelist(diff(R[2],ct_coords[i]),i,3))$
Q:zeromatrix(dim,dim)$
ev(Eq)$
Q;
ldisplay(Z:makelist(diff(R[3],ct_coords[i]),i,3))$
Q:zeromatrix(dim,dim)$
ev(Eq)$
Q;
Viktor
Sent: Monday, July 3, 2017 7:15 AM
Subject: Re: [Maxima-discuss] Tensor question
Hi Viktor,
Thank you for your response, but I have a hard time understanding your answer.
Given the Position Vector R, I find the covariant basis vectors as follows: diff(R,ct_coords[1]),
diff(R,ct_coords[2]) and diff(R,ct_coords[3]).
On the other hand, you find the covariant basis vectors as follows: makelist(diff(R[1],ct_coords[i]),i,dim),
makelist(diff(R[2],ct_coords[i]),i,dim) and makelist(diff(R[3],ct_coords[i]),i,dim).
One seems to be the transpose of the other (if one puts all three vectors in a matrix).
I still claim that my way is the correct way as it appears in Differential Geometry books, hence my problem with the
Covariant Derivative still remains.
Thanks,
Daniel
Daniel,
Please forgive me, I have not noticed your question earlier.
Would the following answer your question?
load(itensor)$
load(ctensor)$
ct_coords:[rho,theta,z]$
dim:length(ct_coords)$
ldisplay(R:[rho*cos(theta),rho*sin(theta),z])$
ct_coordsys(append(R,[ct_coords]),all)$
ishow(Eq:Q([j,i],[])=subst([%1=m],rename(covdiff(Z([j],[]),i))))$
Eq:ic_convert(Eq);
ldisplay(Z:makelist(diff(R[1],ct_coords[i]),i,3))$
Q:zeromatrix(dim,dim)$
ev(Eq)$
Q;
ldisplay(Z:makelist(diff(R[2],ct_coords[i]),i,3))$
Q:zeromatrix(dim,dim)$
ev(Eq)$
Q;
ldisplay(Z:makelist(diff(R[3],ct_coords[i]),i,3))$
Q:zeromatrix(dim,dim)$
ev(Eq)$
Q;
Viktor
-----Original Message-----
Sent: Sunday, June 25, 2017 2:45 AM
Subject: Re: [Maxima-discuss] Tensor question
Hi All,
Could somebody help here?
Thanks,
Daniel
Hi All,
Should the covariant derivative of a (covariant or contravariant) basis vector be zero?
load(itensor)$
load(ctensor)$
ct_coords:[rho,theta,z]$
dim:length(ct_coords)$
ldisplay(R:[rho*cos(theta),rho*sin(theta),z])$
ct_coordsys(append(R,[ct_coords]),all)$
ishow(Eq:Q([j,i],[])=subst([%1=m],rename(covdiff(Z([j],[]),i))))$
Eq:ic_convert(Eq);
ldisplay(Z:diff(R,ct_coords[1]))$
Q:zeromatrix(dim,dim)$
ev(Eq)$
ldisplay(Q:factor(trigsimp(Q)))$
I think that this code calculates the covariant derivative of one of the covariant basis vectors in cylindrical
coordinates, but I don't get zero.
Please help.
Daniel Volinski.
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot_______________________________________________
Maxima-discuss mailing list
https://lists.sourceforge.net/lists/listinfo/maxima-discuss
Sent: Sunday, June 25, 2017 2:45 AM
Subject: Re: [Maxima-discuss] Tensor question
Hi All,
Could somebody help here?
Thanks,
Daniel
Hi All,
Should the covariant derivative of a (covariant or contravariant) basis vector be zero?
load(itensor)$
load(ctensor)$
ct_coords:[rho,theta,z]$
dim:length(ct_coords)$
ldisplay(R:[rho*cos(theta),rho*sin(theta),z])$
ct_coordsys(append(R,[ct_coords]),all)$
ishow(Eq:Q([j,i],[])=subst([%1=m],rename(covdiff(Z([j],[]),i))))$
Eq:ic_convert(Eq);
ldisplay(Z:diff(R,ct_coords[1]))$
Q:zeromatrix(dim,dim)$
ev(Eq)$
ldisplay(Q:factor(trigsimp(Q)))$
I think that this code calculates the covariant derivative of one of the covariant basis vectors in cylindrical
coordinates, but I don't get zero.
Please help.
Daniel Volinski.
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot_______________________________________________
Maxima-discuss mailing list
https://lists.sourceforge.net/lists/listinfo/maxima-discuss