python之拉格朗日插值算法完成计算

一、提出问题

拉格朗日插值法,如何计算数值?

二、详解拉格朗日插值算法

插值法就是利用已知的点(x,y)建立合适的插值函数y=f(x),将未知点w带入插值函数 f(x)可以求出函数值 f(w)。对于平面上相异(无两点在一条直线上)的 n个点,我们可以找到一个 n次多项式
在这里插入图片描述
使这个多项式函数经过这些点。有n+1个未知数(A),我只需要知道n+1个点的函数值就可以解出这n+1个未知数,拉格朗日插值法就是求得这个多项式函数。
1、拉格朗日插值法
(1)将n+1个点代入多项式得
python之拉格朗日插值算法完成计算_第1张图片
(2)方程的系数矩阵为A的行列式为
python之拉格朗日插值算法完成计算_第2张图片
python之拉格朗日插值算法完成计算_第3张图片

三、举例说明

1、要求
根据上述基本原理,用python程序语言将已知多点数据画出图像,并利用这组数值计算一组数据[-3,2,3,-1]对应的拉格朗日插值,并将其形成的多个对应点在图像中标出如图1
2、具体代码

import pylab as pl
import numpy as np 

def lagrange(x,y,w):
    n = len(x)
    res=0
    for i in range(n):
        temp = 1 
        for j in range(n):
            if i!=j: temp = temp * (w-x[j]) / (x[i] - x[j]) 
        res += temp * y[i]
    return res

    
x = [16,9,25]
y = [4,3,5]
lagrange(x,y,10)   

x1=np.linspace(-5,5,20)
y1= x1**2+np.random.uniform(-1,1,20)
x2=[-3,2,3,-1]
y2=[]
for i in x2:
    y2.append(lagrange(x1,y1,i))
pl.plot(x1,y1, 'r')
pl.scatter(x2,y2)
pl.xlim(-6,6)
pl.ylim(-5,30)
pl.show()

3、运行结果
python之拉格朗日插值算法完成计算_第4张图片

以上就是本文所有内容,希望能帮到大家!!!

你可能感兴趣的:(python基础知识)