Maple

时间:2018-04-04 14:19:01

标签: variables indexing maple differentiation

考虑N个变量,x_1,x_2,...,x_N。鉴于i&lt; N和j < N,它保持dx_i / dx_j = delta_i,j,即当i = j时导数为1,否则为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的计算的方法。

1 个答案:

答案 0 :(得分:0)

常规diff()命令以文字方式处理参数。但是,您可以尝试Physics包,并将该指标视为Kronecker delta:

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]