【发布时间】:2019-07-11 07:51:12
【问题描述】:
我正在尝试计算重力。结果应该是一个列表,但是出现了如下错误:
numba.errors.TypingError:在 nopython 模式管道中失败(步骤: nopython 前端)
函数使用无效() 带参数类型:(array(float64, 1d, C))
@jit(nopython = True)
def gravity_calculator(x, y, h, dx, dy, p):
calculated_gravity = np.array([])
for i in range(len(x)):
cal = 0
for j in range(len(x)):
x1 = abs((x[j] - x[i])+0.000001)
x2 = x1 + dx
y1 = abs((y[j]-y[i])+0.000001)
y2 = y1 + dy
t1 = np.log((y2 + np.sqrt((x2 ** 2) + (y2 ** 2))) / (y2 + np.sqrt((x2 ** 2) + (y2 ** 2) + (h[j] ** 2))))
t2 = np.log((y1 + np.sqrt((x2 ** 2) + (y1 ** 2))) / (y1 + np.sqrt((x2 ** 2) + (y1 ** 2) + (h[j] ** 2))))
t3 = np.log((y2 + np.sqrt((x1 ** 2) + (y2 ** 2))) / (y2 + np.sqrt((x1 ** 2) + (y2 ** 2) + (h[j] ** 2))))
t4 = np.log((y1 + np.sqrt((x1 ** 2) + (y1 ** 2))) / (y1 + np.sqrt((x1 ** 2) + (y1 ** 2) + (h[j] ** 2))))
t5 = np.log((x2 + np.sqrt((x2 ** 2) + (y2 ** 2))) / (x2 + np.sqrt((x2 ** 2) + (y2 ** 2) + (h[j] ** 2))))
t6 = np.log((x1 + np.sqrt((x1 ** 2) + (y2 ** 2))) / (x1 + np.sqrt((x1 ** 2) + (y2 ** 2) + (h[j] ** 2))))
t7 = np.log((x2 + np.sqrt((x2 ** 2) + (y1 ** 2))) / (x2 + np.sqrt((x2 ** 2) + (y1 ** 2) + (h[j] ** 2))))
t8 = np.log((x1 + np.sqrt((x1 ** 2) + (y1 ** 2))) / (x1 + np.sqrt((x1 ** 2) + (y1 ** 2) + (h[j] ** 2))))
t9 = np.arcsin(((y2 ** 2) + (h[j] ** 2) + y2 * np.sqrt((x2 ** 2) + (y2 ** 2) + (h[j] ** 2))) / (
(y2 + np.sqrt((x2 ** 2) + (y2 ** 2) + (h[j] ** 2))) * np.sqrt((y2 ** 2) + (h[j] ** 2))))
t10 = np.arcsin(((y2 ** 2) + (h[j] ** 2) + y2 * np.sqrt((x1 ** 2) + (y2 ** 2) + (h[j] ** 2))) / (
(y2 + np.sqrt((x1 ** 2) + (y2 ** 2) + (h[j] ** 2))) * np.sqrt((y2 ** 2) + (h[j] ** 2))))
t11 = np.arcsin(((y1 ** 2) + (h[j] ** 2) + y1 * np.sqrt((x2 ** 2) + (y1 ** 2) + (h[j] ** 2))) / (
(y1 + np.sqrt((x2 ** 2) + (y2 ** 2) + (h[j] ** 2))) * np.sqrt((y1 ** 2) + (h[j] ** 2))))
t12 = np.arcsin(((y1 ** 2) + (h[j] ** 2) + y1 * np.sqrt((x1 ** 2) + (y1 ** 2) + (h[j] ** 2))) / (
(y1 + np.sqrt((x1 ** 2) + (y1 ** 2) + (h[j] ** 2))) * np.sqrt((y1 ** 2) + (h[j] ** 2))))
G = (x2 * (t1 - t2) - x1 * (t3 - t4) + y2 * (t5 - t6) - y1 * (t7 - t8) + h[j] * (t9 - t10 - t11 + t12))
cal = cal +(p * G)
calc = cal * 0.00667
np.append(calculated_gravity,calc)
return calculated_gravity
result = gravity_calculator(xi,yi,initial_depth,dx,dy,-0.4)
print(result)
【问题讨论】:
-
看起来
abs()不会自动分布在数组中,因此您需要编写一个循环将其应用于所有数组元素。
标签: python python-3.x numba