using krig.interp.


farmerdoug
05-26-2010, 09:18 AM
Here's the code.

MatDoub x(npts,ndim);
VecDoub y(npts), xstar(ndim);
for (l = 0; l < 3; l ++)
for (m = 0; m < 3; m++)
{
y[l*3 + m] = l*l + m*m;
x[l*3+m][0] = l;
x[l*3+m][1] = m;
printf("%f %f %f\n", x[l*3+m][0], x[l*3+m][1], y[l*3 + m]);

}
Powvargram vgram(x,y);
Krig<Powvargram> krig(x,y,vgram);
xstar[0] = 1;
xstar[1] = 2;
ystar = krig.interp(xstar);
printf("%f\n",ystar);


0.000000 0.000000 0.000000
0.000000 1.000000 1.000000
0.000000 2.000000 4.000000
1.000000 0.000000 1.000000
1.000000 1.000000 2.000000
1.000000 2.000000 5.000000
2.000000 0.000000 4.000000
2.000000 1.000000 5.000000
2.000000 2.000000 8.000000

0.000000
The answer should be 5.

???
What did I do wrong?
thanks.

farmerdoug
05-26-2010, 09:37 AM
The code has to know the exact number of points. You can not just allocate larger vectors than you need.