Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wolfram mathematica Mathematica:FindArgMax不返回全局最大值_Wolfram Mathematica_Maximize_Argmax - Fatal编程技术网

Wolfram mathematica Mathematica:FindArgMax不返回全局最大值

Wolfram mathematica Mathematica:FindArgMax不返回全局最大值,wolfram-mathematica,maximize,argmax,Wolfram Mathematica,Maximize,Argmax,我有一个高度振荡的函数,我需要找到区间(-Pi,Pi)中的ArgMax 当我绘制函数时,很明显FindArgMax选择了错误的最大值。我尝试过调整AccuracyGoal和PrecisionGoal,以及各种可用的方法,但这似乎没有达到要求的效果 w[SNR_] := RandomVariate[NormalDistribution[0, 0.5*Sqrt[2]*10^(-SNR/20)], 16] + I RandomVariate[NormalDistribution[0, 0.5*

我有一个高度振荡的函数,我需要找到区间(-Pi,Pi)中的ArgMax

当我绘制函数时,很明显FindArgMax选择了错误的最大值。我尝试过调整AccuracyGoal和PrecisionGoal,以及各种可用的方法,但这似乎没有达到要求的效果

w[SNR_] := 
 RandomVariate[NormalDistribution[0, 0.5*Sqrt[2]*10^(-SNR/20)], 16] + 
 I RandomVariate[NormalDistribution[0, 0.5*Sqrt[2]*10^(-SNR/20)], 16]

G[\[Omega]_] := Re[Sum[(Exp[1.2556 I (m - 1)] + noise[[m]]) Exp[-I \[Omega] (m - 1)], {m, 1, 16}]/16]

noise = w[-20];
estimate = FindArgMax[G[\[Omega]], \[Omega], Method -> "QuasiNewton", 
AccuracyGoal -> 30, PrecisionGoal -> 30][[1]];
Plot[G[x], {x, -Pi, Pi}, Epilog -> Line[{{estimate, -100}, {estimate, 100}}], PlotRange -> All, Frame -> True, Axes -> None, FrameTicks -> {{-Pi, -Pi/2, 0, Pi/2, Pi}, Automatic, {}, {}},PlotRangePadding -> {0, 0.05}]
Print[estimate]

是否有办法找到全局最大值?

您需要近似起点,否则最大值将过于本地化

x0 = Sort[Table[{G[x], x}, {x, -Pi, Pi, 0.01}]][[-1, 2]];

estimate = Quiet@
   FindArgMax[{G[\[Omega]], -Pi <= \[Omega] <= Pi}, {\[Omega], x0}][[1]];

Plot[G[x], {x, -Pi, Pi},
 Epilog -> Line[{{estimate, -100}, {estimate, 100}}],
 PlotRange -> Full, Frame -> True, Axes -> None,
 FrameTicks -> {{Automatic, Automatic},
   {{-Pi, -Pi/2, 0, Pi/2, Pi}, None}},
 PlotRangePadding -> {0, 0.05}]
Print[estimate]
x0=Sort[Table[{G[x],x},{x,-Pi,Pi,0.01}][[-1,2]];
估计=安静@
FindArgMax[{G[\[Omega]],-Pi满,帧->真,轴->无,
FrameTicks->{Automatic,Automatic},
{{-Pi,-Pi/2,0,Pi/2,Pi},None},
PlotRangePadding->{0,0.05}]
打印[估计]