我正在尝试自学编程,目前正在努力学习“使用Python进行科学编程入门”。作者:Hans Petter Langtangen。 现在我参加练习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)之类的简单函数做到这一点时,我印象深刻。所以我认为如果有效,必须有办法让它更通用..
答案 0 :(得分:2)
当然,首先要定义它:
def x(t):
return math.exp(-(t-4)**2)
print diff(x, 0)
如果函数由返回的单个表达式组成,则通常可以使用def
,而不是使用lambda
:
print diff(lambda t: math.exp(-(t-4)**2), 0)
答案 1 :(得分:0)
确定:
def x(t):
return diff(math.exp(-(t-4)**2))