Use finite difference method to solve for eigenvalue E from the following second order ODE:

- y'' + (x

I discretize the equation so that it becomes

y

where x

This is my code:

it returns

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?

- y'' + (x

^{2}/4) y = E yI discretize the equation so that it becomes

y

_{i-1}- [2 + h^{2}(x^{2}_{i}/4)] y_{i}+ y_{i+1}= - E h^{2}y_{i}where x

_{i}= i*h, and h is the distance between any two adjacent mesh points.This is my code:

Code:

```
clear all
n = 27;
h = 1/(n+1);
voffdiag = ones(n-1,1);
for i = 1:n
xi(i) = i*h;
end
mymat = -2*eye(n)-diag(((xi.^2).*(h^2)./4),0)+diag(voffdiag,1)+diag(voffdiag,-1);
D=sort(eig(mymat),'descend');
lam= -D/(h^2);
spy(mymat)
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));
```

Code:

```
The smallest eigenvalue is 9.92985
The second smallest eigenvalue is 39.3932
The 3rd eigenvalue is 88.0729
```

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: