あなたが大学生であろうとデータサイエンスで働いていようと、数学を回避することはできません。
データサイエンスは応用数学/統計の一種であると主張する人さえいるかもしれません。 NumPy、SciPy、 scikit-Learn, TensorFlow 数学を定量的に扱うPythonライブラリのほんの一部です。
ただし、数学記号を明示的に処理するための競合他社はSymPyだけです。
SymPyについてすべて調べてみましょう。
何ですか シンパイ?
SymPyはPython記号数学ライブラリです。 コードを可能な限り基本的に保ち、理解しやすく、簡単に拡張できるようにしながら、フル機能の数式処理システム(CAS)を目指しています。
それは完全にPythonで書かれています。 任意の浮動小数点演算用の純粋なPythonライブラリであるmpmathのみに依存しているため、簡単に使用できます。
ライブラリとして、使いやすさを重視して作成されました。 アプリケーションプログラムインターフェイス(API)の設計では、拡張性が重要です。
その結果、Python言語を拡張しようとはしません。 目的は、ユーザーが他のユーザーと一緒に使用できるようにすることです Pythonライブラリ インタラクティブな環境であろうと、より大規模なシステムのプログラムされたコンポーネントであろうと、ワークフローで。
ライブラリとしてのSymPyには、組み込みのグラフィックがありません ユーザーインターフェース (GUI)。 ライブラリは次のとおりです。
- BSDライセンスの下でライセンスされているため、スピーチとビールの両方に関して無料です。
- Pythonベース:完全にPythonで開発され、言語としてPythonを採用しています。
- 純粋なmpmathのみに依存しているため軽量 Pythonライブラリ 任意の浮動小数点演算用で、使いやすくなっています。
- インタラクティブツールとして使用するだけでなく、他のプログラムに組み込んだり、カスタム機能で変更したりすることもできます。
なぜSymPyを使うのですか?
数式処理システムであるSageも、プログラミング言語としてPythonを採用しています。 一方、Sageは巨大で、ギガバイト以上のダウンロードが必要です。 軽量であるという利点があります。
コンパクトであることに加えて、Python以外の依存関係がないため、実質的にどこでも使用できます。
さらに、SageとSymPyの目的は同じではありません。 Sageは、フル機能の数学システムを目指しており、主要なオープンソースの数学システムをすべてXNUMXつにまとめることで実現しています。
統合などのSage関数を使用すると、それに含まれるオープンソースパッケージのXNUMXつが呼び出されます。 実際には、Sageに組み込まれています。 一方、SymPyは、すべての機能がそれ自体に実装された、自己完結型のシステムを目指しています。
ライブラリとして機能するその能力は重要な機能です。 多くの数式処理システムは、対話型環境で使用することを目的としていますが、自動化または拡張することは困難です。
Pythonでインタラクティブに使用することも、独自のPythonプログラムにインポートすることもできます。 また、独自のルーチンで簡単に拡張できるAPIもあります。
SymPyのインストール
以下のコマンドを使用して、ご使用の環境にインストールしてください。
SymPyシンボル
今すぐ始めましょう! その基本的な目的はシンボルです。 SymPyでは、次のように記述してシンボルxを生成できます。
上記のコードはシンボルxを生成します。 その中の記号は、未知の値を表す数学的記号をエミュレートすることを目的としています。
その結果、次の計算が以下に表示されます。
上に示したように、記号xは未知の量と同様に機能します。 多くの記号を作成したい場合は、次のように記述してください。
この場合、同時にXNUMXつのシンボルyとzを作成しました。 これらのシンボルは、必要に応じて加算、減算、乗算、および除算できるようになりました。
SymPy関数
1. sympify()関数
sympify()メソッドは、任意の式をSymPy式に変換します。 整数などの標準のPythonオブジェクトを変換します。
文字列は、整数などの式に変換されます。
2. evalf()関数
この関数は、指定された数式を最大100桁の浮動小数点精度で評価します。
この関数はさらに、subs引数としてシンボルの数値を持つディクショナリオブジェクトを受け入れます。 次のフレーズを考えてみましょう。
浮動小数点精度はデフォルトで15桁に設定されています。 ただし、これは1から100までの任意の数に変更できます。
次の式は、20桁の精度で評価されます。
3. Lambdify()関数
Lambdifyは、その式をPython関数に変換する関数です。 広範囲の値にわたって式を評価する場合、evalf()メソッドは非効率的です。
Lambdifyは、SymPy名を提供された数値ライブラリ(通常はNumPy)の名前に変換することを除いて、ラムダ関数と同様に機能します。
デフォルトでは、Lambdifyは数学標準ライブラリの実装に適用されます。
特徴
ライブラリの最も重要な機能のいくつかをここに示します。 含まれていないものは他にもたくさんありますが、チェックしてみてください こちら.
1.コア機能
- 基本的な算術:+、-、*、/、および**演算子がサポートされています(パワー)
- 多項式展開
- 任意精度の整数、有理数、および浮動小数点
- 三角関数、双曲線関数、および指数関数、根、対数、絶対値、球面調和関数、階乗およびガンマ関数、ゼータ関数、多項式、および特殊関数
- 非可換である記号
- マッチングパターン
2.微積分
- 統合:この方法では、拡張されたRisch-Normanヒューリスティックを使用します
- 差別化。
- 関数の極限
- ローランテイラー級数
3.多項式
- グレブナー基底
- 部分分数の分解
- 除算、gcd結果は基本的な算術の例です。
4.組み合わせ論
- 順列
- グレーコードとプリューファーコード
- 組み合わせ、パーティション、サブセット
- 多面体、ルービック、対称、およびその他の順列群
5.離散数学
- 合計
- 論理式
- 二項係数
- 数論
アプリケーション
1.電卓を構築する
2.数式処理システム
他の数式処理システムとは異なり、Symbol()関数を使用して手動で記号変数を宣言する必要があります。
3.微積分
あらゆる種類の計算を記号的に実行する記号計算システムの能力は、その主な強みです。
ステートメントを単純化し、記号的に、導関数、積分、極限を計算し、方程式を解き、行列と相互作用し、さらに多くのことを行うことができます。
あなたの食欲を刺激するために、ここに象徴的な力の味があります。
SymPyで他に何ができますか?
追加の問題について詳しく説明するのではなく、スキルを向上させるのに役立つリソースのリストを提供します。
- 行列と線形代数: 行列を処理し、基本的な線形代数演算を実行できます。 言語はNumPyの構文に似ています。 ただし、顕著な違いがあります。 まず、調査します 行列 図書館で。
- 表現: ツリーベースの構造である式ツリーを利用して、式を追跡します。 見る 式の木 あなたが彼らの内部の働きについてもっと知りたいのなら。
- 導関数と積分: それはあなたが入門的な微積分学のクラスで学ぶであろうことのほとんどを達成することができます(思考を除いて)。 あなたは私たちの機能を見ることから始めることができます 分化 SymPyで。
- NumPyとの関係: NumPyとSymPyは、どちらも数学関連のライブラリです。 それにもかかわらず、それらは本質的に異なります! NumPyは数値で機能しますが、記号式では機能します。
- 簡略化: これは、式を自動的に簡略化するのに十分インテリジェントです。 ただし、これをよりきめ細かく制御したい場合は、 簡略化.
まとめ
SymPyは、記号数学のための強力なライブラリです。
これを使用して、変数や関数を作成したり、数学ステートメントを象徴的に拡張および簡略化したり、方程式、不等式、さらには連立方程式/不等式を解いたりすることができます。
関数は、スクリプトのテキストとターミナルで直接記述できます (または Jupyterノートブック) を使用して、実行された計算をすばやく評価し、より適切にグラフィカルに描写できます。
SymPyをもっと探索する準備はできていますか? コメントで教えてください。
コメントを残す