簡體   English   中英

將向量應用於R中的優化函數

[英]Apply a vector to an optimize function in R

Hoew我可以應用觀測向量來在R中的每個觀測之間找到局部最大值。我執行以下代碼,但是根據繪圖,結果應僅為兩個局部最大值。 我如何在R中做到這一點?

    x = c(0.0000005, 0.1578947, 0.3157895, 0.4736842, 0.6315789, 0.7894737, 
      0.9473684, 1.1052632,1.2631579, 1.4210526, 1.5789474, 1.7368421,
      1.8947368, 2.0526316, 2.2105263, 2.3684211, 2.5263158 ,
      2.6842105, 2.8421053, 3.000000)     
    f = function(x) (x+1)*(x-2)*(x-1)*(x)*(x+1)*(x-2)*(x-3)
    plot(x, f(x), type="l")
     maximums = sapply(x, function(x)optimize(f, c(0, x), maximum = TRUE)$maximum)

我不確定如何為此目的將optimize應用於該序列,但是肯定不會將其逐點應用。。您可以想像得出一個多項式樣條,然后對其進行微分。 微分的數值模擬是diff且局部最大值的條件是一階導數較小,而二階導數則為負。 這是滿足這些條件的條件圖(將顏色偏移一以說明對向量進行求diff時的縮短:

plot(x,f(x), 
     col=c("red","blue")[1+seq_along(x) %in%    # adding one to the logical values 0,1
                         c(0, which( diff(diff(f(x)))<0 & diff(f(x)) < 0.1))])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM