
FxSolver – A solver for engineering and scientific equations - jerrytee
https://www.fxsolver.com/
======
mlevental
many people have tried to build open source alternatives to mathematica for
decades (sage, sympy) and it's just too developer intensive a task. there is
so much work and not to mention IP in just Simplify[] that I don't know why
people bother. no one that seriously uses something like mathematica (e.g
research) would use any other CAS. I'm not saying I wouldn't love a free
alternative but it's not practical without dozens of people across the
mathematical and engineering spectrum. 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.

~~~
reikonomusha
Axiom, specially FriCAS (open source) is pretty underrated. It unfortunately
hasn’t kept up with the times in terms of interface, which is a sure way to
kill 95% of the potential users. But it’s mathematical capabilities in some
cases, and certainly it’s mathematical potential, outscales Mathematica.

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.)

~~~
throwawaymath
_> But it’s mathematical capabilities in some cases, and certainly it’s
mathematical potential, outscales Mathematica._

...

 _> 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.

~~~
thechao
I only have experience with OpenAxiom & Axiom; however, the core definition
language (Spad) is a dependently typed module-centric modern language... from
1981. It’s like an alternative “what if” language designed by mathematicians
to write CASes. It has the oldest implementation of list- and set-
comprehensions I know of. (Disclosure: I wrote a paper about adding JET-based
forward AD using single-definition generics to the language.) The packages
contain a complete implementation of the Risch algorithm; I’m not sure
Mathematica has managed that.

~~~
qubex
According to [0], ” _For indefinite integrals, an extended version of the
Risch algorithm is used whenever both the integrand and integral can be
expressed in terms of elementary functions, exponential integral functions,
polylogarithms, and other related functions._ ”

[0]
[http://reference.wolfram.com/language/tutorial/SomeNotesOnIn...](http://reference.wolfram.com/language/tutorial/SomeNotesOnInternalImplementation.html#23196)

~~~
reikonomusha
Most CASes use _some_ form of Risch, but there are various levels of
implementation. Axiom is the only known CAS that implements all of the
mathematics for every case of Risch, the so-called “algebraic” and
“transcendental” cases.

Wolfram’s page uses vague language (“an extended form of”) and doesn’t
actually confirm with precision what it is able to do.

------
wenc
If this is high-school hobbyist project, congratulations!

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.

~~~
Jaxan
You can solve for any of the variables (you can select the variable, or just
leave one field empty). It's not very clear though, and it does not give all
solution.

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.

~~~
wenc
1) Fair point -- I take that back about not being able to solve.

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.

------
Crisspy
Nice. It's a stretch to call this a Wolfram Alpha alternative but this long
list of calculable equations can make it useful for quick, back-of-the-
envelope calcs. The formula linking feature is also a fresh touch for a
calculator but the plotting tool could use some improvement since there other
free tools out there doing plotting much better (Desmos, Geogebra, etc)

------
azhenley
Would love to see an open source alternative (or at least a rich API) so that
we can build different front ends for different needs.

------
est
OT question, I've seen dozens of algebra solvers now, but are there are good
ones for simple geometry problems?

Examples are like

[http://thinkzone.wlonk.com/MathFun/Triangle.htm](http://thinkzone.wlonk.com/MathFun/Triangle.htm)

[https://www.youtube.com/watch?v=xnE_sO7PbBs](https://www.youtube.com/watch?v=xnE_sO7PbBs)

How does a program interact these problems? I assume the hardest part is the
input.

~~~
gedsic
Maybe Geogebra? [https://www.geogebra.org/](https://www.geogebra.org/)

~~~
est
Thanks, that's cool, but it's limited to graphing, can it solve geometric
problems like the two links I posted?

------
pdm55
symbolab is nice [https://www.symbolab.com/solver/implicit-derivative-
calculat...](https://www.symbolab.com/solver/implicit-derivative-calculator)

------
schiffern
Great tool, just starting exploring it.

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"[1] (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 
    

But this can't be correct -- the left side has a dimensions of length^1, while
the right side has dimensions of (mass^0.190284 · length^-0.190284 ·
time^-0.380568). At the risk of stating the obvious, these are not equal!

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
    

Rearrange:

    
    
      h_alt = ( 1 - ( P_sta / (1013.25 millibar))^0.190284 ) 145366.45 foot
    

Convert to SI:

    
    
      h_alt = (1 - (P_sta / (101.325 kPa))^0.190284 · 44307.69396 meter
    

Note that we can do the same thing with the "equivalent" expression in
meters[2] (a further red flag: if they're equivalent, why should any system of
equations need more than one copy?) it should yield the same result:

    
    
      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
    

Well I'll be damned. :)

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.

[1]
[https://www.fxsolver.com/browse/formulas/Pressure+Altitude+-...](https://www.fxsolver.com/browse/formulas/Pressure+Altitude+-+in+feet)

[2]
[https://www.fxsolver.com/browse/formulas/Pressure+Altitude+-...](https://www.fxsolver.com/browse/formulas/Pressure+Altitude+-+in+meters)

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"

~~~
nikic
> 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.

Not very surprisingly, it's called nondimensionalization
([https://en.wikipedia.org/wiki/Nondimensionalization](https://en.wikipedia.org/wiki/Nondimensionalization)).

~~~
schiffern
Damn, got my hopes up. That's close, but not quite the same thing.

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
    

with this (correct) equation, which always works regardless of what units are
chosen (just follow the unit conversion rules):

    
    
      h_alt = (1 - (P_sta / (101.325 kPa))^0.190284 · 44307.69396 meter
    

There are even unit-preserving calculators like Frink, which allow you to
specify any units (for instance, giving barometric pressure in _light-
nanoseconds of mercury_ [1]).

[1]
[http://frinklang.org/fsp/frink.fsp?fromVal=%281+-+%282.5+lig...](http://frinklang.org/fsp/frink.fsp?fromVal=%281+-+%282.5+light+nanosecond+Hg+gravity%29+%2F+%28101.325+kPa%29%29%5E0.190284+%C2%B7+44307.69396+meter&toVal=#calc)

------
partycoder
Might be free but the ads are too aggressive and the design is very lacking
and counterintuitive.

~~~
tobias2014
To be honest, I can't really see the use of this website for any practical
work related purposes. Comparing it to WolframAlpha (as the submitter does in
the title) is a little pretentious in my opinion.

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.

