我有picewise三次函數,我想找到它的所有局部最大值,我怎麼能找到所有的峯值?查找R中的分段三次函數的局部最大值
0
A
回答
2
一種選擇是使用optimize
以數字方式查找最大值。首先,你必須編寫實際的功能:
x <- c(0.014, 0.034, 0.059, 0.061, 0.069, 0.080, 0.123, 0.142, 0.165,
0.210, 0.381, 0.464, 0.479, 0.556, 0.574, 0.839, 0.917, 1.649, 1.702,
1.893, 1.932 ,2.337, 2.628, 4.510, 4.584, 5.267, 5.299)
f<-function(z){
z1<-pmax(0,z-x)
sum(z1^2-(z^3-z1^3)/3)
}
然後:
> optimize(f,c(0,5),maximum=T)
$maximum
[1] 2.22133
$objective
[1] 8.486057
0
我想出了一個辦法用正則表達式來做到這一點,有可能是更好的方法來發現的所有局部最大值一個立方函數,但是這個工作很好。它還會考慮重複的值和邊界條件。
vals=f(x)
text=paste0(substr(format(diff(vals),scientific=TRUE),1,1),collapse="")
sort(na.omit(c(gregexpr('[ ][0]*-',text)[[1]]+1,ifelse(grepl('^-',text),1,NA),
ifelse(grepl('[^-]$',text),length(vals),NA))))
+0
我們有一個z不是x的函數,我怎樣才能得到你的代碼的本地最大值? – rose
+0
x就是你想要插入的任何東西。它將傳遞給它的參數命名爲什麼變量無關緊要。所有你需要做的就是分配x,定義f(z)(或f(x),f(q),f(llama)等),然後運行代碼。它應該處理每個有限值的情況。 –
相關問題
- 1. 查找局部最小值/最大值
- 2. 查找局部最大值/最小值R
- 3. 在SQL中查找局部最大值和局部最小值
- 4. 在最少的計算次數中查找全局最大值
- 5. 查找某個函數的所有局部最大值
- 6. 查找局部最大值 - 結合兩個函數
- 7. 查找局部最大值C
- 8. 問題找到一個函數的局部最大值用C
- 9. 從C++中的向量中查找局部最大值/局部最小值(範圍)的數量
- 10. 找到信號的局部最大值及其百分位數
- 11. 查找五次數組中的最大值和最小值
- 12. 查找函數的最大值
- 13. 用numpy查找xy數據點圖的局部最大值?
- 14. 查找CUDA Thrust採樣函數的局部最小值
- 15. 查找3D圖像中的局部最大值
- 16. MATLAB m函數查找局部極值
- 17. 在php中查找所有局部最大值和最小值數組
- 18. 查找數組中的最大分數
- 19. 以特定分辨率查找連續函數的最大值
- 20. R - 找不到繪製最接近局部最大值的線的方法
- 21. 查找最大與R中
- 22. 查找最大R中
- 23. R中矩陣的局部極大值
- 24. xslt max函數查找最大值
- 25. 函數查找本地最大值
- 26. 查找函數的最小值和最大值
- 27. 查找3d矩陣的局部最大值
- 28. 查找R數據表中的第二個最大值
- 29. 查找矩陣中兩個值之間的局部最小和局部最大值
- 30. 找到沒有微積分的局部最小值/最大值:技術名稱?
謝謝,但是如果我們有多個局部最大值,我怎麼能找到所有局部最大值? – rose
:我得到這個結果與您的代碼:>優化(F,C(0,5),最大= T) $最小 [1] 4.999922 $目標 [1] -46.54533 警告消息: 在if(最大){: 的情況下,長度> 1且只有第一個元素將被使用。你是如何得到最大的? – rose
檢查編輯。對不起,忘了定義函數f。 – mrip