Hermite 插值多项式计算近似值——JAVA实现
import java.util.Scanner;
public class Hermite {
//x x //y y //m m // x0 插入的值 // y0 近似值
public static double[] aaa(double x[],double y[], double m[], double x0[]) {
int a=x.length;
int b=x0.length;
double y0[]=new double[b];
double add_xj_xk=0;//连加
double mul_x0_xk=1;//连乘
double add_h2n1x=0;//近似值
for (int i=0;i<b;i++) {//一重循环将不同插值点近似值传给数组y0
add_h2n1x=0;
for (int j=0;j<a;j++) {//二重循环计算H2n+1(x)
mul_x0_xk=1;
add_xj_xk=0;
for(int k=0;k<a;k++) {//三重循环计算l'j(xj)和lj(x)
if (j!=k) {
add_xj_xk+=1/(x[j]-x[k]);
mul_x0_xk*=((x0[i]-x[k])/(x[k]-x[j]));
}
}
add_h2n1x+=(y[j]*(1-(2*(x0[i]-x[j])*add_xj_xk))*(mul_x0_xk*mul_x0_xk))+(m[j]*(x0[i]-x[j])*(mul_x0_xk*mul_x0_xk));
}
y0[i]=add_h2n1x;
}
return y0;
}
public static void main(String[] args) {
double []x= {0.1