🕌

数式処理システムの全体像

2024/09/04に公開

数式処理システム[1]の全体像を端的に纏めてみる。

数式処理システム

computer algebra system (CAS)ともいう。
つまり、手計算と同じように代数学の要領でコンピュータで数式を操作し厳密解を求めるシステムである。これを記号計算という。[2]
反対に数値としてコンピュータで計算することを数値計算という。[3]数値計算ではコンピュータの扱える桁数が有限であることから誤差が問題となる。

主な数式処理システム

有償

どちらとも高価。(年数十万円)
Mathematicaの方がMapleより2倍ほど高い。Mathematicaの方が比較的高性能でサポートも充実しているようだが、優劣は個人の好みによるみたいである。[6]
これらは数式処理システムだけでなく、数値計算や可視化、最適化などの機能も含まれるソフトウェアシステムである。

無償

  • SageMath[7]
    無償のソフトウェアを統合して有償に近いソフトウェアシステムを実現したもの。数式処理システム以外も含まれる。

SageMathに含まれる主な無償の数式処理システム

  • SymPy[8]
    Pythonで書かれたシンプルで軽量な数式処理システム。最小限の構成になっている。
  • Maxima[9]
    LISPで書かれたSymPyより重量な数式処理システム。数式処理システム以外の可視化ツールなども含まれる。

比較

知名度は有償ではMathematicaが優勢、無償ではSymPyが優勢。
性能はMathematica>Maple>SageMath>Maxima>SymPyの順。
学びやすさはSymPy>Maple=Mathematica>SageMath>Maximaの順。

有償なら財布の紐が許せばMathematicaだが、Mapleでも十分。
無償なら大規模で複雑な数式処理にはSageMath、簡単なものにはSymPyが最適。

試す方法

SageMath

以下の記事を参考に環境を構築し、文法の勉強をすればオンライン上で試せる。
https://zenn.dev/ryoooou/articles/012fab9a425638
https://doc.sagemath.org/html/en/a_tour_of_sage/index.html

SymPy

こちらは環境構築は要らず、文法の勉強をすればオンライン上で試せる。
https://live.sympy.org/
https://docs.sympy.org/latest/tutorials/intro-tutorial/index.html#intro-tutorial
https://showa-yojyo.github.io/notebook/python-sympy/index.html

もっと手軽に使える数式処理システム

他にもGUIベースの数式処理システムも幾つかある。

  • wolframalpha[10]
    Mathematicaを基にした質問応答システム[11]
  • mathdf[12]
  • symbolab[13]

このようなシステムには途中式の表示のような、CUIベースのシステムではできないことが可能なものもある。しかし柔軟性は低い。
ほとんどのシステムでは途中式の表示は有料だが、mathdfでは無料で使える。

脚注
  1. https://ja.wikipedia.org/wiki/数式処理システム ↩︎

  2. https://en.m.wikipedia.org/wiki/Computer_algebra ↩︎

  3. https://ja.m.wikipedia.org/wiki/数値解析 ↩︎

  4. https://en.wikipedia.org/wiki/Wolfram_Mathematica ↩︎

  5. https://en.wikipedia.org/wiki/Maple_(software) ↩︎

  6. https://www.reddit.com/r/math/comments/1bn9g2j/mathematica_vs_maple_2024/ ↩︎

  7. https://en.wikipedia.org/wiki/SageMath ↩︎

  8. https://ja.wikipedia.org/wiki/SymPy ↩︎

  9. https://ja.wikipedia.org/wiki/Maxima ↩︎

  10. https://www.wolframalpha.com/?source=footer ↩︎

  11. https://ja.wikipedia.org/wiki/Wolfram_Alpha ↩︎

  12. https://mathdf.com/ja/ ↩︎

  13. https://ja.symbolab.com/solver ↩︎

Discussion