Ниже приведена функция для метода конечных разностей, это очень стандартный способ вычисления производной по некоторой функции f (x), сетке (np.linspace), а также равномерному расстоянию между каждой частью сетка (ч).
Проблема возникает, когда я пытаюсь использовать известную функцию (скажем, х ** 2) по сетке от 0,10; Я получаю конкретную ошибку. После кода я опубликую найденную ошибку.
def finitedifference(f,x,h,n):
"""f : function you are attempting to differentiate.
x : grid/domain with with you will differentiate.
h : distance between uniform mesh.
n : required for loop?"""
df = np.zeros_like(x)
for i in range(1,n):
df[i] = (f[i+1]-f[i-1])/(2*h)
#end_points
df[0] = (f[1]-f[0])/h
df[-1] = (f[-1]-f[-2])/h
return print(df)
Что я использую:
f = x**3
x = np.linspace(0,10,11)
h = x[1] - x[0]
finitedifference(f,x,h,11)
Я получаю ошибку:
"IndexError: index 11 is out of bounds for axis 0 with size 11"
К сожалению, я не уверен, что это значит, так что, может быть, некоторые разъяснения по поводу ошибки / способы ее устранения? Спасибо!