2
$\begingroup$

Are there certain commands, or some mathematical trick I can use to recover the non-normalized solutions from NDEigensystem?

My equation of interest is of the form

$u''(x)+f(x)u(x)=\lambda u(x)$

I need the non-normalized functions and I'm not sure how to find them. I can't just insert $au(x)$ into my equation since the normalization constant would divide out.

Would my best option be to solve this equation again in NDSolve and explicitly insert the eigenvalue?

$\endgroup$
  • $\begingroup$ You can multiply a normalized eigenfunction by any arbitrary constant to obtain a non-normalized eigenfunction. In other words, non-normalized eigenfunctions are not uniquely defined. $\endgroup$ – bbgodfrey Sep 21 '18 at 2:52
3
$\begingroup$

Yes, you can. You are looking for the option "VectorNormalization". Here is an example from the documentation:

{vals, funs} = 
  NDEigensystem[-Laplacian[u[x], {x}], u[x], {x, 0, \[Pi]}, 4, 
   Method -> {"VectorNormalization" -> None}];

NIntegrate[#^2, {x, 0, \[Pi]}] & /@ funs
{0.07662421106316575`, 0.07479974990831867`, 0.07479782758346251`, \
0.0747915351146286`}

The default is to normalize with respect to the system matrices:

{vals, funs} = 
  NDEigensystem[-Laplacian[u[x], {x}], u, {x, 0, \[Pi]}, 4, 
   Method -> {"VectorNormalization" -> 
      Function[{values, vectors, stiffness, damping},
       s = stiffness; d = damping;
       norm = 
        vectors/Diagonal[
           vectors.damping.ConjugateTranspose[vectors]]^(1/2)]}];

The functions are constructed by interpolating the eigenvectors:

Max[Abs[#["ValuesOnGrid"] & /@ funs - norm]]
0.`
| improve this answer | |
$\endgroup$

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.