我的编码有问题。我应该
绘制该方程式的图[y = f(x)],其中f(x)=(10 *((x-1)^ 2)^(1/3))/(x ^ 2 + 9)对于介于-5和5之间的x的10001个值
在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)]
但是,我只能得到最大点之一的坐标,而对如何获得另一个最大点却一无所知。
答案 0 :(得分:1)
您可以使用find_peaks
软件包中的ggpmisc
。
library(ggpmisc)
x[ggpmisc:::find_peaks(df$y)]
y[ggpmisc:::find_peaks(df$y)]
输出为:
[1] -1.5 3.0
[1] 1.6373473 0.8818895
请注意,函数find_peaks
被标记为内部。因此,您需要使用:::
访问它。
您可以使用find_peaks
和span
参数进一步参数化对strict
的调用。有关详细信息,请参见??find_peaks
。
您还可以使用ggplot2
和ggpmisc
包直接绘制此图:
x <- seq(-5,5,length=10001)
y <- (10*((x-1)^2)^(1/3))/(x^2 + 9)
df <- data.frame(x = x, y = y)
ggplot(data = df, aes(x = x, y = y)) + geom_line() + stat_peaks(col = "red")