Как найти 2 локальных максимальных значения y для заданного диапазона - PullRequest
2 голосов
/ 24 марта 2019
#!My question requires me to find 2 local maximum for y using this equation: 
x <-seq(-5,5,length =10001)
y<-(10 *((x-1)^2 )^(1/3))/(x^2+9) 
plot(x,y)

Я считаю, что могу получить одно максимальное значение либо max (y), либо y [which.max (y)].Но я не могу найти другое максимальное значение, так как график имеет 2 пика.

y[which.max(y)]
#> [1] 1.637347
max(y)
#> [1] 1.637347

Я пытался найти второй локальный максимум, используя этот способ, но не уверен, что он правильный

y[which.max(x>2)]
#> [1] 0.7695067

Создано в 2019-03-24 пакетом Представление (v0.2.0).

1 Ответ

0 голосов
/ 25 марта 2019

Вот довольно окольный способ сделать это (правильно?).

#Library kader for cuberoot() function
library('kader')

#Declaring x and calculating y
varX <- seq(-5, 5, length = 10001)
crootX <- kader:::cuberoot((varX-1)^2)
actY <- (10*crootX)/(varX^2+9)

#Storage variable for the maxima
outs <- c()

#Looping through y values looking for those values that are greater than both the preceding AND succeeding values
for(i in 1:length(actY)){
  if(actY[i] > actY[i-1] && actY[i] > actY[i+1]){
    outs[i] <- actY[i]
  }
}

#Subsetting said values and output
outs <- subset(outs, !is.na(outs))
outs
#[1] 1.6373473 0.8818895
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...