以下拉格朗日插值法拟合的方程如何变成由五组点以及7组点拟合的方程

import sympy as sy
from sympy.abc import x,y

input_x=[1,4,9]
input_y=[1,2,3]

#用于控制输出的有效数字长度
def printM(expr, num_digits):
return expr.xreplace({n.evalf() : round(n, num_digits) for n in expr.atoms(sy.Number)})

#定义拟合的系数 L0, L1, L2
def L0(input_x,x):
l1=(x-input_x[1])/(input_x[0]-input_x[1])*(x-input_x[2])/(input_x[0]-input_x[2])
return l1

def L1(input_x,x):
l1=(x-input_x[0])/(input_x[1]-input_x[0])*(x-input_x[2])/(input_x[1]-input_x[2])
return l1

def L2(input_x,x):
l1=(x-input_x[0])/(input_x[2]-input_x[0])*(x-input_x[1])/(input_x[2]-input_x[1])
return l1

#用sympy写出
print("L0 表达式为:", sy.simplify(L0(input_x,x)))

print("L1 表达式为:", sy.simplify(L0(input_x,x)))

print("L2 表达式为:", sy.simplify(L0(input_x,x)))

#组合最终的拟合函数
def Lfunc(input_y,input_x,x):
answer=input_y[0]*L0(input_x,x)+input_y[1]*L1(input_x,x)+input_y[2]*L2(input_x,x)
return answer

#输出拟合函数表达式, 调用前面定义的控制有效数字函数
print("最终拟合 表达式为:", printM(sy.simplify(Lfunc(input_x, input_y, x)), 2))

#验证 L0, L1, L2定义的是否出错
print(L0(input_x,1), L0(input_x,4), L0(input_x,6))
print(L1(input_x,1), L1(input_x,4), L1(input_x,6))
print(L2(input_x,1), L2(input_x,4), L2(input_x,6))

#对任意输入值x, 利用拟合函数, 输出结果
Lfunc(input_y,input_x,10)

#五组点拟合方程
import sympy as sy
from sympy.abc import x,y
input_x=[1,4,9,16,25]
input_y=[1,2,3,4,5]

#用于控制输出的有效数字长度
def printM(expr, num_digits):
return expr.xreplace({n.evalf() : round(n, num_digits) for n in expr.atoms(sy.Number)})
#定义拟合的系数 L0, L1, L2,L3,L4
def L0(input_x,x):
l1=(x-input_x[1])/(input_x[0]-input_x[1])(x-input_x[2])/(input_x[0]-input_x[2])(x-input_x[3])/(input_x[0]-input_x[3])(x-input_x[4])/(input_x[0]-input_x[4])
return l1
def L1(input_x,x):
l1=(x-input_x[0])/(input_x[1]-input_x[0])
(x-input_x[2])/(input_x[1]-input_x[2])(x-input_x[3])/(input_x[1]-input_x[3])(x-input_x[4])/(input_x[1]-input_x[4])
return l1
def L2(input_x,x):
l1=(x-input_x[0])/(input_x[2]-input_x[0])(x-input_x[1])/(input_x[2]-input_x[1])(x-input_x[3])/(input_x[2]-input_x[3])(x-input_x[4])/(input_x[2]-input_x[4])
return l1
def L3(input_x,x):
l1=(x-input_x[0])/(input_x[3]-input_x[0])
(x-input_x[1])/(input_x[3]-input_x[1])(x-input_x[2])/(input_x[3]-input_x[2])(x-input_x[4])/(input_x[3]-input_x[4])
return l1
def L4(input_x,x):
l1=(x-input_x[0])/(input_x[4]-input_x[0])(x-input_x[1])/(input_x[4]-input_x[1])(x-input_x[2])/(input_x[4]-input_x[2])*(x-input_x[3])/(input_x[4]-input_x[3])
return l1
#组合最终的拟合函数
def Lfunc(input_y,input_x,x):
answer=input_y[0]*L0(input_x,x)+input_y[1]*L1(input_x,x)+input_y[2]*L2(input_x,x)+input_y[3]*L3(input_x,x)+input_y[4]*L4(input_x,x)
return answer
#输出拟合函数表达式, 调用前面定义的控制有效数字函数
print("最终拟合 表达式为:", printM(sy.simplify(Lfunc(input_x, input_y, x)), 2))
#对任意输入值x, 利用拟合函数, 输出结果
Lfunc(input_y,input_x,12)