R - 如何找到交叉点2功能

时间:2015-09-26 22:05:49

标签: r intersection

我有两个函数,我想找到它们相交的值并将其绘制在图形上。我怎样才能做到最好?有人知道R函数吗?

# First Function
  func6 <- function(x)
    {
    x * log(x) - sqrt(x)
  }

  # Second Function
  func7 <- function(x)
    {
    x
  }

  x <- seq(0,10,length=100)
  plot(x, func6(x), col="blue", lwd="1", main="Graph #1")
  lines(x, func7(x), col="red")

1 个答案:

答案 0 :(得分:1)

您可以使用uniroot搜索交叉点;这相当于搜索函数差异的零。

rt <- uniroot(function(x)  func6(x) - func7(x)  , c(.01,10), tol=1e-8)     
# or explicitly
# rt <- uniroot(function(x)  x * log(x) - sqrt(x) - x , c(.01,10), tol=1e-8)  

# check
all.equal(func6(rt$root), func7(rt$root))  
# [1] TRUE

然后绘制

x <- seq(0, 10, length=100)
plot(x, func6(x), col="blue", lwd="1", main="Graph #1", type="l")
lines(x, func7(x), col="red")
points(rt$root, rt$root, pch=16, cex=2, col="red") 

正如K.Troy指出的那样,在一般情况下应该转换y坐标:&#34; points函数的第二个参数应该是使用rt $ root&#调用func6或func7 34;

points(rt$root, func6(rt$root), pch=16, cex=2, col="red")