一、插值
设函数y=f(x)在区间[a,b]上连续,给定n+1个点
a≤x0<x1<....<xn≤b
已知,f(xk)=yk(k=0,1....n),在函数类P中寻找一个函数Φ(x)。作为f(x)的近似表达式,使满足:
Φ(xk)=f(xk)=yk, k=0,1,2,3,4....n (2)
f(x)为被插值函数,Φ(x)为插值函数,x0,x1....xn为插值节点。(2)为插值节点。
二、拉格朗日插值法
线性插值:拉格朗日插值法中最简单的是线性插值,我们先来了解线性插值函数的构成。在此基础上了解多次插值,
已知两点(x0,y0)和(x1,y1),这里f(x0)=y0,f(x1)=y1,通过这两个点的插值多项式是一条直线,如下:
(x-x1)/(x0-x1)*y0+(x-x0)/(x1-x0)*y1 可以看出当x=x0的时候,函数值y0,当x=x1的时候,函数值为y1.
- 流程图
代码
import numpy as np
def lagelangr(xk, yk, x):
n = len(xk)
lk = []
y = 0
for k in range(n):
fenzi = 1
fenmu = 1
for j in range(n):
if j != k:
fenzi *= (x - xk[j])
fenmu *= (xk[k] - xk[j])
lk.append(fenzi / fenmu)
for i in range(n):
y += lk[i] * yk[i]
return y
if __name__ == '__main__':
xk = input("xk的值为:").split(',')
yk = input("yk的值为:").split(',')
x = input("要估计的值为:")
print('\n')
xk = np.array(xk).astype(np.float64)
yk = np.array(yk).astype(np.float64)
x = np.array(x).astype(np.float64)
Y = lagelangr(xk, yk, x)
print("值为:"+str(Y)+'\n')