1

让我们考虑一下我在上一个问题中已经提到的以下功能:

   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__rj__j。但我希望应该有一个更惯用的解决方案。有没有什么?

4

1 回答 1

1

不幸的是,在 Maxima 中,所有符号实际上都是全局的—— xin some 表达式与 in 是相同的x符号f(x) := ...。因此,没有通用的方法来确保函数参数与其他同名符号区分开来。一些函数试图使它们的参数局部化,例如,sum特别对待索引变量,但integrate没有。

我尝试制作一个词法块结构,它可以区分同名的符号。它被称为blex,我认为网络搜索应该找到它,如果没有,请告诉我,我会发布一个链接。

于 2015-07-30T17:11:47.083 回答