赞
踩
根据数学知识,对于平面上已知的n个点(无两点在一条直线上)可以找到一个 n-1 次多项式:
为了进行根据新的x, 求出对应的 y值,需要求出上式中的系数 a0,a1,a2....an−1
因为n个点(x1,y1),(x2,y2)...(xn,yn)在以上多项式上,代入每个点,得
以上方程组中,n个方程,n个未知数a0,a1...an−1,所以方程可解,可以利用线性代数中的行列式求解。
解出的拉格朗日插值多项式为:
实例:
假设一个2次多项行式f, 按照前面的介绍,取三个点为
f(3)=10,f(6)=8,f(9)=4
l0(3)=(x−6)(x−9)(3−6)(3−9)
l1(6)=(x−3)(x−9)(6−3)(6−9)
l2(9)=(x−3)(x−6)(9−3)(9−6)
L(x)=f(3)l0(3)+f(6)l1(6)+f(9)l2(9)
=10(x−6)(x−9)(3−6)(3−9)+8(x−3)(x−9)(6−3)(6−9)+4(x−3)(x−6)(9−3)(9−6)
=−x2+3x+909
插值f(10)=209
from scipy.interpolate import lagrange
x = [3, 6, 9]
y = [10, 8, 4]
lagrange(x,y)
#poly1d([ -0.11111111, 0.33333333, 10. ])
以上 lagrange(x,y) 的输出值 poly1d([−0.11111111,0.33333333,10.]) 值的是多项式的三个系数
即: a0=−0.11111,a1=0.3333333,a2=10.
如果要进行插值操作,可以:
lagrange(x, y)(10)
# 2.222222
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。