我想创建一个简单的绘图,显示两条相交的曲线,如下所示:
(用箭头表示交点)
我已经能够使用以下代码绘制相交曲线:
I0 <- log(1)
b <- .1
d <- .014
curve(exp(I0 - b * x), 0, 50, col = "blue", lwd = 2)
curve(exp(d * x) - 1, 0, 50, add = TRUE, col = "red", lwd = 2)
但是我得到的并不是一对“对称”的曲线:
有什么提示吗? (对于这个例子,我没有尝试绘制箭头)。
要找到交点(您的“d”),您可以使用
uniroot
。
f <- function(x) exp(I0 - b * x)
g <- function(x) exp(I0 - b * (30-x))
I0 <- log(1)
b <- 0.1
x <- uniroot(function(x) f(x) - g(x), interval=c(0,30))$root
y <- g(x)
curve(exp(I0 - b * x), 0, 30, col="blue", lwd=2)
curve(exp(I0 - b * (30-x)), 0, 30, col="red", lwd=2, add=TRUE)
y.axs <- par("usr")[3:4]
y0 <- y + diff(y.axs) / 10
arrows(x0=x, y0=y0, x1=x, y1=y, length = 0.15)
text(x=x, y=y0, expression(hat(S)), pos=3)