2011-10-06 85 views
2

我可以构建在一组值的评价函数的值的列表,如下面simplelist中两个参数的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循环和一个附加功能来完成,但与丰富的语法使用,必须有一个更好的办法。

回答

2

关于1 - 你的猜测是不正确的。当第一个参数(n)是一个列表,Derivative[{1,2}][f][x]将试图通过第一个参数f(它是x)以及第二个参数(丢失!)进行一次区分时,Derivative会有特别的解释。正是这种差异给出了零。当,另外,fListable和一个单独的参数,就变得有点复杂,但这个想法是一样的。

关于2:

SetAttributes[d, Listable] 

将修复它。之所以Listable属性帮助的是,与它相关联在列表中的线程发生之前d大干快上一个特定的参数进行评估,因此以这种方式,你永远不提供清单,Derivative,然后只有呼吁列表中的所有成员分开 - 这是你需要的。

+0

这SetAttributes很好地工作。是否有建立在比像一个更好的方式输入列表的方式{1,2,3,4,5} –

+0

@Peeter范围[5]。我也在这里讨论列表建设:http://www.mathprogramming-intro.org/book/node33.html –

+0

非常好。我还看到了那里描述的Table函数,这对我的问题也很有效。谢谢Leonid! –

相关问题