我正在尝试使用Maxima计算衍生物,如分析反向传播。所以我写道:
declare(N,[scalar,integer]);
declare(i,[scalar,integer]);
declare(j,[scalar,integer]);
declare(m,[scalar,integer]);
declare(n,[scalar,integer]);
assume(N>10);
assume(i<=N,j<=N,m<=N,n<=N);
x1(i):=f(sum(w[i,j]*x0[j],j,1,N));
现在我正在尝试评估:
diff(x1(i),w[i,m])
并且它返回零,而它应该返回
f(...) * x0[m]
此外,我注意到x1(j)
返回
sum_j=1^N w[j,j] * x0[j]
虽然我希望它将内部索引从j
更改为其他字母,例如j1
并返回
sum_j1=1^N w[j,j1] * x0[j1]
有没有办法让maxima在这方面稍微“更聪明”,即使它计算某些indeces的衍生物,并在与输入发生冲突时自动更改字母?
答案 0 :(得分:1)
关于像diff(x1(i),w[i,m])
这样的内容,遗憾的是Maxima无法处理它。我在区分索引变量方面取得了一些进展,但它只适用于一个索引,而不是两个索引,就像你在这里一样。如果我有时间,我会努力将其扩展到两个指数,但简短的回答是,我担心,它无法完成。