该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
public class MyApp
{
public static void main(String argv[])
{
double xi[] = { 0, 0.5, 1, 1.5, 2 };
double fi[] = { 1, 0.938470, 0.765198, 0.511828, 0.223891 };
double x = 0.9; //matlab,f=0.80752379812254
double f = newton(x, xi, fi);
System.out.println("x=" +x);
System.out.println("f=" +f);
}
//Newton interpolation
public static double newton(double x, double xi[], double fi[])
{
int n = xi.length;
double[][]a=new double[n][n];
double[]ft=new double[n];
double[]xt=new double[n];
//将fi一维数组赋值给二维数组a的第一行
a[0]=(double[]) fi.clone();
xt[0]=1;
ft[0]=fi[0];
for(int i=1;i
for(int j=0;j
//给第i行赋值
a[i][j]=(a[i-1][j+1]-a[i-1][j])/(xi[i+j]-xi[j]);
//输出第i行
//System.out.print(a[i][j]+" ");}
//System.out.println(); //输出第i行后回车换行
xt[i]=xt[i-1]*(x-xi[i-1]);
ft[i]=ft[i-1]+a[i][0]*xt[i]; //ci=a[i][0] }
System.out.println("error="+a[n-1][0]*xt[n-1]);
return ft[n-1];
}
}