Maple 中索引变量的导数
Derivatives of indexed variables in Maple
考虑 N 个变量,x_1,x_2,...,x_N。给定 i < N 且 j < N,它成立 dx_i/dx_j=delta_i,j,即当 i=j 时导数为 1,否则为 0。
虽然 diff(x[i],x[i]) returns 1,不幸的是 diff(x[i],x[j]) returns 0 而不是 delta_i,j 和 sum(diff(x[i],x[j]),j=1..N) returns 0 而不是 1.
有没有办法在不指定 N 值的情况下得到正确的导数? IE。一种可用于对任何 N.
成立的计算的方法
常规 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]
考虑 N 个变量,x_1,x_2,...,x_N。给定 i < N 且 j < N,它成立 dx_i/dx_j=delta_i,j,即当 i=j 时导数为 1,否则为 0。
虽然 diff(x[i],x[i]) returns 1,不幸的是 diff(x[i],x[j]) returns 0 而不是 delta_i,j 和 sum(diff(x[i],x[j]),j=1..N) returns 0 而不是 1.
有没有办法在不指定 N 值的情况下得到正确的导数? IE。一种可用于对任何 N.
成立的计算的方法常规 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]