Mathematica’s barebones symbolic representation doesn’t get you very far when you want to do more than some common algebra over the reals and complexes. Mathematica’s abilities, for instance, in abstract algebra are seriously lacking. (In this instance, GAP (open source) exceeds Mathematica pretty seriously.)
> Mathematica’s abilities, for instance, in abstract algebra are seriously lacking. (In this instance, GAP (open source) exceeds Mathematica pretty seriously.)
For someone who is not familiar with FriCAS, can you give an example or two (assuming a math background)? I'm interested in specific cases where open source tooling outperforms Mathematica.
However, nothing open source currently comes close to Mathematica for symbolic and symbolic-numerical calculus (expression simplification, symbolic integration, solving PDEs, etc.). Also, one of Mathematica's main strengths is providing a lot of functionality in a neat package where diverse components are very easy for the user to glue together, with automagical interfaces where the user doesn't need to know what happens behind the scenes (or at least that's how Wolfram PR spins Mathematica being closed source).
Meanwhile, Sage combines a lot of functionality but you can't go very far before you run into visible duct tape, API inconsistencies and things that don't quite work together automatically when you think they ought to. Its documentation is also not as good (Sage has very detailed documentation, but often not well structured). Many of the same issues that exist in open source software in other fields, really.
Wolfram’s page uses vague language (“an extended form of”) and doesn’t actually confirm with precision what it is able to do.
It's not particularly difficult to understand why.
An individual home license for Mathematica is $320.
An unrestricted license for an open-source "alternative" is $0.
To be an alternative to Mathematica, it doesn't have to be as good as Mathematica.
It just has to be useful enough that learning it is an acceptable tradeoff for "not spending $320 and becoming locked into Mathematica-specific tooling"
(A decade ago, we'd just pirate the software we needed, because a tunnel to university's licensing server was both unreliable and a PITA to set up...)
I did buy software with student discount during high school, which means even more resource constrained than university level students.
Yes there were lots of piracy with street bazaars even, but I really wanted to own proper Borland software and managed to save money for it.
Those that produce software also have their own priorities, based on how they can managed to pay their bills, which given the comments here is why most software tooling shops nowadays mostly sell to enterprise customers.
My buddy is a GIS analyst/technician (master's degree in it) and a lot of experience in ESRI Arc-GIS, which is insanely expensive. Both he and several colleagues have QGIS installed and are learning it in case they go solo and don't have a client with an ESRI system.
Normally an Advanced Desktop license with multiple extensions would run well north of $10,000/yr with an initial purchase price about 4x that amount.
Also, Mathematica has a very terse and somewhat confusing syntax (I have used lisp before). On the other hand Python is a much simpler way for me to write code in.
Lastly, it eliminates the price which if you aren't a University or a corporation you won't have access to those tools. This makes it easier for people to reproduce their work.
EDIT: corrected typo
I know there is a project to do Mathematica-like things (computer algebra system) on github written in pure Python ( http://sympy.org/ ).
I've been told that Sage ( http://sagemath.org/ ) is Mathematica-like but uses Python as its programming language.
There is also Maxima ( http://maxima.sourceforge.net/ ) which also has a close to Mathematica experience.
Which is awesome, BTW. There's also Giac/Xcas: https://www-fourier.ujf-grenoble.fr/~parisse/giac.html, and a few more specialised ones.
I can't say anything about Matlab, which seems to be fully focused on engineering applications.
"Second place for me goes to Matlab...
I can't say anything about Matlab..."
Fellow theoretical physicist?
These days, post physics, I do most of my work in Perl, Python, Julia, and various DBs, with lots of spreadsheets and slide decks.
I have Maxima (GPLed Macsyma) on my laptop now. I love that the fortran(); bit still works ...
(%i1) integrate(sin(x) * exp(-x) ,x,0,a);
Is a positive, negative or zero?
1 %e (cos(a) + sin(a))
What's the deal with it, does it actually add anything over c/fortran + python?
That being said Julia has also done very good job of making it easy to use as just matlab 'clone' if that is what you want.
edit: I should add that as much as I admire Julia and enjoy playing around with it. 99% of my numeric work is still done with numpy and a smattering of C due to libraries/existing code/inertia
> the challenge that comes to mind is that undertaken by the teams that contributed to numpy, scipy, and pandas in order to be a viable alternative to Matlab.
I mean, numpy/scipy/pandas are reasonably successful. And to take a larger view, open source software has made great gains in replacing not only Matlab, but SAS, SPSS, Stata and others as well. A large amount of specialized domain knowledge was required to replace those as well. What makes Mathematica out of the reach of the same forces (economic and social) that have pushed open source software into replacing Matlab/SAS/SPSS/Stata/etc.?
Most people who don't know better mistake polish for capability.
Otherwise, it is a simple univariate function evaluator, not really a solver -- it doesn't handle multivariate equations, nor give numerical solutions to implicit equation systems F(x) = 0 (typically calculated using the Newton-Raphson method).
As far as I can tell, it doesn't seem to "solve" at all -- it merely evaluates the RHS, given a set of parameters.
It is definitely not a CAS or anything like that.
Also, you're in for a surprise if you search for Fibonacci. It gives a useless formula, and you cannot even evaluate the n-th number directly.
2) Finding all roots to a general nonconvex equation system is a NP-hard problem. It can be done by partitioning the feasible region into convex regions and doing local searches, but typically numerical methods will only return a single solution for a given initial guess. So it's fair that it cannot return all solutions.
3) The Fibonacci sequence is an iterative equation, so explicit iteration is typically required to evaluate a Fibonacci numbers at n. It's fair that a general root-finding algorithm cannot handle iteration.
I want to be fair to the authors, yet at the same time, want to provide gentle feedback that the technical depth of the product may not be sufficient to feasibly sustain a business (except maybe through ads? But even that will subside at some point).
Most engineers have large Excel files that do this sort of thing because it really isn't that hard to do (some use simple VBA code for Newton-Raphson -- it's Calculus 101 stuff), plus their Excel files integrate with their other custom calculations.
Examples are like
How does a program interact these problems? I assume the hardest part is the input.
This brings into focus a math issue I've been wrestling with for some time, but haven't yet been able to adequately express.
Unexpectedly, some of the "equations" posted here aren't really equal! For instance, "pressure altitude - in feet" (formulas that require a particular set of unit are a big red flag) is given as:
h_alt = ( 1 - ( P_sta / 1013.25 )^0.190284 ) · 145366.45
Another red flag is that the page specifies that altitude and pressure inputs for this formula (I can't call it an "equation") must be given as dimensionless numbers. But length and pressure quantities have dimensions of length^1 and (mass^1 · length^-1 · time^-2), respectively.
To transform this expression into an equation (and as a side-effect, make it work with any arbitrary pressure and length units), just replace each "naked" (improperly dimensionless) variable X by the quantity X/<unit>, then rearrange so the units become part of the constants. For example, the above expression can be refactored into an equation as follows:
Substitute (X/unit) for X:
(h_alt / foot) = ( 1 - ( (P_sta / millibar) / 1013.25 )^0.190284 ) · 145366.45
h_alt = ( 1 - ( P_sta / (1013.25 millibar))^0.190284 ) 145366.45 foot
h_alt = (1 - (P_sta / (101.325 kPa))^0.190284 · 44307.69396 meter
h_alt = ( 1 - ( P_sta / 1013.25 )^0.190284 ) · 44307.69396
(h_alt / meter) = ( 1 - ( (P_sta / millibar) / 1013.25 )^0.190284 ) · 44307.69396
h_alt = ( 1 - ( P_sta / (1013.25 millibar))^0.190284 ) · 44307.69396 meter
Euler was the first person to realize this, afaik. Is there a term to describe these kind of "de-unit-ified" equations? More than once I've found myself needing to reconstruct a proper equation (with correct dimensions and constants) from one of these bastardized non-equations.
edit: I'd fix it myself (by submitting an equation), but I can't figure out how to embed units in the equation itself. It interprets "kPa," "kg," "m," and "s" as variable names. :(
TL;DR fxsolver.com doesn't seem to support embedding units in expressions, leading to to confusing non-equal "equations"
The pi theorem is one of the most useful results in my work as a theoretical fluid dynamicist. The (modest) dimensionality reduction it offers seems unbelievable at first.
Not very surprisingly, it's called nondimensionalization (https://en.wikipedia.org/wiki/Nondimensionalization).
The nondimensionalization article is talking about reducing free dimensions in a model by variable substitution (while following all the rules of dimensional analysis), but I'm talking about re-writing a single equation so it can be used by "unit-phobic" people by simply dropping (not substituting!) all units (breaking all the rules of dimensional analysis), and assuming a certain set of units for input and output values.
Compare this (incorrect) formula, which gives no hint as to which units are being used for pressure or height:
h_alt = ( 1 - ( P_sta / 1013.25 )^0.190284 ) · 145366.45
All it does it solve the simplest equations with some unit annotations and a description. It looks like this is something for a high school physics class at most.