7 #include "../../Exceptions/error.h"
13 double polilinear(
double *xa,
double *ya,
int n,
double x,
double lb,
double ub)
17 while (i <= n-1 && x > xa[i]) {
26 double a = (x - xa[i-1])/(xa[i] - xa[i-1]);
27 return ya[i-1] + a*(ya[i] - ya[i-1]);
28 }
else if (i >= n-1) {
31 }
else if (i >= n-2) {
33 double a = (x - xa[i-1])/(xa[i] - xa[i-1]);
34 return ya[i-1] + a*(ya[i] - ya[i-1]);
43 }
else if (i >= 1 && i <= n-2) {
45 double A1 = (x - xa[i])*(x - xa[i+1]) / (xa[i-1] - xa[i]) / (xa[i-1] - xa[i+1]);
46 double B1 = (xa[i-1] - x)*(x - xa[i+1]) / (xa[i-1] - xa[i]) / (xa[i] - xa[i+1]);
47 double C1 = (xa[i-1] - x)*(xa[i] - x) / (xa[i] - xa[i+1]) / (xa[i-1] - xa[i+1]);
48 double res = A1*ya[i-1] + B1*ya[i] + C1*ya[i+1];
56 throw error_msg(
"POLINOM_ERROR",
"Polinomial interpolation error");