2014-11-10 7 views
1

поэтому у меня есть функции журнала буксирных,Как найти пересечение двух функций

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?

ответ

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 
Смежные вопросы