Wolfram mathematica Mathematica:关于表达式求值的问题
有一个关于mathgroup的问题,当我看着它的时候,我注意到了这件事,我不明白为什么,我想这里的一些专家会知道的 执行Dt[x[1]] 它给出了零,因为在计算x[1]时,剩下的最后一个值是1,从下面的TracePrint可以看出。因此“1”是Dt所看到的,所以Dt[1]是0 因此Dt[x[1]]为零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
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海报,更基本的)?到目前为止,这里的大多数新用户都在做他们的家庭作业,只有在他们自己尝试了一些东西之后才提出问题,我认为这部分是因为我们不太在表面上——人们需要一些动力来找到我们。如果一大群人在很短的时间内提出了非常基本的问题,这对我们的社区来说可能是一个沉重的负担——或者说我完全离开了?