【发布时间】:2019-03-25 16:21:26
【问题描述】:
我的编码有问题。我应该这样做
绘制此方程 [y=f(x)] 的图,其中 f(x) = (10*((x-1)^2)^(1/3))/(x^2 + 9) 10001 个 x 值在 -5 和 5 之间(包括)
在a的10001个x值中,找出f(x)的两个局部最大值。
我试过这样做:
# question1
x <- seq(-5,5,length=10001)
y <- (10*((x-1)^2)^(1/3))/(x^2 + 9)
plot(x,y) # This will produce a graph with two max point
# question2
x[which.max(y)]
y[which.max(y)]
但是,我只得到最大点之一的坐标,不知道如何获得另一个最大点。
【问题讨论】:
-
求局部最大值是一个常见的数学问题。并且很难在一般意义上得到 well,尤其是对于基本 R 函数。顺便说一句,请注意发布 实际 R 代码:您的代码有三个错误(
//注释,与{y)不匹配的括号,以及在其定义之前使用的x,因为 Dave2e 已经足够好了查找/修复)。 -
which.max求全局最大值,所以不能这样。这可能有用:stats.stackexchange.com/questions/22974/… -
一种常见的(但肯定不是绝对可靠的)方法是求导数 (
diff) 并找到导数与零交叉的所有翻转点(正负)。 (这可能是@yarnabrina 的链接正在做的事情,我没有仔细查看代码。)