2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Абсолютно симметричный тензор
Сообщение07.11.2011, 13:17 
Заслуженный участник
Аватара пользователя


30/10/10
1481
Ереван(3-й участок)
Пытаюсь в математике построить тензор ранга $m$ в размерности $n$ так, чтобы он был симметричен при перестановке любых двух индексов и зависел от минимального кол-ва параметров.
Мой метод(недоработанный):
Код:
m=2; //
n=4; // Задаем начальные значения
range = index = {};
For[i = 1, i <= m, i++,
index = Append[index, Subscript[j, i]]; //генерируем список индексов
range = Append[range, {Subscript[j, i], 1, n}]  //генерируем итераторы (не работает)


Т.е. оно работает, и даже присваевает range значение
Код:
{{Subscript[j, 1], 1, 4}, {Subscript[j, 2], 1, 4}}

Но далее задумывалось сделать так:
Код:
A = Table[Apply[a, Sort[index]], range]// сортируем индексы(в порядке возрастания, но это не суть) и присваевам элементу с индексом  {i1,i2...im} значение элемента с индексом  Sort[{i1,i2...im}]

Но для функции Table нужно перечислять параметры через запятую а у меня range является матрицей. Что делать?

И второй вопрос(чтобы не открывать новую тему):
сколько независимых компонент у абсолютно симметричного тензора ранга $m$ в размерности $n$?

 Профиль  
                  
 
 Re: Абсолютно симметричный тензор
Сообщение07.11.2011, 14:54 
Заслуженный участник


25/01/11
416
Урюпинск
Bulinator в сообщении #500542 писал(а):
И второй вопрос(чтобы не открывать новую тему):
сколько независимых компонент у абсолютно симметричного тензора ранга $m$ в размерности $n$?
$C_{n+m-1}^m$

 Профиль  
                  
 
 Re: Абсолютно симметричный тензор
Сообщение07.11.2011, 15:45 
Заслуженный участник
Аватара пользователя


30/10/10
1481
Ереван(3-й участок)
espe в сообщении #500566 писал(а):
$C_{n+m-1}^m$

Спасибо!

-- Пн ноя 07, 2011 14:55:32 --

Update:
Где-то вначале определяю функцию:
Код:
F[list_] := a @@ Sort[list];

А далее при создании таблицы пишу так:
Код:
A:=Table @@ Join[{F @@ {index}}, range])// В аргументе Join генерируется список параметров функции Table

Получается, почему-то, просто-матрица:
Код:
{{a[1, 1], a[1, 2], a[1, 3], a[1, 4]}, {a[2, 1], a[2, 2], a[2, 3],
  a[2, 4]}, {a[3, 1], a[3, 2], a[3, 3], a[3, 4]}, {a[4, 1], a[4, 2],
  a[4, 3], a[4, 4]}}

:(((

 Профиль  
                  
 
 Re: Абсолютно симметричный тензор
Сообщение07.11.2011, 16:38 
Заслуженный участник


27/04/09
28128
Bulinator в сообщении #500542 писал(а):
Но для функции Table нужно перечислять параметры через запятую а у меня range является матрицей. Что делать?
Есть выход! Надо сначала заменить голову выражения с List на Sequence, а потом только подставить на место итераторов в Table. Sequence-выражение «разворачивается» в параметры, куда бы вы его не засунули.
Чтобы это сделать, вам надо вместо range подставлять Sequence @@ range.

 Профиль  
                  
 
 Re: Абсолютно симметричный тензор
Сообщение07.11.2011, 16:39 
Заслуженный участник
Аватара пользователя


30/10/10
1481
Ереван(3-й участок)
arseniiv, спасибо за ответ. Но я уже это сделал и возникла другая проблема(см. сообщение выше).

-- Пн ноя 07, 2011 15:44:02 --

Нашел дебильный солюшн, но работает(притом только один раз до перезагрузки ядра):
Код:
m = 2;
n=4;
index = {};
range = {};
For[i = 1, i <= m, i++,
range = Append[range, {Subscript[j, i], 1, n}];
index = Append[index, Subscript[j, i]]]
A = Apply[Table, Join[{F @@ {index}}, range]];
F[list_] := a @@ Sort[list];

Проделав то-же самое во второй раз, получим неправильный результат:)))) Можно конечно в начало вставить
Код:
Clear[F]
но как-то стремно....

 Профиль  
                  
 
 Re: Абсолютно симметричный тензор
Сообщение07.11.2011, 16:55 
Заслуженный участник


27/04/09
28128
Может, всё это засунуть в Block? Тогда F каждый раз будет локальной, и её очищать не надо будет.

Я пока что ничего не понял, :oops: потому только такое пространное могу.

 Профиль  
                  
 
 Re: Абсолютно симметричный тензор
Сообщение07.11.2011, 17:05 
Заслуженный участник
Аватара пользователя


30/10/10
1481
Ереван(3-й участок)
arseniiv в сообщении #500610 писал(а):
Я пока что ничего не понял

Упрощенный код:
Код:
m = 2;
n=4;
Clear[F];
index = {};
range = {};
For[i = 1, i <= m, i++,
range = Append[range, {Subscript[j, i], 1, n}];
index = Append[index, Subscript[j, i]]]
A = Apply[Table, Join[{F[index]}, range]];
F[list_] := a @@ Sort[list];

Если не очищать F, то Математика эволюирует выражение F[index], перед тем как вставить в Table. Однако на тот момент index={j_1,j_2} а не численным значениям, так что Sort в F не сортирует значения и вместо F[index] вставляется просто a[j_1,j_2] и лишь потом индексам задаются их значения. А ежели функция F не определена, Математика оставляет заместо нее просто F[j_1,j_2], и вставляет правильные значения после ее определения.

 Профиль  
                  
 
 Re: Абсолютно симметричный тензор
Сообщение07.11.2011, 17:11 
Заслуженный участник


27/04/09
28128
Тогда, к примеру, вместо A = напишите A :=. Кажется, должно такое отложенное вычисление именно здесь пригодиться тоже.

-- Пн ноя 07, 2011 20:12:21 --

Действительно, по смыслу := тут всё-таки ближе.

 Профиль  
                  
 
 Re: Абсолютно симметричный тензор
Сообщение07.11.2011, 17:15 
Заслуженный участник
Аватара пользователя


30/10/10
1481
Ереван(3-й участок)
arseniiv в сообщении #500623 писал(а):
Действительно, по смыслу := тут всё-таки ближе.

Ан-нет... Не работает. :))) И знаете почему? Проследите очередь выполнения операций.

 Профиль  
                  
 
 Re: Абсолютно симметричный тензор
Сообщение07.11.2011, 18:25 
Заслуженный участник
Аватара пользователя


30/10/10
1481
Ереван(3-й участок)
Пишу потомкам. Если кому-нибудь понадобится:

Код:
SymTenz[srank_, sdym_, sname_: a] :=
Block[{index = {}, range = {},Flongname,i,A},
  For[i = 1, i <= srank, i++,
   range = Append[range, {Subscript[j, i], 1, sdym}];
   index = Append[index, Subscript[j, i]]];
  A = Table @@ Join[{Flongname[index]}, range];
  Flongname[list_] := sname @@ Sort[list];
  Return[A]]

Параметры:
srank- ранг тензора
sdym- размерность пространства
sname- имя переменной(по умолчанию- a)

 Профиль  
                  
 
 Re: Абсолютно симметричный тензор
Сообщение07.11.2011, 18:39 
Заслуженный участник


27/04/09
28128

(Стрянно.)

Bulinator в сообщении #500628 писал(а):
Проследите очередь выполнения операций.
Ну так с := очередь ведь не важна! Определим так, а потом эдак или наоборот — не важно, ведь := присваивает без немедленного вычисления. Странно, что не сработало. :roll:

Bulinator в сообщении #500663 писал(а):
sdym
От слова dymension, да? :D

 Профиль  
                  
 
 Re: Абсолютно симметричный тензор
Сообщение07.11.2011, 19:19 
Заслуженный участник
Аватара пользователя


30/10/10
1481
Ереван(3-й участок)

(Оффтоп)

arseniiv в сообщении #500668 писал(а):
От слова dymension, да?

Нет :))))))


-- Пн ноя 07, 2011 18:20:34 --

arseniiv в сообщении #500668 писал(а):
ведь := присваивает без немедленного вычисления.

Но потом же, когда это вычисление уже начинается, порядок выполнения важен :))))

 Профиль  
                  
 
 Re: Абсолютно симметричный тензор
Сообщение07.11.2011, 19:27 
Заслуженный участник


27/04/09
28128
Так ведь когда оно начнётся, всё уже определено! Или я недоглядел.

 Профиль  
                  
 
 Re: Абсолютно симметричный тензор
Сообщение07.11.2011, 19:31 
Заслуженный участник
Аватара пользователя


30/10/10
1481
Ереван(3-й участок)
arseniiv
прямой эксперимент противоречит Вашей теории. Просто откройте Математику и скопируйте код.
И прикажите установить на мессере фотоаппаратуру если Вам слова моего мало(с)... :)

 Профиль  
                  
 
 Re: Абсолютно симметричный тензор
Сообщение07.11.2011, 19:33 
Заслуженный участник


27/04/09
28128

(Оффтоп)

Пока не могу. :roll:

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group