Wolfram mathematica Mathematica:关于表达式求值的问题

Wolfram mathematica Mathematica:关于表达式求值的问题,wolfram-mathematica,Wolfram Mathematica,有一个关于mathgroup的问题,当我看着它的时候,我注意到了这件事,我不明白为什么,我想这里的一些专家会知道的 执行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[8

有一个关于mathgroup的问题,当我看着它的时候,我注意到了这件事,我不明白为什么,我想这里的一些专家会知道的

执行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
这对我来说是有意义的,直到我键入x[1],然后返回x[1]

In[84]:=x[1] Out[84]=x[1]

但是x[1]返回x[1]对我来说也是有意义的,因为x[1]没有值,所以它应该返回未计算的值

所以,我的问题是,为什么在上面的调用过程中,x[1]的计算结果一直是“1”,但在顶级笔记本界面上,它的计算结果却不是1

In[87]:= Evaluate[ x[1] ]
Out[87]= x[1]
谢谢你的表情

x[1]
不计算为1-它是一个具有未定义值的索引变量。问题是,当使用带有1个参数的
Dt
形式时,
x
被视为一个函数,
1
是它的参数,得到0。当你考虑

时,这一点就更清楚了。
In[1]:= Dt[x[y]]

Out[1]= Dt[y] Derivative[1][x][y]
如果您现在使用

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

Out[2]= 1
您将得到
1
,因为现在您将
x[1]
视为变量进行区分。或者

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

Out[3]= 2 x[1]

您被计算打印输出弄糊涂了,因为事实上,在计算表达式时,所有部分通常都会计算-但是(在没有任何
x
规则的情况下,
x[1]
也会在
Dt
中计算回自身。你所观察到的是关于
Dt
如何用一个参数解释这个参数。

@Nasser我在我的帖子顶部添加了一个说明(甚至在阅读你的评论之前)Dt[x[y]](对于一般
y
,它不会返回零)。现在,对于
Dt[x[1]]
,它被计算为
x'[1]Dt[1]
,但是
Dt[1]
为零,因为
1
是一个常数,因此整体结果为零。再一次:
x[1]
对自身进行了评估,但随后
D[x[1]]
进行了评估,结果为0。顺便说一句,我只想说Stackoverflow论坛有多棒,在mathgroup上提出这个问题的人在2-3天内不会得到正确答案,但在这里,专家们在几分钟内就回答了!我在Mathgroup上看到并回答了这个问题,但我认为我做得不好:)@Nasser虽然Mathgroup有它的优势,是一个优秀的论坛,但我同意这样做在许多方面提供了更高级的功能,并且周转速度更快。但我认为,真正让它伟大的是,将所有工具结合在一起,它促进了另一个层次的协作,因此这里的每个答案实际上都是一个协作产品,而在更传统的论坛上,你有一个个人的集合(通常是重复的,有时是冲突的)回答。@Nasser我认为现在的SO Mathematica论坛是相当健康的。它正在迅速进化,但不会太快,因此我们有一个生物生长,而不是一个混乱的扩张。大量问题非常基本的学生涌入,目前可能弊大于利,因为这可能会降低问题质量,分散人们的注意力。我只是顺其自然,一旦社区和回答的问题越来越多,更多的问题可以得到有效处理。那些真正需要我们的人,会像你一样找到我们。我的两分钱。@Sjoerd我认为你在Mathgroup上这么做很好,但是你确定我们这里的SO社区已经准备好处理一些快速增长的基本问题了吗(我的意思不是Mathgroup海报,更基本的)?到目前为止,这里的大多数新用户都在做他们的家庭作业,只有在他们自己尝试了一些东西之后才提出问题,我认为这部分是因为我们不太在表面上——人们需要一些动力来找到我们。如果一大群人在很短的时间内提出了非常基本的问题,这对我们的社区来说可能是一个沉重的负担——或者说我完全离开了?