[英]Python - “Index Error” when I run program
我正在编写用于获取二阶导数的代码,但出现错误。 就是说二阶导数方程行有问题。 我不明白我要怎么做。
import numpy as np
import matplotlib.pyplot as plt
def d2(f,dx):
df_dx = []
for i in range(len(f)-1):
df_dx.append(f[i+dx] - 2*f[i] + f[i-dx])/(dx*dx)
f = np.sin(np.linspace(0,5,50))
output = d2(f,0.1)
expected = np.cos(np.linspace(0,4.9,49))
diff = abs(output-expected)
plt.plot(diff)
IndexError:只有整数,切片( :
),省略号( ...
),numpy.newaxis( None
)和整数或布尔数组是有效的索引
您的代码有两个问题,一个是您尝试使用浮点值对数组进行索引,另一个是您没有使用dx
创建初始数据集。 以下代码解决了这两个问题:
import numpy as np
import matplotlib.pyplot as plt
def d2(f,dx):
df_dx = []
for i in range(1, len(f)-1): #start i at 1 so that i-1 is 0 on the first iteration
df_dx.append((f[i+1] - 2*f[i] + f[i-1])/(dx*dx)) #add parenthesis around expression
return df_dx
dx = 0.1
x = np.arange(0, 5+dx, dx) # create an array that has a values spaced by dx
f = np.sin(x)
output = d2(f,dx)
expected = -np.sin(x[1:-1]) #2nd derivative is missing first and last points from original array
diff = abs(output-expected)
plt.plot(x[1:-1], diff)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.