一个简单的线性插值问题

举例: 一个均匀的坐标轴上,x取0.5时,y为0.7, x取11.5时,y为13.9,问x取6.1时, y的值。

该题为插值问题,可以用线性插值公式解决:
参见: http://zh.wikipedia.org/wiki/%E7%BA%BF%E6%80%A7%E6%8F%92%E5%80%BC
该公式其实也可以通过解一元二次方程来推导。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
## 线性方程一般的形式如下:
y = a*X + b

所以题目中的关系也可用以下方程组来表示:
## 0.7 = a*0.5 + b
## 13.9 = a*11.5 + b

即:
a*0.5 + b = 0.7
a*11.5 + b = 13.9

##写成矩阵形式如下
Ax =b

###在R中,可用solve 函数对线性方程组求解
### 示例R code 如下:
A <- matrix(c(0.5, 1, 11.5, 1), nrow = 2, byrow = TRUE)
b <- c(0.7, 13.9)
res <- solve(A, b)

### 写成函数
fx <- function(x){
y <- res[1]*x + res[2]
return(y)
}

fx(6.1)
### 结果为7.42
### 所以当x取值为6.1时, y为7.42