2楼正解,但2楼没有给出该x向量对应的参数情况,你事后怎么知道比如x[50]这个结果对应的原始参数(s,x,t,sigma,r,d)情况呢?我们应该先生成一个参数矩阵,再按其中给定的参数生成对应的结果向量:
参数矩阵m.parameters: 结果向量x:
[,1] [,2] [,3]
[1,] 1 2 7 ------------- value1
[2,] 1 2 8 ------------- value2
[3,] 1 2 9 ------------- value3
[4,] 1 3 7 ------------- value4
[5,] 1 3 8 ------------- value5
[6,] 1 3 9 ------------- value6
[7,] 1 4 7 ------------- value7
[8,] 1 4 8 ------------- value8
[9,] 1 4 9 ------------- value9
我们将你的具体函数f(...)当成黑箱,不讨论其内容(正如2楼所做),这里专门探讨参数矩阵的生成方法:
(1)
先生成参数列表:
x = list()
x[[1]] = 1:10
x[[2]] = 2:5
x[[3]] = 7:9
其中x[[ i ]]表示参数 i 的取值范围
这只是一个样例,列表x的长度可以不止3,也可以是更多,这要看你的参数具体有多少个。
(2)
生成参数矩阵:
generate.parameters = function(x) {
m.parameters = matrix(nrow = prod(unlist(lapply(x, length))), ncol = length(x))
for (i in 1:length(x)) {
a = ifelse(i < length(x), prod(unlist(lapply(x[(i+1):length(x)], length))), 1)
b = ifelse(i > 1, prod(unlist(lapply(x[1:(i-1)], length))), 1)
m.parameters[, i] = rep(x[[ i ]], each = a, times = b)
}
return(m.parameters)
}
> generate.parameters(x)
[,1] [,2] [,3]
[1,] 1 2 7
[2,] 1 2 8
[3,] 1 2 9
[4,] 1 3 7
[5,] 1 3 8
[6,] 1 3 9
[7,] 1 4 7
[8,] 1 4 8
[9,] 1 4 9
[10,] 1 5 7
[11,] 1 5 8
[12,] 1 5 9
[13,] 2 2 7
[14,] 2 2 8
[15,] 2 2 9
[16,] 2 3 7
[17,] 2 3 8
[18,] 2 3 9
[19,] 2 4 7
[20,] 2 4 8
[21,] 2 4 9
[22,] 2 5 7
[23,] 2 5 8
[24,] 2 5 9
[25,] 3 2 7
[26,] 3 2 8
[27,] 3 2 9
[28,] 3 3 7
[29,] 3 3 8
[30,] 3 3 9
.........
参数矩阵会穷尽众参数的所有可能组合。
(3)
针对该矩阵中各种参数组合,计算对应的结果
这里不再赘述。
|