Consider the following computation of an eigenfunction of 1D Laplacian on the interval of $[0,\pi]$:
sol[p_, order_] :=
NDEigensystem[{Laplacian[u[x], {x}], DirichletCondition[u[x] == 0, True]},
u, {x, 0, Pi}, 1,
Method -> {"SpatialDiscretization" -> {"FiniteElement",
"MeshOptions" -> {"MaxCellMeasure" -> 0.1 2^p},
"IntegrationOrder" -> order}}][[1, 1]]
tab = Table[{2^p, Abs[-1 - sol[p, order]]}, {order, 2, 5}, {p, -10, 8}];
ListLogLogPlot[tab, PlotRange -> All, Joined -> True,
PlotStyle -> {Automatic, Dashed, Automatic, Dashed}, Frame -> True, GridLines -> Automatic]
Obviously, there's a lack of working precision for $p<-3$. But wherever I tried to insert WorkingPrecision->30
option in the NDEigensystem
call, it didn't work. I tried to put it as a last argument in the call, to "Arnoldi"
method option, but got "unknown option" response every time.
So I wonder: can NDEigensystem
use arbitrary-precision arithmetic? If yes, then what is the syntax to request particular working precision?
NDEigensystem
calls Intel MKL routines or similar subroutines to compute (parts of) eigensystems. In that case, the answer would be: Nope, there is no way to increase the working precision. $\endgroup$