Как заключить контракт с Тензором Ранга 2 с Тензором Ранга 1 - PullRequest
0 голосов
/ 04 июля 2019

У меня есть тензор ранга 2, полученный двойным последовательным действием оператора grad на функцию [Psi], поэтому назовем этот тензор [Psi]2.Затем я просто хочу сжать его по двум индексам с вектором f так, чтобы я получил новый вектор, но не могу заставить его работать по какой-то причине, поэтому не уверен, что я делаю неправильный синтаксис.

Я попытался немного изменить код, который работает, когда сжимает тензор ранга 2 с другим тензором ранга 2 для получения скаляра.

Это код, который я пытаюсь:

Sum[f[[i]]*[Psi]2[[i, j]], {i, 1, 3}, {j, 1, 3}]

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

Gddrr = Sum[GG[[i, j]]*rr[[i, j]], {i, 1, 3}, {j, 1, 3}];

, где GG и rr имеют ранг 2. Однако, хотя я ожидаю получить вектор от этого сокращения, вместо этого я получаю скаляр.

[Psi] = R / (8 * пи)

f = {f1, f2, f3}

...