2016-10-18 4 views
3

У меня есть две точки (5,0.45) & (6,0.50) и нужно найти значение при х = 5.019802 путем линейной интерполяцииКак найти точки с помощью линейной интерполяции в R

Но как код в R?

У меня есть код ниже, но только что получил граф insdeed.

x<- c(5,6) 
y<- c(0.45,0.50) 

interp<- approx(x,y) 

plot(x,y,pch=16,cex=2) 
points(interp,col='red') 
+0

Точное значение 5.019802, не отображается в 'interp $ x'. Вы можете попытаться найти ближайшую точку к целевому значению с помощью 'targetVal = 5.019802; which.min (abs (interp $ x - targetVal)) 'давать индекс как 2,' interp $ x [2], interp $ y [2] 'будет ближайшей точкой к желаемому значению – OdeToMyFiddle

ответ

5

Вам просто нужно указать значение xout.

approx(x,y,xout=5.019802) 
$x 
[1] 5.019802 

$y 
[1] 0.4509901 
1

Предлагаю сделать функцию, которая решает для y = mx + b.

x = c(5,6) 
y = c(0.45, 0.50) 
m <- (y[2] - y[1])/(x[2] - x[1]) # slope formula 
b <- y[1]-(m*x[1]) # solve for b 
m*(5.019802) + b 

# same answer as the approx function 
[1] 0.4509901 
Смежные вопросы