【问题标题】:When a function is equal to a certain value当函数等于某个值时
【发布时间】:2013-02-13 06:09:06
【问题描述】:

我对 R 非常陌生,所以解决这个问题可能相对简单。我有以下函数来计算普通汽车的停车距离:

distance <- function(mph){(2.0*(mph/60))+(0.062673*(mph^1.9862))}

我正在绘制从 1 mph 到 60 mph 的所有停车距离:

range = distance(1:60)

但我需要标记停止距离等于 120 英尺的位置。我不知道这是如何在 R 中完成的,但我想编写一个函数,对于停止距离(x),我得到了汽车的最大速度,以 MPH 为单位。我应该使用什么函数,有没有一种简单的方法可以检查 distance(x) 的值(如上所述)是否等于某个值?

【问题讨论】:

  • 您可能有几个问题。您提到了绘制并找到停止距离等于 120 英尺的位置,但这仅适用于情节吗?你问如何找到这个点?您是在问此时如何在图表上画一条垂直线?两者都有?

标签: r statistics


【解决方案1】:

一种方法是找出函数 -120 何时等于 0:

distance <- function(mph, dist=0){(2.0*(mph/60))+(0.062673*(mph^1.9862))-dist}
uniroot(distance, c(1, 60), dist=120)
## $root
## [1] 44.63998
##
## $f.root
## [1] -5.088982e-06
##
## $iter
## [1] 6
##
## $estim.prec
## [1] 6.103516e-05

然后看看它是否有效:

distance(44.63998)
## [1] 120

【讨论】:

  • 正是我想要的,你是救生员!
【解决方案2】:

我知道这是一个老问题并且有一个公认的答案,但我想指出另一种方法来实现这一点 - 创建反函数。由于您拥有该功能,因此很容易在合理范围内生成许多 x-y 点。然后通过使 y 成为 x 的函数来简单地创建反函数。在你的例子中,

x = seq(0,150,0.05)
y = distance(x)
speed = approxfun(y,x)

现在让我们确认它给出了很好的答案:

speed(120)
[1] 44.63998
distance(speed(120))
[1] 120

【讨论】:

    猜你喜欢
    • 2023-03-21
    • 1970-01-01
    • 2020-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-05
    • 1970-01-01
    相关资源
    最近更新 更多