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]

output of the above code

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?

  • $\begingroup$ I guess, after assempling stiffness and mass matrix into sparse arrays, 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$ – Henrik Schumacher Feb 8 '18 at 15:56
  • 2
    $\begingroup$ @HenrikSchumacher, the reference you give is for FEAST which can be called as a method option The default for FEM is Arnoldi - but quite frankly I do not know which code it is based on (but not MKL). The Direct solver is an inhouse solver IIRC. $\endgroup$ – user21 Feb 8 '18 at 20:43

No, at this point in time (V11.2) and in the forseeable future NDEigensystem does not work with arbitrary precision, because the FEM code is machine precision code only.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.