// lsfit2.java do an order=order least square fit of data z=F(x,y) // provide an interpolation z_new = F1(x_new, y_new) // data sorted by X primary, Y secondary, Z independent, could be xg,yg // given nx, ny and nxy = nx * ny, index X,Y,Z [k] = i*ny+j // needs simeq.java // // usage: lsfit2 mylsfit = new lsfit2(xord, yord, nx, ny, X, Y, Z); // for(int i= ... // for(int j= ... // your choice of x and y // z = mylsfit.eval2(x,y); // typically includes // // intermediate values class lsfit2 { int xord, yord, maxord, xyord, nx, ny; double C[]; lsfit2(int xord, int yord, int nx, int ny, double X[], double Y[], double Z[]) { double xfct[] = new double[xord+1]; double yfct[] = new double[yord+1]; double term[] = new double[(xord+1)*(yord+1)]; // maximum double B[][]; double x, y, z; int k; this.xord = xord; this.yord = yord; this.nx = nx; this.ny = ny; maxord = Math.max(xord,yord); // maximum term order xyord = 0; for(int i=0; i<=xord; i++) { for(int j=0; j<=yord; j++) { if(i+j<=maxord) { xyord++; System.out.println("term = x^"+i+"*y^"+j); } } // end j } // end i B = new double[xyord][xyord+1]; C = new double[xyord]; for(int iii=0; iii