[Date Index] [Thread Index] [Author Index]
Re: Why is Mathematica so slow ?
Hi, do you remember -- Mathematica is a "Computer Algebra" intended for symbolical computations. Numerical computations are *not* done with a computer algebra. Long time ago people invent FORTRAN for this task. You should simply write a MathLink program that use the fast C-code and the nice Mathematica interface and the symbolic power of Mathematica. One reason for the low speed is simply the index check. Mathematica *must* check the index in a a[[i]] call. Otherwise a error would crash the whole program. A C-program will crash in this case but it's your program and not a commercial strength "crash free" application. How ever I have seen C++ codes (with overloaded  operators) that spend 70 % of its runtime with index checks. If you really whant speed for numerics you should use a MathLink program. Regards Jens Madhusudan Singh wrote: > > Hi > > I am solving a problem in a numerical linear algebra course that > involves solving a two point boundary value problem with finite element > method and LU factorisation. Since this is a part of a course, I am not > permitted to use inbuilt functions in Mathematica. > The matrix generated is a tridiagonal matrix. It is sparse. The > order varies from 1 to 2^14. I solved this problem by using the > following code (end of posting). > I did the same problem on C (since I am using Mathematica purely as > a simple programming language, it does not matter if I use C instead.) > > To solve for matrix orders 1 through 2^14 (14 steps) it takes about 4 > minutes to solve the problem with C, and more than 7 hours with > Mathematica. The two codes are functionally identical. What is going on > ? > > With regards, > > Madhusudan Singh.