On Jun 2, 9:37 am, Marco Esteves <marcosilvaeste...@gmail.com> wrote: > Sometimes you've got to calculate eigenvalues to solve fourier series. > I don't know how to calc in matlab... > Example of eigenvalues calc problem: > > a*d/lambda*sin(lambda/d)+b*cos(lambda/d)=0 > > my inputs are the constants a,b and d with a*b>0. > my output is lambda,the eigenvalue. But lambda is an array, indexed at > discrete time,so can be called lambda_n with n=1:infinity > > Thank you
The way you have written the problem, you need to solve for 1 root (eigenvalue) at a time using a routine like "fzero". The problem of finding all the eigenvalues this way is that you need a good initial guess for each of them. For example, if you can bracket the eigenvalues, meaning that you can define intervals in which each of the eigenvalues must lie, then you can make progress because you can choose your initial guesses intelligently. For this problem you can do that. Divide through by COS and you'll see that you have TAN(g*lambda) = g*lambda/h, where g and h are some constants. Plot the LHS and the RHS versus the variable g*lamba. All intersections correspond to eigenvalues you seek. You can use some basic asymptotic analysis of the tangent function to find brackets for each of the roots.
However, if this eigenvalue equation comes from some underlying boundary value problem (i.e. an ODE), then a potentially better procedure is to solve the ODE numerically. For example, do a finite differencing of the ODE. If the ODE involving the eigenvalue is linear and homogeneous then you will ultimately get a linear problem of the form Ax = lambda*x (or perhaps a generalized eigenvalue problem like A*x = lambda*B*x). The eigenvalues of the discretization matrix A will then be the eigenvalues you seek, and the eigenvectors of A the associated eigenfunctions of the boundary value problem. Note that the boundary conditions will be incorporated into your discretization matrix A.