#include<TRInterface.h>
#include<vector>
void Interpolation()
{
ROOT::R::TRInterface &r=ROOT::R::TRInterface::Instance();
std::vector<Double_t>
x(10),
y(10);
for(int i=0;i<10;i++)
{
x[i]=i;
}
if (!
gROOT->IsBatch() ) {
r<<"dev.new()";
r<<"par(mfrow = c(2,1))";
r<<"plot(x, y, main = 'approx(.) and approxfun(.)')";
r<<"points(approx(x, y), col = 2, pch = '*')";
r<<"points(approx(x, y, method = 'constant'), col = 4, pch = '*')";
}
else {
r << "print('Interpolated points')";
r << "print(approx(x,y,n=20))";
}
r<<"f <- approxfun(x, y)";
r<<"fc <- approxfun(x, y, method = 'const')";
if (!
gROOT->IsBatch() ) {
r<<"curve(f(x), 0, 11, col = 'green2')";
r<<"points(x, y)";
r<<"curve(fc(x), 0, 10, col = 'darkblue', add = TRUE)";
r<<"plot(approxfun(x, y, rule = 2:1), 0, 11,col = 'tomato', add = TRUE, lty = 3, lwd = 2)";
r<<"dev.off()";
}
else {
r << "x2=x+0.5";
r << "print('Result of approxfun with default method')";
r << "print(paste('x = ',x,' f(x) = ',f(x2)))";
r << "print('Result of approxfun with const method')";
r << "print(paste('x = ',x,' f(x) = ',fc(x2)))";
}
}