MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today
Asked by Mehmet on 11 Mar 2011

hi.

i want to solve a second order, homogeneous differential equation by using tridiagonal matrix. can u help me?

example: http://img846.imageshack.us/i/diffeq.jpg/

so, i want only a general matlab code to solve like this equation.

because i am using "finite difference method"

*No products are associated with this question.*

Answer by John D'Errico on 11 Mar 2011

Why not just build it as a sparse matrix using spdiags, then solve using backslash? It will be quite fast for a tridiagonal matrix, and you won't need to write any solver at all.

For example, I won't bother to do more than create a random tridiagonal matrix, rather than building one directly from your equation, but the time is all that matters.

n = 100000; A = spdiags(rand(n,3),-1:1,n,n); b = rand(n,1); tic,x = A\b;toc Elapsed time is 0.023090 seconds.

So to solve a system with 1e5 unknowns took me .023 seconds, with virtually NO time invested to write anything.

Mehmet on 11 Mar 2011

i am very new on matlab and didnt understood anything from your answer. But thank for your answer.i dont know anything about backslash.

i need only general example code (a basic application) like my differential equation.this example should solve second order, homogeneous diff eq. i think it was been solved by using "thomas algorithm" but if there another solution you can give me as .m file. i need this solution immediately.

thank for all John

John D'Errico on 11 Mar 2011

I gave you the solution as m-code. If you don't understand it, then it is high time to start reading the tutorials. Read the help for slash, or for linsolve, and for spdiags.

## 0 Comments