mathematica输出中的"$"符号

Mat*_*etz 5 math wolfram-mathematica

我对以下代码有些困难:

Lagrange[list_] := 
  Module[{points = list, length, k, j, m, x, g}, 
    length = Length[points]; 
    k = length - 1; 
    f = Sum[points[[j + 1,2]]*Product[If[j != m, (x - points[[m + 1,1]])/
          (points[[j + 1,1]] - points[[m + 1,1]]), 1], {m, 0, k}], {j, 0, k}]; 
    g = FullSimplify[Expand[f]]; 
    Return[f]]
Run Code Online (Sandbox Code Playgroud)

我得到的输出是:

Out[101]= 0. -1.85698 (-1.5+x$26810) (-0.75+x$26810) (0. +x$26810) (0.75+x$26810)
         +0.490717 (-1.5+x$26810) (-0.75+x$26810) (0. +x$26810) (1.5 +x$26810)
         -0.490717 (-1.5+x$26810) (0. +x$26810) (0.75 +x$26810) (1.5 +x$26810)
         +1.85698 (-0.75+x$26810) (0. +x$26810) (0.75 +x$26810) (1.5 +x$26810)
Run Code Online (Sandbox Code Playgroud)

我关注的是这些"$"符号.我不知道他们的意思,我找不到他们的文档,他们正在阻止这个多项式的绘图.

Sim*_*mon 6

$在输出是从由的词法作用域生成的唯一变量Module(见的更多信息部分数学/ REF /模块).这就是为什么我让我的LagrangePoly函数接受多项式所要符号的原因.我用过LagrangePoly[list_, var_:x],默认为全局符号x.

问题的一个简单例子是

In[1]:= Module[{x}, x]    
Out[1]= x$583
Run Code Online (Sandbox Code Playgroud)

"local"变量中的数字x$nnn来自全局$ModuleNumber.

如果您不理解这一点,那么您应该阅读教程Blocks与Modules相比较.

  • @Matthew:如果要将此代码移动到包中,您可能希望灵活地选择多项式中使用的符号.所以符号`x`应该像我建议的那样传递给函数.你在`Module`中也不需要`j`或`m`,因为它们已经被sum和product限定.最后,为什么要计算`g`,但在代码中返回`f`? (2认同)