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)
谢谢
表达方式
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与一个参数如何解释该参数有关.
| 归档时间: |
|
| 查看次数: |
362 次 |
| 最近记录: |