拉格朗日插值法拟合多项式

版权声明:博主的博客不值钱随便转载但要注明出处 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啊,来个大佬教教我画图吧,嘤嘤嘤!

猜你喜欢

转载自blog.csdn.net/easylovecsdn/article/details/84865660