我有两个函数,我想找到它们相交的值并将其绘制在图形上。我怎样才能做到最好?有人知道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")
答案 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")