Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 任意函数_Python_Function - Fatal编程技术网

Python 任意函数

Python 任意函数,python,function,Python,Function,我正在努力自学编程,目前正在学习Hans Petter Langtangen的《Python科学编程入门》。 现在我在练习3.20。不幸的是,我没有任何解决问题的办法 我知道我可以在方法定义中使用任意(数学)函数f: def diff(f,x,h=0.001): return (f(x+h)-f(x-h))/2*h 当我调用它时,我可以使用我想要的任何函数: print diff(math.exp,0) print diff(math.cos,2*math.pi) 所以我的问题是

我正在努力自学编程,目前正在学习Hans Petter Langtangen的《Python科学编程入门》。 现在我在练习3.20。不幸的是,我没有任何解决问题的办法

我知道我可以在方法定义中使用任意(数学)函数f:

def diff(f,x,h=0.001):  
    return (f(x+h)-f(x-h))/2*h
当我调用它时,我可以使用我想要的任何函数:

print diff(math.exp,0)
print diff(math.cos,2*math.pi)
所以我的问题是: 有没有办法以这种方式容纳更复杂的功能?
比如说,我想近似一个函数的导数,比如
x(t)=e^(-(t-4)^2)
就像我在上面对cos(x)和e^(x)所做的那样

编辑:也许我应该更清楚一点。我并不是特别想要区分这一个函数e^((t-4)^2),而是想定义一个方法,该方法将x的任何函数作为参数,并近似于x点的导数。

当我了解到可以对cos(x)、sin(x)和exp(x)等简单函数执行此操作时,我印象深刻。所以我想如果这样做有效的话,必须有一种方法使它更通用。

当然,首先定义它:

def x(t):
    return math.exp(-(t-4)**2)

print diff(x, 0)
如果函数包含一个返回的表达式,则通常可以使用
lambda
,而不是使用
def

print diff(lambda t: math.exp(-(t-4)**2), 0)
当然可以:


... 只需定义该函数:
def(t):返回math.exp(-(t-4)**2)
并将
f
传递给
diff
…是的,我知道。但我想定义一次这个导数近似,然后能够在任意函数上使用它。例如,我想用e^(-(t-4)^2)来调用它,然后用e^(-(t-5)^3)或其他东西来调用它。
def diff(…)
就是这样做的,不是吗?您只需执行一次,然后就可以对任意函数使用
diff
函数。我一定是错过了你的问题。哦,等等,我没有仔细阅读你的答案。是的,我想这应该行得通。感谢在我的答案中使用lambda符号,
diff(lambda x:math.exp(x**2+1),x)
def x(t):
    return diff(math.exp(-(t-4)**2))