gpt4 book ai didi

python - python 中的有限差分近似

转载 作者:太空宇宙 更新时间:2023-11-03 15:57:44 25 4
gpt4 key购买 nike

我正在尝试计算函数在 x = 0 处的导数,但我尝试过的所有函数都不断得到奇怪的答案。例如,对于 f(x)=x**2,我得到的导数在所有点上都是 2。我的有限差分系数是正确的,对于 x 的二阶导数是二阶精确的。

from numpy import *
from matplotlib.pyplot import *

def f1(x):
return x**2

n = 100 # grid points

x = zeros(n+1,dtype=float) # array to store values of x
step = 0.02/float(n) # step size
f = zeros(n+1,dtype=float) # array to store values of f
df = zeros(n+1,dtype=float) # array to store values of calulated derivative

for i in range(0,n+1): # adds values to arrays for x and f(x)
x[i] = -0.01 + float(i)*step
f[i] = f1(x[i])

# have to calculate end points seperately using one sided form

df[0] = (f[2]-2*f[1]+f[0])/step**2
df[1] = (f[3]-2*f[2]+f[1])/step**2
df[n-1] = (f[n-1]-2*f[n-2]+f[n-3])/step**2
df[n] = (f[n]-2*f[n-1]+f[n-2])/step**2

for i in range(2,n-1): # add values to array for derivative
df[i] = (f[i+1]-2*f[i]+f[i-1])/step**2

print df # returns an array full of 2...

最佳答案

x^2 的二阶导数是常数 2,二阶导数使用中心差商,正如您也可以通过分母中的平方看到的那样。您的结果绝对正确,您的代码完全按照您的指示执行。

要获得具有对称差商的一阶导数,请使用

df[i] = ( f[i+1] - f[i-1] ) / ( 2*step )

关于python - python 中的有限差分近似,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40619320/

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