1 ポイント 投稿者 GN⁺ 2024-03-01 | 1件のコメント | WhatsAppで共有

SymPyの利点

  • 無料: BSDライセンスに従うSymPyは自由に利用でき、費用はかかりません。
  • Pythonベース: SymPyは完全にPythonで書かれており、Pythonを使います。
  • 軽量: SymPyは任意精度浮動小数点演算のための純粋なPythonライブラリであるmpmathのみに依存しており、扱いやすいです。
  • ライブラリ: 対話的ツールとして使えるだけでなく、他のアプリケーションに組み込んだり、ユーザー定義関数で拡張したりできます。

SymPyを使用しているプロジェクト

  • Cadabra: SymPyをスカラー代数演算に使用する、テンソル代数および(量子)場の理論システム。
  • ChemPy: Pythonで書かれた、化学に役立つパッケージ。
  • devito: 高性能ステンシル計算のための記号DSLおよびJITコンパイラ。
  • EinsteinPy: 記号的および数値的な一般相対性理論のためのPythonパッケージ。
  • galgebra: 幾何代数(旧sympy.galgebra)。
  • LaTeX Expression project: 代数表現のLaTeX組版を容易にし、自動代入と結果計算が可能です。
  • Lcapy: 線形回路解析教育のための実験的なPythonパッケージ。
  • OctSymPy: SymPyを使用するOctave向け記号パッケージ。
  • Optlang: 数理最適化問題を解くためのPythonパッケージ。
  • PyDy: Pythonにおける多体系動力学。
  • pyneqsys: 非線形方程式系を数値的に解くため、記号的に定義されています。
  • pyodesys: PythonでのODE系の簡単な数値積分。
  • PyTorch TorchInductor: 動的なshapeとstrideをサポートするためにSymPyを使用するTorchInductor。
  • QMCPACK: C++における量子モンテカルロ。ユニットテストおよび一部のコード生成のための参照値生成にSymPyを使用。
  • Quantum Programming in Python: 量子1D単純調和振動子および量子マッピングゲート。
  • SageMath: SymPyを含むオープンソースの数学システム。
  • Scikit-fdiff: 有限差分離散化。
  • SfePy: Pythonにおけるシンプルな有限要素。
  • Spyder: RStudioまたはMATLABに相当する科学技術向けPython開発環境。SpyderのIPythonコンソールで完全なSymPyサポートが可能です。
  • Symbolic statistical modeling: 複雑な物理モデルに統計演算を追加。
  • yt: 体積データを解析・可視化するためのPythonパッケージ(ytの単位系であるunytはSymPyを使用)。

GN⁺の見解

  • SymPyはBSDライセンスで無料提供される、Pythonベースで書かれた数学演算用ライブラリです。特にオープンソースコミュニティで活発に利用されており、さまざまな科学・工学分野で活用できる利点があります。
  • SymPyは軽量で他のアプリケーションに簡単に統合できるため、複雑な数学的問題を解決したり、独自の関数を追加して拡張したりできる柔軟性を提供します。
  • この技術を導入する際にはPythonの基本的な理解が必要であり、特に数理モデリングや記号計算が重要なプロジェクトでその価値を発揮します。
  • SymPyを使うことで得られる利点は、高性能な数学演算、さまざまな分野への拡張性、そしてオープンソースコミュニティの支援による継続的な改善です。
  • 類似機能を提供する他のプロジェクトとしては、Mathematica、Maple、MATLABのSymbolic Math Toolboxなどがありますが、これらは商用ソフトウェアであるため、SymPyは無料でありながら強力な代替となり得ます。

1件のコメント

 
GN⁺ 2024-03-01
Hacker Newsのコメント
  • ロボティクス分野で働いていると、3D変換の結果として計算された大きなベクトルを作成し、複数の状態変数に対するそれらのヤコビアン(導関数)を計算しなければならないことがよくある。これは複雑な方程式につながる。sympyを使うと、このような大きなベクトルを宣言的に計算し、ヤコビアンを求め、その結果をCコードとしてエクスポートして、すぐにコードベースへ取り込める。たとえば、ロボット位置とセンサー位置を含むデータセットにアクセスできるなら、ロボット中心に対するセンサーの位置をどう推定するかを宣言的に表現する方法を示すおもちゃの例がある。そのために必要なのは、transforminvert 関数を定義することだけだ。
  • SymPyは本当に素晴らしいツールで、長年にわたって教育用ツールとして使ってきた。Mathematica/Maple などと比べると、学生が数学を学ぶときに使う動詞(solve、expand、factor など)と正確に一致するAPI関数を備えているので、最良の選択肢だと思う。始めたい人向けの小さなチュートリアルがあり、実行可能なノートブック形式でも提供されている。また、何もインストールせずにSymPyを試したい人向けに、Webブラウザー上で Python + SymPy を実行できる SymPy ライブシェルもある。
  • 記号数学は学部課程で本格的に扱われることがなく、触れた内容の多くは Mathematica や MATLAB のようなプロプライエタリソフトウェアに縛られていた。自分はテンソル計算を多用する数学・工学分野で働いており、主なツールとして Maxima を使っていたが、この分野向けのパッケージは限られていて扱いづらい。今では、Python がもともと持っている抽象化のおかげで、より複雑な計算には SymPy を使っている。いつか Norvig の『Principles』を読んで、Maxima を自分の用途に合わせて修正できるようになりたい(テンソル計算や記号的なテンソル/幾何学代数に関する Maxima のソースコードや実装を読み解くための、もっとよい参考文献があれば知りたい)。
  • SymPy と Mathematica のベンチマークがあり、結果では Mathematica は 1,523 問を解けず、SymPy は 48,529 問を解けなかった。したがって、SymPy にはまだ追いつくべき部分がある。
  • SymPy を電卓代わりに使っており、そのための GitHub リンクが紹介されている。
  • 10年前、一般相対性理論に関心を持っていたころ、アインシュタイン方程式の記号計算を扱う簡単なプログラムを書きたいと思っていた。SymPy も選択肢ではあったが、使いにくく、うまく動かせなかった。Mathematica を使ったら数時間で解決した。その後さらに拡張して、ブラックホールに関する論文で多くの計算を行った。現在の SymPy は大きく開発が進み、優れたライブラリも構築されていて、Schwarzschild metric に関する Jupyter ノートブックの例まである。
  • SymPy は Jupyter 上で非常によく動作する。SymPy 用のデモノートブックへのリンクが紹介されている。
  • SymPy の Wikipedia リンクとともに、Python と SymPy を使って対数を教える方法についての議論へのリンクが紹介されている。また、SymPy と Matlab を比較するリンクや、Matlab ユーザー向けに NumPy を紹介する文書へのリンクもある。
  • SymPy は作業をこなすには十分だ。ふだんは SageMath の複合ライブラリの中で使っているが、SymPy が単独で使えるほど成熟したかどうかという疑問がある。
  • 数値計算を行う「物理学者」にとって、SymPy は神からの贈り物のようなものだった。後で C++ で最適化する前に、より高度なモデルをプロトタイピングするのに向いている。Mathematica はあまり使ってこなかったが、SymPy より記号処理が強力で、扱いもそれほど気難しくないように感じる。Mathematica にもっと詳しい人が、この点を明確に説明してくれるとよいのだが。