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

Vote for your favourite math software

  1. Dec 19, 2009 #1
    I think Maple and Mathematica are equally powerful, but am curious to see which one is used by more people. Please take 2 seconds to vote for which one you use more.

    I'm not interested in numerical, so if you use matlab but not the symbolic math toolbox, don't vote. Please get as many people as you can to vote as well, it takes 2 seconds and hopefully in a few weeks this will be an accurate metric.

    http://users.ox.ac.uk/~hert3229/ [Broken]
     
    Last edited by a moderator: May 4, 2017
  2. jcsd
  3. Dec 21, 2009 #2
    This thread had 68 views and still only 4 people voted!

    There's no spyware or malware associated with with webpage, if that possibility is making you paranoid. It's an Oxford University webpage, so it's trustworthy!

    I just want to get a good idea of what people use the most!

    I'm thinking of putting up a symbolic code on the supplementary data for my last Journal of Chemical Physics publication, and I'm not sure whether to program it in Maple or Mathematica
     
  4. Dec 21, 2009 #3
    Perhaps the reason for the disproportionate number of views compared to votes is because the title of the thread doesn't really match what you're asking people to vote on. The title suggests a more general vote, perhaps with several categories. Your post suggests all you want to know is whether Maple is more popular than Mathematica, or vice versa.
     
  5. Dec 24, 2009 #4

    George Jones

    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    I voted for Maple.

    Years ago, I was a TA for a Maple-based, introductory mathematical physics course, so I had to learn something about Maple, and now I occasionally use the Maple-based package GRTensorII for calculations in general relativity.
     
    Last edited: Dec 25, 2009
  6. Dec 25, 2009 #5

    SixNein

    User Avatar
    Gold Member

    I think C++ is the best thing you can learn. You can download GMP and produce huge numbers and use the language of C++ to explore them.
     
    Last edited by a moderator: May 4, 2017
  7. Dec 25, 2009 #6

    BobG

    User Avatar
    Science Advisor
    Homework Helper

    I went for Matlab because it's used in the software I use at work and because I used it in college. I also used Mupad (a European program) in college and it was actually a very good program with better graphics than Matlab, and cheaper to boot. Unfortunately, Matlab bought the rights to the program and it's no longer distributed.
     
  8. Dec 25, 2009 #7
    For making software, video games, and web applications, I don't disagree with you.

    But for SYMBOLIC computing, good luck getting C++ to manipulate rank 30 tensors, or solve nonlinear systems of PDEs.

    I wouldn't even recommend C++ for numerical computing.

    Matlab's the best for fair-sized computations. If time is an issue and you're going to program in a low-level language, FORTRAN beats C++ by a hundred thousand miles.
     
  9. Dec 26, 2009 #8

    SixNein

    User Avatar
    Gold Member

    C++ isn't a low level language, and it has a huge library base. For example, the GMP library is much better then matlab for numerical computing. Matlab is limited to 32 and 64 bit numbers. GMP does not have a limit on the size of numbers you can calculate. There also exists tons of symbolic manipulating libraries.

    Many commercial software packages uses these libraries. I know Mathematica now uses gmp: http://library.wolfram.com/infocenter/Demos/4946/
     
  10. Dec 26, 2009 #9
    C++ is one of the most low-level languages that's still used today (like FORTRAN and C).

    1st generation languages (machine code), and 2nd generation languages (assembly) aren't used by scientists. C++, FORTRAN and C are 3rd generation languages: http://en.wikipedia.org/wiki/Third-generation_programming_language

    For many computations MATLAB is the best because it's simply very easy to program, and to manipulate data (generate pictures, export tables to excel, visualize trees and graphs, etc...) in real time.

    If you need more power ( > 64 bit precision is VERY RARELY used by the way ), and you're going to spend time programming in a 3rd-generation language that requires compiling, etc.. you might as well do it in FORTRAN. C++ was not designed for numerical computing, it just accidentally got popular because people didn't know better at the time.
     
  11. Dec 27, 2009 #10

    SixNein

    User Avatar
    Gold Member

    C++ is not considered to be a low level language in computer science. The difference between a low level and high level language is how it maps to machine code. In assembly language, the language has a one to one correspondence with machine code. Every statement in assembly gets mapped to one statement in machine code so that they have a one to one relationship. C++ has a one to many relationship. For every line of code in C++, many statements of machine language (called op-codes) are created.

    "C++ was not designed for numerical computing, it just accidentally got popular because people didn't know better at the time."

    C++ was not designed for a specific type of application; instead, it was designed to be extensible so that it could be used for any type of application. The C++ language has many powerful features.

    Does it take time to learn C++? Absolutely. But mathematics and science majors should be taking some computer science classes anyway.
     
  12. Dec 27, 2009 #11
    Yes, I changed my thesis to "C++ is one of the most low-level languages that's still used today" because I realized it's considered a middle-level language, but it's still much more low-level than MATLAB.

    That's precisely why it's not as good as FORTRAN for numerical computing. FORTRAN was designed for numerical, so many features for numerical computation are intrinsic. Further, if one uses the object-oriented features of C++, like pointers and such, that puts more constraints on the compiler's optimization procedue. Basically, the more fancy features the program has, the more constraints on the compiler's optimization. FORTRAN's the most efficient language in this sense, that doesn't have a huge learning curve like assembly.

    I do agree that it's useful to know object-oriented programming if one wants to make software or web-apps, but I don't see why one would want to use it for numerical computation.
     
  13. Dec 27, 2009 #12

    SixNein

    User Avatar
    Gold Member

    Compiler optimization has little to do with the number of features a programmer uses; instead, the manor in which the features are coded determine the optimization abilities. Both FORTRAN and C++ are producing the same underlying op-codes at the end of the day.

    Honestly, languages do not matter too much in terms of performance. The most important aspect of performance is the underlying algorithm used. A algorithm with o(n^4) complexity is going to run slow regardless of language or optimization. A master assembly level programmer can optimize an o(n^4) algorithm to squeeze every ounce of performance out of the algorithm, but a beginning programmer who writes a unoptimized o(n) algorithm in visual basic will have faster performance.

    I personally found Assembly language to be the most straight forward of all programming languages. There is no magic in assembly language. Assembly language gets tough when you start doing optimization for specific machines. For example, one instruction may run faster on AMD processors then Intel processors. The huge learning curve comes from learning the strengths and weaknesses of hardware. But the language itself is fairly straight forward.

    I think C++ is far better then FORTRAN because C++ has access to more features. Access to direct X alone is worth it. In addition, FORTRAN projects have the knack of becoming extremely messy as projects grow in size. C++ has features that allow projects to scale better so that they can be better maintained.
     
  14. Dec 27, 2009 #13
    I am not sure if this is what you were asking, but here are some of my thoughts:

    C++ is great. Every day I thank god for Dennis Ritchie and Bjarne Stroustrap. However, although there are math libraries and it can be used for exploring math (just last week I wrote a little Bezier curve app in C), I am not sure if that really counts as math software.

    I have never used Maple or Mathematica, but instead use freeware solutions. I really like Maxima, which does both symbolics and numerics. It is just a console "engine" style program, so it is best to have an interface. I like WxMaxima, which provides typeset math output, but Euler is also great because it provides more powerful numeric capabilites and and an alternate plotting system. They are both on my taskbar quick launch.

    Again, I can't say much about Mathematica and Maple, but you seemed eager to hear from someone.
     
  15. Dec 28, 2009 #14
    I'm not going to vote, as I've only used Mathematica, and neither of the other two.

    Regarding using C++ vs. Mathematica, Mathematica is far superior for mathematical computations with all the built in functions, Prime[], dd[], FindMaximum[], Interpolate[], easy table manipulations etc. plus the fact that it can handle numbers of basically any size, which can quickly become a nightmare in C++ unless you start using specific libraries and even then it can sometimes still be very irritating.

    All that being said, I'm not sure if I particularly like Mathematica as a programming language, I've been using it for near 6 months now, and it still seems so icky, even trying to pipe results with &/@ and using the slot function takes some serious getting used to (perhaps thats just from coming from a C background, I don't know)
     
  16. Dec 31, 2009 #15
    axiom and yacas...good enough for me.
     
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook