```java
import java.util.Scanner;
/**
* @author zhang
* @version 1.0
* 2021/3/10 18:47
* @Todo: 拉格朗日插值算法
*/
public class lglr {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("请输入X:");
double X = in.nextDouble();
System.out.println("请输入n:");
int n = in.nextInt();
double[] x = new double[n + 1];
double[] y = new double[n + 1];
System.out.println("请输入xi:");
for (int i = 0; i < x.length; i++) {
x[i] = in.nextDouble();
}
System.out.println("请输入yi:");
for (int i = 0; i < y.length; i++) {
y[i] = in.nextDouble();
}
System.out.println("结果为:" + lglrchzh(X, n, x, y));
}
private static double lglrchzh(double X, int n, double x[], double y[]) {
double Y = 0;
for (int k = 0; k <= n; k++) {
double t = 1;
for (int j = 0; j <= n; j++) {
if (j == k) {
j = k + 1;
if (j > n) {
break;
}
}
t *= (X - x[j]) / (x[k] - x[j]);
}
Y = Y + t * y[k];
}
return Y;
}
}
12-02