Python中拉格朗日插值代码出现Traceback问题求助
拉格朗日插值代码错误排查
核心错误点:
- 变量未初始化:函数
Lagrange内部直接执行y_int = y_int + ...,但y_int未提前初始化为0,会触发NameError。 - 循环范围错误:
range(1, n)会跳过索引为0的节点,拉格朗日插值需要遍历所有n个节点,应改为range(n)。 - 外部变量依赖:
n定义在函数外部,逻辑不严谨,建议在函数内部通过n = len(x)获取节点数量。
修正后的代码:
import numpy as np x = np.array([0, 1, 2, 3]) y = np.array([1, 2, 5, 10]) def Lagrange(x, y, x_int): n = len(x) y_int = 0 # 初始化插值结果 for i in range(n): L = 1 # 每个基函数初始化为1 for j in range(n): if i != j: L = L * (x_int - x[j]) / (x[i] - x[j]) y_int += y[i] * L return y_int y_int = Lagrange(x, y, 2) print(y_int)
验证说明:
当x_int=2时,插值结果应等于y[2]=5,修正后的代码运行后会输出5,符合预期。
内容的提问来源于stack exchange,提问作者Eeshani Chakraborty
相关产品推荐
相关产品推荐

