【问题标题】:find the tangent to a curve of diminishing returns找到收益递减曲线的切线
【发布时间】:2018-05-20 20:15:33
【问题描述】:

使用 R,我想自动找到收益递减曲线的切线,以进行最佳觅食图形练习。曲线如下所示:

ins <- 40
t <- 30
avg <- 30
curve(ins/2^(x/10+1-1),
    0,2*t,xlim=c(-2*t,2*t),ylim=c(ins,0),
    xlab="time",ylab="food",type="l",lty=1,col=4,lwd=3,axes=FALSE)
axis(1,pos=ins); axis(2,pos=0)

切线从点 (-40,40) 开始,理想情况下,我会找到切线所接触的曲线上的点。

通过反复试验,它应该看起来像:

segments(-ins,ins,38,0,col=4,lwd=3,lty=2)

【问题讨论】:

标签: r calculus


【解决方案1】:

设置:

ins <- 40
t <- 30
avg <- 30

deriv(...,function.arg=TRUE) 返回一个函数,该函数将函数的值作为其主要结果,并将梯度作为属性。

FUN <- deriv(~ins/2^(x/10+1-1),"x",function.arg=TRUE)
curve(FUN(x),
      0,2*t,xlim=c(-2*t,2*t),
      ylim=c(ins,0),
      xlab="time",ylab="food",type="l",
      lty=1,col=4,lwd=3,axes=FALSE)
axis(1,pos=ins); axis(2,pos=0)

我们需要解方程((40+x)*D(x)+40=f(x))(其中D(x)是梯度,f(x)是函数值):

将该等式转换为当等式为真时将返回 0 的函数:

rfun <- function(x) {
  f <- FUN(x)
  (40+x)*attr(f,"gradient")+40-f
} 
u1 <- uniroot(rfun,c(-40,60))

交点处的导数:

d1 <- attr(FUN(u1$root),"gradient")

画线段:

segments(x0=-40,y0=40,x1=40,y1=40+(40+40)*d1,
         col=4,lwd=3,lty=2)

【讨论】:

  • 伟大的本,就像一个魅力。非常感谢您的帮助。仍然需要一步一步地理解你的答案,但最终会到达那里。当你的职业通常不需要微积分时,就会发生这种情况。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-27
  • 1970-01-01
  • 1970-01-01
  • 2018-06-29
  • 1970-01-01
  • 2017-07-13
  • 1970-01-01
相关资源
最近更新 更多