import java.util.Scanner;
//拉格朗日插值
public class Lagrange {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
//被插函数:y=x^1/2........y(100)=10,y(121)=11,y(144)=12,y(169)=13,y(400)=20
//拉格朗日函数:y=10B0(x)+11B1(x)+12B2(x)+13B3(x)+20B4(x);
double[] X=new double[5];
double[] Y=new double[5];
X[0]=100;
X[1]=121;
X[2]=144;
X[3]=169;
X[4]=400;
Y[0]=10;
Y[1]=11;
Y[2]=12;
Y[3]=13;
Y[4]=20;
double[] L=new double[5];
double x;
System.out.println("请输入x:");
x=scan.nextDouble();
for(int i=0;i<5;++i) {
L[i]=1;
for(int j=0;j<5;++j) {
if(j!=i) {
L[i]*=(x-X[j])/(X[i]-X[j]);
}
}
}
double ans=0;
for(int i=0;i<5;++i) {
ans+=L[i]*Y[i];
}
System.out.println(ans);
}
}
请输入x:
289
17.106706617365816



