R语言求拟合函数图形的交点坐标
通过二分类无限逼近的方法获得的
代码如下:
1)四个曲线的数据结构
v_ac=log(vir_1)
op_log=log(opp)
test1=data.frame(v_ac1,op_log)
v_ac=log(vir_2)
op_log=log(opp)
test2=data.frame(v_ac2,op_log)
v_ac=log(vir_3)
op_log=log(opp)
test3=data.frame(v_ac3,op_log)
v_ac=log(vir_4)
op_log=log(opp)
test4=data.frame(v_ac4,op_log)
2)开始求解:
options(digits=20)
funcLs <- lapply(list(test1, test2, test3,test4), function(DF) approxfun(DF
o
p
l
o
g
,
D
F
op_log, DF
oplog,DFv_ac))
X <- test1$op_log
Filter(Negate(is.null), unlist(combn(funcLs, 2L, FUN=function(funcs) {
mapply(function(lower, upper) {
res <- optim((lower+upper)/2, function(x) abs(funcs[1L] - funcs[2L]),
method=“Brent”, lower=lower, upper=upper, control=list(reltol=1e-10))
if (resKaTeX parse error: Expected 'EOF', got '&' at position 14: value < 1e-4 &̲& resconvergence==0L) return(res$par)
}, X[-length(X)], X[-1L])
}, simplify=FALSE), recursive=FALSE))