Best Math Plotting Software for Electrical Engineering

I am an electrical engineering undergrad. I would like to learn a math plotting software which would be helpful in visualizing topics in advanced calculus (my immediate need). It would also be helpful if the math plotting software was of some use in electrical engineering, but this is not mandatory. The selection criteria is listed here in decreasing weight:

1. Ease of Use (syntax and techniques that are intuitive and easy to adapt to other problem areas)
2. Healthy ecosystem (lots of tutorials, examples online, books and other resources
3. Industry use (looking for the most commonly used software suites within engineering and science)
4. Adaptability (commonly used outside mathematics. ie. electrical engineering, modeling).

I have narrowed my search down to:

1. Matlab
2. Mathematica
3. Maple

But this list is by no means exclusive. Currently I am leaning towards Matlab, because I have seen it being used in upper year courses in my electrical engineering program.

I would appreciate your input with regard to which software suite would be best and why. Thank you.

-
Why do you want to learn only one? Why don't you try all of them if your school has a license? Specifically for visualizing topics in advanced calculus I think Mathematica has the edge over MATLAB. It supports symbolic calculations, and uses them even while generating plots. There are lots of different plotting functions, all of which are straghtforward to use: just enter the function you need to plot. It uses adaptive sampling to make sure the result is smooth and accurate, and it detects discontinuities automatically (using symbolic capabilities). –  Szabolcs Jun 24 at 17:42
For example, to visualize an implicitly defined surface, it takes a single command: ContourPlot3D[ x^4 + y^4 + z^4 == 1, {x, -2, 2}, {y, -2, 2}, {z, -2, 2}]. Or using v10, RegionPlot3D[ImplicitRegion[x^4 + y^4 + z^4 < 1, {x, y, z}]]. –  Szabolcs Jun 24 at 17:46
I'm not opposed to learning only one, but my workload will likely not permit it. However, it is useful to know that for the advanced calculus visualizations, Mathematica may have the edge. Thanks for the opinion and examples, a contour plot is exactly what I wanted at this very moment. –  isomorphism Jun 24 at 23:07
On the other hand, what I hear is that in industry MATLAB is vastly more popular. Comparisons between these systems are hard except in cases when one is clearly better. I know Mathematica much better than MATLAB, so if I try to solve a problem in both, I'll likely do better in Mathematica ... people who use MATLAB more will naturally be biased towards thinking MATLAB more convenient. It's hard to give a truly objective opinion. –  Szabolcs Jun 24 at 23:32

MATLAB's plotting tools are perfectly sufficient if used properly, although there is a learning curve. EE and controls/modeling folks use MATLAB heavily in industry. Plotting/visualization is of secondary importance. MATLAB is worth learning for its computational aspects and widespread use in EE fields. This is probably why you see it used in upper-division courses.

-
Thanks for the detailed reply. My immediate needs will undoubtedly be different than my long term needs. In the long term point No. 3 would probably move to the top of the list. But my immediate needs are indeed with calculus 2-4. –  isomorphism Jun 24 at 15:44

For daily Maths jobs, I recommend Maple $18$, however; Matlab rules parts of Maths powerfully. Using Maple at the class is easy (at least for me). For example, when I want to describe some implicit functions at the class, I may do as follows:

[> with(plots):
[> implicitplot3d((x^2+y^2)*(x^2+z^2)*(y^2+z^2) = 1, x = -4 .. 4, y = -4 .. 4, z = -4 .. 4, color = "SkyBlue", axes = boxed);

or

[> implicitplot3d((x^2+(9/4)*y^2+z^2-1)^3-x^2*z^3-(9/80)*y^2*z^3 = 0, x = -1.5 .. 1.5, y = -1.5 .. 1.5, z = -1.5 .. 1.5, color = red, axes = boxed);

-
3D thorn and 3D heart, how beautiful. –  Vikram Jul 20 at 12:09
@Vikram: Thanks for saying so. :-) –  Babak S. Jul 20 at 18:16
Excellent graphic presentation. –  Adi Dani Jul 20 at 18:48

Mathematica is another nice option.

Now you can try the cloud version for free in in www.wolframcloud.com. You can learn a lot about it in SE community mathematica.stackexchange.com.

Here is a cool brand new introduction into the language.

@Szabolcs plot example:

-

If you're in other branches of engineering I would tell you to weigh the options but since you're EE, Matlab is a no-brainer given how prevalent it is in that field, both in academia and industry. However, I also find Mathematica notebook environment very conducive for interactive programming and creating readable documents with text and code together (I do most of my college homework on Mathematica). Moreover, the Manipulate function in Mathematica makes it very easy for me to build interactive plots to gain intuition on difficult engineering concepts. Hence, I find Mathematica very beneficial to my engineering education.

-
That is precisely my immediate need, to gain intuition on advanced calculus. The consensus seems to be Matlab overall, but Mathematica can be useful as well. Thanks for the surrogate opinion. –  isomorphism Jun 24 at 23:11
If you want to learn Calculus MMA is definitely the way to go as it excels in symbolic calculations (among many other things). Also, with the latest MMA version, it seems like you could access--from within MMA--to the pro features of Wolfram Alpha for free, like what I did here with viewing the step-by-step solution to an integration. There are even entire Calculus textbooks written in Mathematica, and most Calculus textbooks have Mathematica supplements –  seismatica Jun 25 at 0:10

Matlab is the better choice. Not only is it the industry standard for electrical engineering, you simply cannot use mathematica nor maple for serious computational work. They are just too slow and inefficient. The only time I see people using mathematica (I've never met anybody in industry who uses maple though they might exist) is to find analytic solutions to a messy system of equations or to simplify an ugly integral.

Matlab is also extremely easy to use and well documented. Its display capabilities will be more than sufficient for your needs as well. It's easy to combine it with c/c++, fortran, and/or java, the first two being extremely helpful if you need extra performance for a specific function. Matlab even offers pretty seamless integration with GPUs, which make it that much more powerful for scientific computing. You just can't beat the combination of rapid prototyping, ease of use, and computational performance that matlab offers.

-
Appreciate the industry insight. That is why I am looking beyond my immediate needs, anticipating future use and deciding where to invest. Thanks for pointing out applications that I could not have anticipated at this point in my education. –  isomorphism Jun 24 at 23:16
Mathematica code can be compiled in C direct in Mathematica, and GPU integration is a native option. –  Murta Jun 25 at 1:00
@Murta I have no experience with that, so you'll have to chime in on its performance. I know Matlab's tool for automatically converting m-code to c-code is poorly spoken of. I've been told that it works but that it makes convoluted and poorly performing c source code. I also believe that c code will still be dependent on matlab libs, which would also be a minus in my book. However, I have never heard on anybody doing any sort of scientific computing in mathematica beyond very small scale problems, with auto-generated c-code or not. –  AnonSubmitter85 Jun 25 at 5:58

Having used Matlab and Maple, I can say that the learning curves for each are of the same order. Matlab is more of the industry standard, though. simulink, alone, makes Matlab the better choice if you find yourself wanting to model circuits.

-
Thanks for the comparison and the tip about simulink. –  isomorphism Jun 24 at 15:45
I wouldn't recommend Maple at all. Its front-end is stuck in 1995 and is really quite finicky. I'm quite frankly amazed that anyone still uses Maple outside of people at the University of Waterloo. –  Cameron Williams Jun 25 at 1:03

I use python with matplotlib library, it's an incredible tool to plotting 2D and 3D functions

-
More detail in such an Answer would be appropriate. How does this recommendation meet the four criteria posed in the Question? What makes it "an incredible tool" in comparison with other tools you've used? etc. –  hardmath Jul 20 at 11:09