2014 dxdy logo

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

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




 
 [Mathematica 8.0] Странное вычисление
Сообщение10.02.2014, 22:58 
Вот я пишу:
Код:
Unprotect[NonCommutativeMultiply];
NonCommutativeMultiply[as___, x_?NumericQ, bs___] := g[x, {as}, {bs}]
Protect[NonCommutativeMultiply];
и потом предлагаю вычислить хотя бы просто a ** b — а в результате это вычисляется и вычисляется в себя бесконечно, пока позволено. Не пойму поведение.

Я убрал все другие определения и перезапустил kernel, если что.

 
 
 
 Posted automatically
Сообщение11.02.2014, 00:00 
Аватара пользователя
 i  Тема перемещена из форума «Программирование» в форум «Околонаучный софт»

 
 
 
 Re: [Mathematica 8.0] Странное вычисление
Сообщение11.02.2014, 11:32 
Если убрать атрибут Flat, чудеса прекращаются. Но всё равно непонятно, как он с этим связан.

 
 
 
 Re: [Mathematica 8.0] Странное вычисление
Сообщение20.03.2014, 22:32 
Код:
Unprotect[NonCommutativeMultiply];
NonCommutativeMultiply[as__, x_?NumericQ, bs___] := g[x, {as}, {bs}]
NonCommutativeMultiply[as___, x_?NumericQ, bs__] := g[x, {as}, {bs}]
Protect[NonCommutativeMultiply];


Иначе см.
Код:
Trace[a**b]

 
 
 
 Re: [Mathematica 8.0] Странное вычисление
Сообщение20.03.2014, 23:28 
Спасибо, если это работает, хотя я уже просто снял все атрибуты с NonCommutativeMultiply и написал всё, чем они были полезны, через шаблоны. :-)

 
 
 [ Сообщений: 5 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group