我是枫的绝对初学者,并且有理解以下内容的问题:
以下不起作用:
f:=(x)->x^2;
df_wrong:=(x)->diff(f(x),x);
由于df_wrong(1);
总是产生以下"错误,(在df_wrong中)无效输入:diff收到1,这对第二个参数无效
&#34 ;.过了一段时间后,我发现以下内容解决了这个问题:
df_correct := unapply(diff(f(x), x), x);
自df_correct(1);
以来。任何人都可以解释一下使用df_wrong
的问题是什么问题,以及为什么unapply()
可以解决这些问题?
我已经检查了unapply()
的Maple解释,但对我来说它仍然不太清楚。
提前致谢!
答案 0 :(得分:2)
在您的错误版本中,您的函数使用x
作为函数运算符。当您输入1
时,df_wrong(1)
被解析为diff(f(1),1)
,这是无意义的:您无法区分wrt。一个常数。
unapply
功能的好处是它返回一个功能操作符。这意味着您可以操作然后将其用作运算符。这与操作员分配命令x -> ...
形成对比,后者使x
成为整个右手边的操作员。