两个参数的mathematica函数可以通过错误的参数列出吗?

时间:2011-10-06 13:33:01

标签: wolfram-mathematica

我可以构建一组按一组值评估的函数值列表,如下面的简单列表

Clear[f, g, simplelist, d, dlist1, dlist2]
f[x_] := Exp[ -x^2]
g[n_] := f[x] (-1)^n
simplelist = g[{0, 1, 2, 3, 4}]

d[n_] := Derivative[n][f][x] 
dlist1 = d[{0, 1, 2, 3, 4}]
dlist2 = {d[0], d[1], d[2], d[3], d[4]}

这给了我

{E^-x^2, -E^-x^2, E^-x^2, -E^-x^2, E^-x^2}

正如所料。

如果我构建了一个隐含有两个参数n和x的函数(d),我认为我尝试使用[n]的值列表来评估它,最终使用用于值的列表进行评估[ x],因为我得到结果的全零,好像是一个常量的导数:

{0, 0, 0, 0, 0}

将此与dlist2值进行比较,我明确表示,但使用笨拙的方法构建列表,并得到:

{E^-x^2, -2 E^-x^2 x, -2 E^-x^2 + 4 E^-x^2 x^2, 12 E^-x^2 x - 8 E^-x^2 x^3, 12 E^-x^2 - 48 E^-x^2 x^2 + 16 E^-x^2 x^4}

这个问题确实有两个部分:

1)有人可以确认这个函数最终使用[x]而不是[n]隐式列出,并且可能会详细说明它是如何工作的。

2)我怀疑我是以一种可能受到打击的方式接近这一点,所以虽然有可能强迫这样的东西做我想做的事情,但我真的只想要一个很好的方法来建立一个值列表

{ h[0], h[1], ... h[n] }

我认为这可以通过for循环和Append函数来完成,但是有了丰富的语法,必须有更好的方法。

1 个答案:

答案 0 :(得分:2)

关于1. - 您的猜测不正确。真正发生的是Derivative在第一个参数(n)是一个列表时有一个特殊的解释,因此Derivative[{1,2}][f][x]将尝试在{{1}的第一个参数上区分一次}(这是f),两次超过第二次(丢失!) - 正是这种区别给出了零。此外,当x也是f和单个参数时,它变得有点复杂,但想法是一样的。

关于2:

Listable

会修复它。 SetAttributes[d, Listable] 属性有帮助的原因是,在对Listable的特定参数进行评估之前,对与其关联的列表的线程发生了,因此,这样,您永远不会向d提供列表,然后只分别在列表的所有成员上调用 - 这就是你需要的。