gpt4 book ai didi

python - 使用有限差分,Python 计算提供函数的导数

转载 作者:行者123 更新时间:2023-11-28 21:15:53 27 4
gpt4 key购买 nike

我可能应该首先说我对 python 比较陌生,但我以前用 java 和 Matlab 编写过代码。

在python中,代码

def func(f):
return f
g = func(cos)
print(g(0))

给出结果

>1.0

as g 现在被定义为余弦函数。

我想编写一个函数,使用有限差分法计算任何提供的函数的导数。函数定义为

def derivator(f, h = 1e-8):

并希望实现以下目标:

g = derivator(cos)
print(g(0)) # should be about 0
print(g(pi/2)) # should be about -1

目前我的导数函数看起来像这样

def derivator(f, h = 1e-8):
return (f(x+h/2)-f(x-h/2))/h

这肯定是错误的,但我不确定我应该如何解决它。有什么想法吗?

最佳答案

您当前的 derivator() 函数(可能应该称为 differentiator())使用了一个 undefined variable x 并且会返回一个值,如果定义了 x——f'(x) 的值。您想要返回一个接受 x 值的函数。您可以定义一个内部函数并返回它:

def fprime(x):
return (f(x+h/2)-f(x-h/2))/h
return fprime

因为您没有在其他任何地方使用该函数,所以您可以使用 lambda相反,它也更短:

return lambda x: (f(x+h/2)-f(x-h/2))/h

唯一的 PEP 8 says关于 lambda 的是你不应该将 lambda 的结果分配给一个变量,然后返回它:

fprime = lambda x: (f(x+h/2)-f(x-h/2))/h  # Don't do this!
return fprime

关于python - 使用有限差分,Python 计算提供函数的导数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29548428/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com