关于FindMaximum计算范围的问题
mathematica吧
全部回复
仅看楼主
level 2
无端小鸟 楼主
如下图所示:
为什么从x=8开始找极大值,他会找到0.8那里去
2022年12月01日 13点12分 1
level 2
无端小鸟 楼主
FindMaximum[{x Cos[x], 0 <= x <= 15}, {x, 7}]
FindMaximum[{x Cos[x], 0 <= x <= 15}, {x, 8}]
Plot[x Cos[x], {x, 0, 14}]
我的需求是求得函数最高点和次高点的差值,除了用FindMaximum求得所有极大值、删除重复元素、去前两个最大值相减 之外。有其他的好方法吗?
2022年12月01日 14点12分 2
level 7
可以考虑利用NMaximize和NMinimize求最大值和最小值。
max = NMaximize[{x Cos[x], 1 <= x <= 15}, x]
min = NMinimize[{x Cos[x], 1 <= x <= 15}, x]
2022年12月02日 11点12分 4
吧务
level 15
……LZ你会举这个例子,是不是因为你已经读过了自带帮助教程《Optimizing with IPOPT》(IPOPTLink/tutorial/OptimizingWithIPOPT)?不过LZ发现的这个例子确实有意思:
Flatten[#, 1] &@
Table[{Row[{"initial x: ", initial}], method,
FindMaximum[{x Cos[x], 0 <= x <= 15}, {x, initial},
Method -> method]}, {initial, {7, 8}}, {method, {IPOPT, InteriorPoint}}]
至于为什么IPOPT以8为初始值时会砸到别的位置去嘛……深挖IPOPT的具体实现可能会有收获吧,我就不折腾了。
“我的需求是求得函数最高点和次高点的差值,除了用FindMaximum求得所有极大值、删除重复元素、去前两个最大值相减 之外。有其他的好方法吗?”好像也没什么特别好的办法,一个不同的思路是:求导后用RootSearch程序包求根获取极大值潜在位置,再用FindMaximum去算——这么搞也没强到哪去。FindPeaks也不是不能考虑,但就我个人的(极有限的)尝试结果来看,FindPeaks的效果(至少截止目前)并不算很好。
2022年12月03日 04点12分 5
1