I'm trying solve the Schrödinger equation for a given potential using the function ParametricNDSolveValue following the the first method of the post:
Find eigen energies of time-independent Schrödinger equation
It works fine, but it bothers me that we have to impose the somewhat artificial boundary condition ψ[1]==1 instead of the real condition ψ[Infinity]==0.
I've tried two different ideas to get around this:
a. Imposing the condition ψ[100]==10^-5 or similar values, the problem with this is that afterwards Findroot doesn't return the right values of the energy (I tested with the known results. of the harmonic oscillator). Oddly, if I use ψ[3]==0.01 I get better results than with ψ[3]==0.0001 or ψ[10]==0.0001 and definitely than with ψ[100]==10^-5 (?!)
b. Using ParametricNDSolveValue with two parameters, one for the Energy and one for the the boundary conditions, ie. ψ[100]==k, and the using Findroot for the energy making k=0, but again, results are wrong.
So my questions are:
Why do I get better results using the boundary condition ψ[3]==0.01 than using ψ[3]==0.0001 or ψ[10]==0.0001 when the latest are closer to the real boundary condition?
Is there a way of using the fonction ParametricNDSolveValue when boundaries are infinity or close enough?