The biggest thing missing from SageMath is a step by step solver. (Edit to add a caveat, I'm sure many professionals depend on minutiae of one or the other)
Feature-wise I'd say Sage has more Mathematica functionality than Octave does for MATLAB. Sage is not trying to be compatible however presumably it wouldn't be that hard if the functionality is there?
Sage is a bit of a Frankenstein though
Advanced Expression Manipulation > Prevent expression evaluation: https://docs.sympy.org/latest/tutorials/intro-tutorial/manip...
> There are generally two ways to prevent the evaluation, either pass an evaluate=False parameter while constructing the expression, or create an evaluation stopper by wrapping the expression with UnevaluatedExpr.
From "disabling automatic simplification in sympy" https://stackoverflow.com/a/48847102 :
> A simpler way to disable automatic evaluation is to use context manager evaluate. For example,
from sympy.core.evaluate import evaluate
from sympy.abc import x,y,z
with evaluate(False):
print(x/x)
sage.symbolic.expression.Expression.unhold() and `hold=True`:
https://doc.sagemath.org/html/en/reference/calculus/sage/sym...IIRC there is a Wolfram Jupyter kernel?
WolframResearch/WolframLanguageForJupyter: https://github.com/WolframResearch/WolframLanguageForJupyter
mathics/IMathics is the Jupyter kernel for mathics: https://github.com/mathics/IMathics@main#egg=imathics
#pip install jupyter_console imathics
#conda install -c conda-forge -y jupyter_console jupyterlab
mamba install -y jupyter_console jupyterlab
jupyter console
jupyter kernelspec list
pip install -e git+https://github.com/mathics/imathics@main#egg=mathics
jupyter console --kernel=
%?
%logstart?
%logstart -o demo.log.py
There are Jupyter kernels for Python, Mathics, Wolfram, R, Octave, Matlab, xeus-cling, allthekernels (the polyglot kernel). https://github.com/jupyter/jupyter/wiki/Jupyter-kernels
https://github.com/ml-tooling/best-of-jupyter#jupyter-kernel...The Python Jupyter kernel checks IPython.display.display()'d objects for methods in order to represent an object in a command line shell, graphical shell (qtconsole), notebook (.ipynb), or a latex document: _repr_mimebundle_(), _repr_html_(), _repr_json_(), _repr_latex_(), ..., __repr__(), __str__()
The last expression in an input cell of a notebook is implictly displayed:
from IPython.display import display
%display? # argspec, docstring
%display?? # ' & source code
display(last_expresssion)
Symbolic CAS mobile apps with tabling and charting and varying levels of support for complex numbers and quaternions, for example: Wolfram Mathematica, Desmos, Geogebra, JupyterLite, Jupyter on mobileSage is amazing and valuable but the value of Mathematica is the cognitive ease of having one unified platform for everything. Sage is a nice integration of multiple specialized tools under a rudimentary common framework but requires a lot more mental overhead to tie it all together.
I consider Mathematica a true gift to humanity.
https://octave.org/news/release/2022/11/02/octave-7.3.0-rele...
On the other hand there are lots of Common Lisp systems which are capable of running the venerable Maxima/Macsyma.
> not sure what the status of Octave
I'm glad that Octave and Scilab exist, but I switched to NumPy and never looked back.