在python中的函数中运行数组时出错

时间:2019-07-06 20:09:03

标签: python interpolation

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次迭代,这些问题有解决方案吗?

3 个答案:

答案 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]:

那些将是您不想在部门中保持相同的值。

相关问题