你如何找到两个函数的交集

时间:2014-11-10 23:00:00

标签: r

所以我有两个日志功能,

 var1 <- 10 * x * log(x) ^ 2
 var2 <- 100 * x * log(x) 

我可以从

绘图
 library(ggplot2) 
 df <- data.frame(x = rep(x, times = 2), y = c(var1, var2), var = rep(c("10 * x * log(x) ^ 2", "100 * x * log(x)",  each = length(x)))
 ggplot(df, aes(x = x, y = y, color = var)) + geom_line() 

R中是否有函数调用来帮助我找到var1和var2的交集?

1 个答案:

答案 0 :(得分:6)

如果你知道交叉路口的发生范围,你可以使用uniroot()

f1 <- function(x)  10 * x * log(x)^2
f2  <- function(x) 100 * x * log(x)

curve(f1,from=1e-3,to=1e8,log="xy")
curve(f2,add=TRUE,col=2)

uniroot(function(x) f1(x)-f2(x),c(10,1e8))$root
## [1] 22026.47

但它真的比那更容易

## 10*x*log(x)^2 = 100*x*log(x)
## log(x) = 10
x <- exp(10)    ## 22026.47