版权声明:博主的博客不值钱随便转载但要注明出处 https://blog.csdn.net/easylovecsdn/article/details/84865660
咱们先来拟合一个最高次为2次的多项式(此时固定n = 3)
Code
#拉格朗日插值公式
x = []
y = []
n = 3
for i in range(n) :
v = input()
v = int(v)
x.append(v)
for i in range(n) :
v = input()
v = int(v)
y.append(v)
def f(X) :
return ((X - x[1]) * (X - x[2]) / (x[0] - x[1]) * (x[0] - x[2])) * y[0] + ((X - x[0]) * (X - x[2]) / (x[1] - x[0]) * (x[1] - x[2])) * y[1] + ((X - x[0]) * (X - x[1]) / (x[2] - x[0]) * (x[2] - x[1])) * y[2]
xx = input()
xx = float(xx)
print(f(xx))
当n不定时,将代码普式化有(n自定义输入)
Code
#拉格朗日插值公式
x = []
y = []
n = input()
n = int(n)
for i in range(n) :
v = input()
v = int(v)
x.append(v)
for i in range(n) :
v = input()
v = int(v)
y.append(v)
def f(X) :
sum = 0
for i in range(n) :
fz = 1
fm = 1
for j in range(n) :
if j == i : continue
fz *= (X - x[j])
for j in range(n) :
if j == i : continue
fm *= (x[i] - x[j])
sum += (fz * y[i]) / fm
return sum
xx = input()
xx = float(xx)
print(f(xx))
还有我画的图像好Low啊,来个大佬教教我画图吧,嘤嘤嘤!