is there an open source alternative that would be that good?
Between SageMath, Numpy, scikit-learn, Pandas, Folium etc. Python can probably match Mathematica feature for feature and even beat it in some cutting edge research areas.
However Mathematica makes it a lot easier to get started if you don't know how to program. Just start Mathematica, enter the equation like it looks on the page in your math book using the equation editor GUI, click solve and you're done. Also since everything is built in you don't have to worry about working out which package implements Moving Median or Facial Recognition.
Mathematica also comes with a bunch of real time data sources which are really fun to play with. Want to plot Germany's GDP vs Natual Gas prices or Gold prices vs global average temperatures? The datasets are there and ready to be explored.
In principle, the Python scientific ecosystem allows you to do everything, but the notation is atrocious and not in line at all with how Mathematics is written on paper. So, people familiar with mathematics can bear the pain, but it's terrible for actually teaching mathematics.
For instance in SageMath, to get the eigenvalues of a matrix M, you have to do A.eigenvalues(). What is that supposed to mean? To a programmer, that means A is an object (in the sense of OOP), and you are calling an internal method on it.
But that's not how you think about mathematics. Mathematics is functional. A mathematician knows that eigenvalues(A) means, to choose an appropriate eigenvalue-finding algorithm and apply it to the matrix A.
The mathematics program should conform to how one should think about mathematics, rather than forcing mathematics students to think like programmers. Mathematica does that.
There's open source functional options too. The handful of times I've needed a CAS for something I've used Maxima, it's not quite as full featured as Mathematica or Maple but it costs $0 and is open source. There doing "eigenvalues(A)" will do exactly as you describe. You can even get nice front ends that will pretty print the equations in LaTeX.
I am using a lot of Numpy and Pandas at work and hate them. When I come home I open Mathematica and enjoy every minute of it. It is much more polished, consistent and faster than anything in Python land.
The only place where Python is better if you need to share your code - not everyone has Mathematica license.
> Between SageMath, Numpy, scikit-learn, Pandas, Folium etc. Python can probably match Mathematica feature for feature and even beat it in some cutting edge research areas.
Haven't tried Folium, but from people who are familiar with both: The number of ways Mathematica has an edge over Sage (in terms of math capabilities, not interface), significantly outnumbers the reverse comparison.
Sage is better in a few ways. Mathematica is better in many ways.
Still, for the typical undergrad curriculum, Sage is probably good enough.
Between SageMath, Numpy, scikit-learn, Pandas, Folium etc. Python can probably match Mathematica feature for feature and even beat it in some cutting edge research areas.
However Mathematica makes it a lot easier to get started if you don't know how to program. Just start Mathematica, enter the equation like it looks on the page in your math book using the equation editor GUI, click solve and you're done. Also since everything is built in you don't have to worry about working out which package implements Moving Median or Facial Recognition.
Mathematica also comes with a bunch of real time data sources which are really fun to play with. Want to plot Germany's GDP vs Natual Gas prices or Gold prices vs global average temperatures? The datasets are there and ready to be explored.