我的编码有问题。我应该
绘制此方程的图形 [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)]
Run Code Online (Sandbox Code Playgroud)
但是,我只获得最大点之一的坐标,并且不知道如何获得另一个最大点。
您可以find_peaks从包中使用ggpmisc。
library(ggpmisc)
x[ggpmisc:::find_peaks(df$y)]
y[ggpmisc:::find_peaks(df$y)]
Run Code Online (Sandbox Code Playgroud)
输出是:
[1] -1.5 3.0
[1] 1.6373473 0.8818895
Run Code Online (Sandbox Code Playgroud)
请注意,该函数find_peaks被标记为内部。因此,您需要使用 来访问它:::。
find_peaks您可以使用spanand参数进一步参数化调用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")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10928 次 |
| 最近记录: |