Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Use finite difference method to solve for eigenvalue E in Matlab

  1. Dec 6, 2012 #1
    Use finite difference method to solve for eigenvalue E from the following second order ODE:

    - y'' + (x2/4) y = E y

    I discretize the equation so that it becomes

    yi-1 - [2 + h2(x2i/4)] yi + yi+1 = - E h2 yi

    where xi = i*h, and h is the distance between any two adjacent mesh points.

    This is my code:
    Code (Text):
    clear all
    n = 27;
    h = 1/(n+1);
    voffdiag = ones(n-1,1);
    for i = 1:n
        xi(i) = i*h;
    mymat = -2*eye(n)-diag(((xi.^2).*(h^2)./4),0)+diag(voffdiag,1)+diag(voffdiag,-1);
    lam= -D/(h^2);
    fprintf(1,' The smallest eigenvalue is %g \n',lam(1));
    fprintf(1,' The second smallest eigenvalue is %g \n',lam(2));
    fprintf(1,' The 3rd eigenvalue is %g \n',lam(3));

    it returns
    Code (Text):

     The smallest eigenvalue is 9.92985
     The second smallest eigenvalue is 39.3932
     The 3rd eigenvalue is 88.0729
    Obviously, something wrong here, since the analytic solution should be
    E = n + 1/2 (for n = 0, 1, 2, 3...)
    The smallest eigenvalue should be 0.5, instead of 9.92985.

    I don't know whether my numerical solution agrees with the analytic solution or not, if I impose a boundary condition (ie. when x goes to infinity, y(x) should vanish to 0). And I don't know how to impose boundary condition. Please help, thank you very much!

    By the way, is there any another way to find the eigenvalue E please?
    Last edited: Dec 6, 2012
  2. jcsd
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook

Can you offer guidance or do you also need help?
Draft saved Draft deleted