Estaba realizando unos problemas de metodos numericos asi que decidi crearme esta pequeña clase hecha en java para resolverlo, bueno no llega a clase mas bien serian dos funciones simples
public class Lagrange2 {
private int y[];
private int x[];
private double a[];
public Lagrange2(int y[], int x[]) {
this.x = x;
this.y = y;
a=new double[x.length];
}
private void getPolinomios_a() {
double mult;
for(int i=0;i<y.length;i++){
mult = 1;
for(int j=0;j<x.length;j++){
if(i==j)continue;
mult=(x[i]-x[j])*mult;
}
a[i]=y[i]/mult;
///System.out.print("a"+"["+i+"]="+a[i]+" ");
}
}
public double getResultadoP(int p){
getPolinomios_a();
int mult=1;
double valores[]=new double[a.length];
//System.out.println("");
for(int i=0;i<a.length;i++){
mult=1;
for(int j=0;j<a.length;j++){
if(i==j)continue;
mult=(p-x[j])*mult;
}
valores[i]=a[i]*mult;
//System.out.print(valores[i]);
//if(i!=a.length-1)System.out.print(" + ");
}
double resultado=0;
for(int k=0;k<valores.length;k++){
resultado=resultado+valores[k];
}
return resultado;
}
}
public class _Main {
public static void main(String[] args) {
int x[]={5,7,11,13,17};
int y[]={150,392,1452,2366,5202};
Lagrange2 l=new Lagrange2(y, x);
double res=l.getResultadoP(9);
System.out.println("\nEl resultado es "+res);
}
}