Suggestions:
(1) Introduce a natural unit of length. After you express your
equation in dimensionless form, it will be less messy (no more m,
hbar,...).
(2) Use the WKB method (or the Langer transformation) to find pretty
good values for the eigenvalues. That will provide a good starting values
for refinement.
(3) Setting fpprec to 100 might not be good enough. Try this experiment:
(%i27) fpprec : 100$
(%i32) sum((-157.0b0)^k/k!,k,0,2500);
(%o32) -2.5087336770049212034499242201[45
digits]10259380594062251738051611b-34
(%i33) (-157.0b0)^2500 / 2500!;
(%o33) 3.4454002914792986312508998017[47
digits]568739881796502507968332b-1922
(%i34) exp(-157.0b0);
(%o34) 6.5428406190514568528012113126[45
digits]55152847831678150653964443b-69
Your algorithm needs to determine fpprec, not you. Also, you need a
logical scheme for deciding how many terms to sum; again, a user
shouldn't have to decide---the algorithm should. Read about the running
error--it's not that hard to understand.
(4) Sum the series and calculate the terms of the series in a single
loop. You only need to save the most recent three coefficients. Your
code stores all of them in a hashed array. Surely this is slower than
it should be.
(5) I'm dubious that your scheme for graphically (?) determining
eigenvalues will work all that well. Have you tried it for the x^2
oscillator? How well does it work?
I suppose you know there are hundreds of articles on the x^4 oscillator.
Barton