Могу ли я создать «абстрактные» тензоры в Sagemath? - PullRequest
1 голос
/ 09 апреля 2019

Я хотел бы, например, взять внешнюю производную единичной формы без указания коэффициентов.Например, если у меня есть одна форма

a = fdz + gdx + hdy

, как я могу вычислить da в терминах f_x, f_y и т. Д., Не сказав Sage точно, что f, gа ч ч ​​есть?

Я пробовал просматривать разделы дифференциальных форм и тензоров на сайте Sage, но ничего не нашел.

1 Ответ

1 голос
/ 12 апреля 2019

Очевидно, это несколько возможно, но может быть ограничено (текущая полезность).

sage: U = Manifold(3, 'U')
sage: X.<x,y,z> = U.chart()
sage: f = U.diff_form(2, 'f')
sage: f
2-form f on the 3-dimensional differentiable manifold U
sage: f.exterior_derivative()
3-form df on the 3-dimensional differentiable manifold U

Так что, по крайней мере, есть абстрактные.Но

sage: f.components()
...
ValueError: no basis could be found for computing the components in the Coordinate frame (U, (d/dx,d/dy,d/dz))

Однако, я думаю , можно обойти это, определив абстрактную функцию трех переменных.Нет никаких гарантий относительно того, насколько это точно на 100%, потому что связь переменных «диаграммы» с другими символическими переменными там мне не ясна - я не очень много использовал SageManifolds.

sage: pbi = function('pbi', nargs=3)(x,y,z); pbi
pbi(x, y, z)
sage: type(pbi)
<type 'sage.symbolic.expression.Expression'>
sage: f[0,1]=pbi
sage: f
2-form f on the 3-dimensional differentiable manifold U
sage: f.components()
Fully antisymmetric 2-indices components w.r.t. Coordinate frame (U, (d/dx,d/dy,d/dz))
sage: f.display()
f = pbi(x, y, z) dx/\dy
sage: f.exterior_derivative()
3-form df on the 3-dimensional differentiable manifold U
sage: f.exterior_derivative().components()
Fully antisymmetric 3-indices components w.r.t. Coordinate frame (U, (d/dx,d/dy,d/dz))
sage: f.exterior_derivative().display()
df = d(pbi)/dz dx/\dy/\dz
sage: f[1,2]=pbi^2
sage: f.exterior_derivative().display()
df = (2*pbi(x, y, z)*d(pbi)/dx + d(pbi)/dz) dx/\dy/\dz

Если эти расчеты соответствуют вашим ожиданиям, то, я думаю, вы можете их использовать.Быстрый поверхностный взгляд говорит, что, по крайней мере, +/- кажется правильным.

sage: g = U.diff_form(1, 'g')
sage: g[:] = (pbi,pbi^2,pbi^3)
sage: g.display()
g = pbi(x, y, z) dx + pbi(x, y, z)^2 dy + pbi(x, y, z)^3 dz
sage: g.exterior_derivative().display()
dg = (2*pbi(x, y, z)*d(pbi)/dx - d(pbi)/dy) dx/\dy + (3*pbi(x, y, z)^2*d(pbi)/dx - d(pbi)/dz) dx/\dz + (3*pbi(x, y, z)^2*d(pbi)/dy - 2*pbi(x, y, z)*d(pbi)/dz) dy/\dz

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...