RuntimeWarning:在double_scalars中除以零 尝试将数组插入函数时
import numpy as np
import random
def lagrange(x, y, x_int):
n = x.size
y_int = 0
for i in range(0, n):
p = y[i]
for j in range(0, n):
if i != j:
p = p * (x_int - x[j]) / (x[i] - x[j])
y_int = y_int + p
return [y_int]
x = []
y = []
for i in range(1000):
x.append(random.randint(0,100))
y.append(random.randint(0,100))
fx = 3.5
print(lagrange(np.array(x),np.array(y),fx))
我希望输出的输出具有1000次迭代,这些问题有解决方案吗?
答案 0 :(得分:2)
您的错误消息涉及代码中未提及的功能。但是我认为问题是因为x[i]
和x[j]
可以是相同的数字,因此您在p = p * (x_int - x[j]) / (x[i] - x[j])
行上用零除,这是不可能的。在x[i]
等于x[j]
的情况下,您需要添加一项豁免以做不同的事情。
答案 1 :(得分:2)
由于您是从x
的范围中随机生成(0,100)
数组,并且数组大小为1000,因此对于某些x[i] = x[j]
,保证了i,j
。您需要确保x
中的元素是唯一的。
请参阅:How do I create a list of random numbers without duplicates?
答案 2 :(得分:0)
在嵌套循环中,如果x [i]!= x [j]:
那些将是您不想在部门中保持相同的值。