Mathematica:关于表达式评估的问题

Nas*_*ser 3 wolfram-mathematica

关于数学小组有一个问题,当我看着它的时候,我注意到了这个,我无法理解为什么,我认为这里的专家会知道.

在做Dt [x [1]]时

它给出零,因为在评估x [1]期间,剩下的最后一个值是1,如下面的TracePrint所示.因此,'1'是Dt看到的,因此Dt [1]为0.

因此Dt [x [1]]为零

In[86]:= TracePrint[ Dt[x[1] ]]

During evaluation of In[86]:=  Dt[x[1]]
During evaluation of In[86]:=   Dt
During evaluation of In[86]:=   x[1]
During evaluation of In[86]:=    x
During evaluation of In[86]:=    1
During evaluation of In[86]:=  0

Out[86]= 0
Run Code Online (Sandbox Code Playgroud)

这对我有意义,直到我输入x [1],然后回到x [1]

在[84]中:= x [1]输出[84] = x [1]

但x [1]返回x [1]也对我有意义,因为x [1]没有值,所以它应该返回未评估.

所以,我的问题是,为什么看起来x [1]在上面的调用期间一直被评估为'1',但在顶级笔记本界面,它没有评估为1?

In[87]:= Evaluate[ x[1] ]
Out[87]= x[1]
Run Code Online (Sandbox Code Playgroud)

谢谢

Leo*_*rin 5

表达方式

x[1]
Run Code Online (Sandbox Code Playgroud)

不能计算为1 -它是未定义值的索引变量.问题是当你使用Dt带有1个参数的形式时,那么它x被认为是一个函数,并且1 - 它的参数,你得到0.当你考虑时,这变得更加清晰

In[1]:= Dt[x[y]]

Out[1]= Dt[y] Derivative[1][x][y]
Run Code Online (Sandbox Code Playgroud)

如果你现在使用

In[2]:= Dt[x[1],x[1]]

Out[2]= 1
Run Code Online (Sandbox Code Playgroud)

你得到了1,因为现在你x[1]将其视为一个变量.要么,

In[3]:= Dt[x[1]^2, x[1]]

Out[3]= 2 x[1]
Run Code Online (Sandbox Code Playgroud)

您对评估打印输出感到困惑,因为在评估表达式时,通常会对所有部分进行评估 - 但是(在任何规则中都没有x),x[1]在内部进行评估也是Dt肯定的.您观察到的Dt与一个参数如何解释该参数有关.

  • @Nasser我认为SO Mathematica论坛的现状非常健康.它正在迅速发展,但不是太快,因此我们有生物增长而不是混乱的扩张.大量涌入的学生有非常基本的问题,目前可能带来更多弊大于利,因为它可能会降低问题质量水平并分散人们的注意力.我只是随心所欲,一旦社区和回答问题的数量变大,就可以有效地处理更多问题.那些真正需要我们的人会像你一样找到我们.我的两分钱. (5认同)
  • @Sjoerd我认为你在Mathgroup上做得很好,但是你确定我们这里的SO社区已经准备好处理一些基本问题的快速增长(我的意思不是Mathgroup海报,更基本的)?到目前为止,大多数新用户一直在做功课,只是在他们自己尝试了一些东西之后才会问,而我认为部分原因在于我们不是表面上的 - 人们需要一些动力来找到我们.如果有很多非常基本问题的人在很短的时间内到来,这对我们的社区来说可能是一个沉重的负担 - 或者我是完全离开的? (2认同)