一、插值条件
f(x)是未知函数,所以用所求的Nn(x)的已知函数代替未知函数求解问题
牛顿插值法要满足的条件:Nn(xi)=F(Xi)
二、牛顿插值法的差值公式
n+1个交点则有,
Nn(x)=f(x0)+f[x0,x1](x-x0)+f[x0,x1,x2](x-x0)(x-x1)+f[x0,x1,x2,x3](x-x0)(x-x1)(x-x2)+…+f[x0,x1,x2,…,xn](x-x0)*(x-x1)…(x-xn-1)
三、差商表
差商公式:f[x0,x1,x2,…xi]=(f[x0,x1,x2,…,xi-1]-f[x1,x2,x3,…,xi])/(x0-xi)
假设f(x)经过6个点,分别为(x0,f(x0)),(x1,f(x1)),(x2,f(x2)),…,(x5,f(x5))
差商表为:
x | f(x) | 一阶差商 | 二阶差商 | 三阶差商 | … | 五阶差商 |
---|---|---|---|---|---|---|
x0 | f(x0) | |||||
f[x0,x1] | ||||||
x1 | f(x1) | f[x0,x1,x2] | ||||
f[x1,x2] | f[x0,x1,x2,x3] | |||||
x2 | f(x2) | f[x1,x2,x3] | … | |||
f[x2,x3] | f[x1,x2,x3,x4] | … | f[x0,x1,x2,x3,…,x5] | |||
x3 | f(x3) | f[x2,x3,x4] | … | |||
f[x3,x4] | f[x2,x3,x4,x5] | |||||
x4 | f(x4) | f[x3,x4,x5] | ||||
f[x4,x5] | ||||||
x5 | f(x5) |
四、代码
根据上面描述,若f(x)经过n个已知点可以用如下牛顿插值法代码来近似求解x的f(x)函数值
import java.util.Scanner;
public class Newtoninterpolate {
static double[][] format;
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
int n=in.nextInt();//插入点总数