Recently, I've been using NDEigensystem to solve a two-dimensional eigenfunction equation. The region that I'm solving over is as follows.
keyhole = ImplicitRegion[x^2 + y^2 >= 1, {{x, -1/2, 1/2}, {y, 0.0001, ymax}}];
It's a rather specific region and my boundary conditions are very particular to this region but what seems to be an issue is tuning the ymax parameter. When I set ymax to 100, for example, the NDEigensystem function works perfectly and gives me great results. However, when I increase ymax over 100, I keep getting the following error about being non-Hermitian:
Eigensystem::herm: The matrix SparseArray[Automatic,<<2>>,{1,{{0,<<955>>},{<<1>>}},{0.0167943,0.000175333,0.0000158879,-2.49834*10^-11,5.12298*10^-9,-2.49834*10^-11,0.0000158879,-1.26762*10^-9,1.09711*10^-8,-1.28059*10^-9,4.37737*10^-13,-7.94393*10^-6,4.37737*10^-13,1.09711*10^-8,<<755244>>,-0.000465693,0.0000205407,0.0000581381,0.000116049,-6.88058*10^-19,0.0000291058,-0.000193762,-3.68362*10^-18,4.28843*10^-23,-1.3667*10^-6,-2.92675*10^-23,-0.0000102905,0.0232857}}] is not Hermitian or real and symmetric.
I may be making a silly syntax error with the code but I'm really unsure. The code I'm using is as follows.
test = NDEigensystem[{-y^2 (D[u[x, y], {x, 2}] + D[u[x, y], {y, 2}]),
PeriodicBoundaryCondition[u[x, y], x == -1/2,
TranslationTransform[{1, 0}]],
PeriodicBoundaryCondition[u[x, y], x^2 + y^2 == 1,
Function[x, {{-1, 0}, {0, 1}}.x]]},
u[x, y], {x, y} \[Element] keyhole, 30];
I'd really appreciate your input and feedback about what I can do to increase ymax without invoking this error.
Thank you for your help.
NDEigensystem[]correctly. If you use the code that I recommended to you, then there are no problems with the growth ofymaxsee https://mathematica.stackexchange.com/questions/198455/using-multiple-boundary-conditions-with-ndeigensystem/198507#198507 – Alex Trounev May 18 '19 at 21:57NDEigensystemhere? – user21 May 20 '19 at 05:32Homogeneous DirichletCondition or NeumannValue boundary conditions may be included. When no boundary condition is specified on part of the boundary \[PartialD]\[CapitalOmega], then this is equivalent to specifying a Neumann 0 condition.– Alex Trounev May 20 '19 at 11:10DirichletConditonorNeumannValue. The note you refer to is to say that only homogeneousDirichletConditionorNeuamnnValuecan be used. It does not say that you can not usePeriodicBoundaryCondition. In fact there are examples in the ref page that show the usage ofPeriodicBoundaryConditonwithNDEigensystem– user21 May 20 '19 at 12:37PeriodicBoundaryConditioncan be used. – user21 May 20 '19 at 12:45PeriodicBoundaryCondition. Moreover, the OP wants to get numerical chaos. – Alex Trounev May 20 '19 at 14:51