Python 任意函数
我正在努力自学编程,目前正在学习Hans Petter Langtangen的《Python科学编程入门》。 现在我在练习3.20。不幸的是,我没有任何解决问题的办法 我知道我可以在方法定义中使用任意(数学)函数f: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) 所以我的问题是
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))