Imponer suposiciones sobre coordenadas en el paquete Maple DifferentialGeometry

¿Alguien tiene experiencia en hacer suposiciones sobre las coordenadas en el paquete de geometría diferencial de Maple?

Mi problema es que estoy tratando de calcular algunos operadores de Laplace-Beltrami. Maple tiene este comando, pero la salida es casi ilegible a veces debido a los muchos cgn funciones He intentado crear un ejemplo fácil: configurar un marco y una métrica riemanniana como esta

DGsetup([x], R);

h := evalDG(dx &t dx/(x^2+1)^2);

y luego tratando de evaluar

Laplacian(h, f(x));

devoluciones

( X 2 + 1 ) 2 C s gramo norte ( X 2 + 1 ) ( ( d 2 d X 2 F ( X ) ) X 2 + 2 ( d d X F ( X ) ) X + d 2 d X 2 F ( X ) )

Obviamente C s gramo norte ( X 2 + 1 ) debiera ser 1 pero Maple no tiene en cuenta X como una variable real. En este ejemplo no está mal, pero en dimensiones más altas este problema hace que los cálculos sean completamente inútiles. pero corriendo

Laplacian(h, f(x)) assuming x::real;

devoluciones 0 . Además, no puedo usar assumecoordenadas ya que están protegidas.

En la página de ayuda de The Maple en DGconjugate se menciona que las variables de coordenadas se suponen reales, pero probablemente esto sea solo para el propósito de ese comando.

¿Alguien ha tenido un problema similar y encontró una solución satisfactoria?

Puede intentar hacer su pregunta aquí

Respuestas (2)

Aún puede utilizar esa suposición en el resultado del Laplaciancomando. Puede utilizarlo en una llamada a simplfy, por ejemplo.

P.ej,

restart;

with(DifferentialGeometry):
DGsetup([x], R):

h := evalDG(dx &t dx/(x^2+1)^2):

result := Tensor:-Laplacian(h, f(x)):

simplify(result) assuming x::real;

( X 2 + 1 ) ( ( d 2 d X 2 F ( X ) ) X 2 + 2 ( d d X F ( X ) ) X + d 2 d X 2 F ( X ) )

Eso será más simple que tener que averiguar todas las sustituciones para ingresar a mano.

Gracias por ambas respuestas. Creo que en este caso particular, esta respuesta es más clara (quizás debería haberlo intentado pero no lo pensé), pero también la primera funciona perfectamente bien.

Uso este paquete a menudo y no sé cómo resolverlo usando la funcionalidad de Geometría diferencial paquete en sí, pero siempre se pueden eliminar estas expresiones ad hoc usando la subs()rutina:

with(DifferentialGeometry):
DGsetup([x], R);
h := evalDG(dx &t dx/(x^2+1)^2);
subs({sqrt((x^2+1)^2) = x^2 + 1, csgn(x^2+1) = 1}, Tensor:-Laplacian(h, f(x)));

Esto produce una salida más limpia

( X 2 + 1 ) ( ( d 2 d X 2 F ( X ) ) X 2 + 2 ( d d X F ( X ) ) X + d 2 d X 2 F ( X ) ) .