I think that there is more serious restriction (it is described in the
help) here than that asked by Dmitry.
Consider
expr:a([i],[])*a([],[i])
and try
diff(expr,a([i],[]))
V
> Well, yes. But try 1 - exp() and notice how rename fails to work properly. Yes, diff() works a little more sensibly for exp(), but that I think is mostly a happy accident.
>
> One problem with dealing with tensor expressions as function arguments is that we really don't know what the function does and what it returns. In particular, the syntax yields no information about the function's return type (scalar, tensor, etc.)
>
> Just to be clear, I'm not saying that the function syntax will forever remain outside the realm of expressions that itensor can deal with, just advising caution for now. It is a topic that is on my long-term "to do" list for itensor.
>
>
> Viktor
>
>
>
>
> -----Original Message-----
> From: maxima-bounces at math.utexas.edu [mailto:maxima-bounces at math.utexas.edu] On Behalf Of Dmitry Shkirmanov
> Sent: Wednesday, June 06, 2012 5:20 AM
> To: maxima at math.utexas.edu
> Subject: Re: [Maxima] Bug in the itensor package?
>
> Thanks. But it seems that the itensor can deal with tensor expressions that appear as an argument of the exponential function. May be there is possibility to expand this functionality to the error function(and other functions)? It would be very useful.
>
>
> (%i1) load(itensor)$
> ...
> ...
> (%i2) expr: exp( a([i],[])*b([],[i]));
> b([], [i]) a([i], [])
> (%o2) %e
> (%i3) expr: rename(expr);
> b([], [%1]) a([%1], [])
> (%o3) %e
> (%i4) derivative: diff(expr, a([i],[]));
> b([], [%1]) a([%1], [])
> (%o4) b([], [%1]) %e kdelta([%1], [i])
> (%i5) res: contract(%);
> b([], [%1]) a([%1], [])
> (%o5) b([], [i]) %e
>
>
>
>
> Not really a bug per se, but a limitation. The itensor package generallycannot deal with tensor expressions that appear as function arguments.Function arguments are treated by itensor as opaque, and are excluded fromitensor operations, which is why contract and rename were ineffective. Onthe other hand, diff applies its standard rules to the expression with noregard to the fact that some of the terms it is manipulating representindexed objects, and the result is an unpredictable mess.
>
>
>
> Viktor
>
>
> -----Original Message-----
> From: maxima-bounces at math.utexas.edu<http://www.math.utexas.edu/mailman/listinfo/maxima> [mailto:maxima-bounces at math.utexas.edu<http://www.math.utexas.edu/mailman/listinfo/maxima> ]
> On Behalf Of Dmitry Shkirmanov
> Sent: Tuesday, June 05, 2012 8:56 AM
> To: maxima at math.utexas.edu<http://www.math.utexas.edu/mailman/listinfo/maxima>
> Subject: Bug in the itensor package?
>
> Hello,list.
>
> Maxima 5.27.0 http://maxima.sourceforge.net
> using Lisp CLISP 2.48 (2009-07-28)
> Distributed under the GNU Public License. See the file COPYING.
> Dedicated to the memory of William Schelter.
> The function bug_report() provides bug reporting information.
> (%i1) load(itensor)$
> ...
> ...
> (%i2) expr: erfc(-x([i],[])*y([],[i]))$
> (%i3) expr: contract(expr)$
> (%i4) expr: rename(expr);
> (%o4) 2 - erfc(y([], [i]) x([i], []))
> (%i5) diff(expr, y([],[i]));
> 2 2
> - y ([], [i]) x ([i], [])
> 2 %e x([i], []) kdelta([i], [i])
> (%o5) ---------------------------------------------------------
> sqrt(%pi)
> (%i6)
> As it can be seen from this example, the rename() function does not work
> correctly. Next, it seems, that the diff() function
> does not work correctly too. Is it bug?
>
>
>
>
> _______________________________________________
> Maxima mailing list
> Maxima at math.utexas.edu
> http://www.math.utexas.edu/mailman/listinfo/maxima
>