Я указываю 'WorkPrecision' как {1, MachinePrecision, 100} соответственно, когда пытаюсь найти корни 200-го полинома Эрмита H200 (x) с помощью NSolve. Тем не менее, я считаю, что расчетные решения с MachinePrecision даже хуже, чем наборы с 1 точностью; Я считаю, что набор с 1 точностью дает лучшие результаты, поскольку он более близок к результату, который дает набор с 100 точностью.
Как интерпретировать это явление?
На моей машине числовое значение MachinePrecision приблизительно равно 15,9, таким образом 1 << MachinePrecision << 100;
Я прочитал документы WorkPrecision, в которых говорится, что он установлен для указания точности, используемой во внутренних вычислениях, поэтому я знаю, что он не может гарантировать точность конечного результата. Однако MachinePrecision намного выше 1 и меньше 100, поэтому нет смысла получать лучшее решение с худшей точностью работы; </p>
sol = Table[x /. NSolve[HermiteH[200, x] == 0, WorkingPrecision -> j], {j, {1, MachinePrecision, 100}}];
(*plot the result: data points of "1-precision" are nearly buried under that of the "100-precision", which indicates their numeric consistency*)
img = ListPlot[sol, PlotMarkers -> Automatic, PlotStyle ->PointSize[0.3*10^-3], Filling -> Axis, FillingStyle -> Automatic, PlotLegends -> {"1-Precision", "MachinePrecision", "100-Precision"},Frame -> True, FrameLabel -> {"200 solutions", "roots value"}, LabelStyle ->Directive[Black, 20], AspectRatio -> 1/3, ImageSize -> Scaled[.8]]
Я ожидаю, что «1-точность» должна показывать меньше, чем «100-точность», чем «MachinePresicion», поскольку первое намного меньше, чем второе, что не так.