Производные индексированных переменных в Maple

Рассмотрим N переменных, x_1, x_2,..., x_N. При i ‹ N и j ‹ N выполняется dx_i/dx_j=delta_i,j, т. е. производная равна 1, когда i=j, и 0 в противном случае.

В то время как diff(x[i],x[i]) возвращает 1, к сожалению, diff(x[i],x[j]) возвращает 0, а не delta_i,j и sum(diff(x[i],x[j] ),j=1..N) возвращает 0, а не 1.

Есть ли способ получить правильную производную без указания значения N? т.е. способ, который можно использовать для вычислений, справедливых для любого N.


person R_B    schedule 04.04.2018    source источник


Ответы (1)


Обычная команда diff() обрабатывает аргументы буквально. Однако вы можете попробовать пакет Physics и рассматривать метрику как дельту Кронекера:

restart;
with( Physics ):
Setup( metric = Euclidean ):
Define( x ):

f := diff( Sum( a[i] * x[i], i=1..N ), x[j] );
Simplify( eval( f, g_=KroneckerDelta ) ) assuming j >= 1 and j <= N; # returns a[j]
person maplemathmatt    schedule 04.04.2018