让我们考虑一下我在previous question中提到的以下功能:
rot[i](f) := sum(sum(sum(sum(
G[r,i]*G[q,j]*W[i,j,k]*('diff(f[k], y[q]) + sum(K[k,q,m]*f[m], m, 1, N)),
r, 1, N),
j, 1, N),
k, 1, N),
q, 1, N) $
这种方式通常有用,但如果原始表达式f
已包含符号r
,j
等等,该怎么办?在这种情况下,它没有做正确的事情。到目前为止,我发现的唯一解决方案是为这些符号使用一些唯一的前缀,或者至少用下划线开头:r
→__r
,j
→__j
。但我希望应该有一个更惯用的解决方案。有没有什么?
答案 0 :(得分:1)
不幸的是,在Maxima中,所有符号都是有效的全局符号 - 某些表达式中的x
与x
中的f(x) := ...
符号相同。因此,没有通用的方法来确保将函数参数与同名的其他符号区分开来。有些函数试图将它们的参数设置为局部,例如,sum
特别处理索引变量,但integrate
没有。
我试图制作一个词法块结构,这样可以区分同名的符号。它被称为blex
,我认为网络搜索应该找到它,如果没有,请告诉我,我会发布一个链接。