Наложение предположений о координатах в пакете Maple DifferentialGeometry

Есть ли у кого-нибудь опыт в создании предположений о координатах в пакете дифференциальной геометрии Maple?

Моя проблема в том, что я пытаюсь вычислить некоторые операторы Лапласа-Бельтрами. В Maple есть эта команда, но вывод иногда почти нечитаем из-за множества csgn функции. Я попытался создать простой пример: настройка фрейма и римановой метрики, например

DGsetup([x], R);

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

а затем попытаться оценить

Laplacian(h, f(x));

возвращается

( Икс 2 + 1 ) 2 с с г н ( Икс 2 + 1 ) ( ( д 2 д Икс 2 ф ( Икс ) ) Икс 2 + 2 ( д д Икс ф ( Икс ) ) Икс + д 2 д Икс 2 ф ( Икс ) )

Очевидно с с г н ( Икс 2 + 1 ) должно быть 1 но Maple не считает Икс как реальная переменная. В этом примере это неплохо, но в более высоких измерениях эта проблема делает вычисления совершенно бесполезными. Но, бег

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

возвращается 0 . Кроме того, я не могу использовать assumeкоординаты, так как они защищены.

На странице справки Maple на DGconjugate упоминается, что переменные координат считаются реальными, но, вероятно, это только так для целей этой команды.

У кого-нибудь была похожая проблема, и вы нашли удовлетворительный обходной путь?

Вы можете попробовать задать свой вопрос здесь

Ответы (2)

Вы все еще можете использовать это предположение для результата команды Laplacian. simplfyВы можете использовать его , например, при вызове .

Например,

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;

( Икс 2 + 1 ) ( ( д 2 д Икс 2 ф ( Икс ) ) Икс 2 + 2 ( д д Икс ф ( Икс ) ) Икс + д 2 д Икс 2 ф ( Икс ) )

Это будет проще, чем вычислять все подстановки вручную.

Спасибо за оба ответа - я думаю, что в данном конкретном случае этот ответ более аккуратный (возможно, я должен был попробовать сам, но не подумал об этом), но первый работает отлично.

Я часто использую этот пакет и не знаю, как решить эту проблему, используя функциональность Дифференциальнаягеометрия package, но всегда можно удалить эти выражения на специальной основе, используя процедуру subs():

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)));

Это дает более чистый вывод

( Икс 2 + 1 ) ( ( д 2 д Икс 2 ф ( Икс ) ) Икс 2 + 2 ( д д Икс ф ( Икс ) ) Икс + д 2 д Икс 2 ф ( Икс ) ) .