象徴的な数学Python?[定休日]
-
21-08-2019 - |
質問
私は極めに関数やプログラミングや企画を開始 象徴的な数学 プロジェクト ゼロから.
はこのプロジェクトが考えたんですか?
どこから始める?
については如何に考えるべきであこのアプローチ プロジェクト?
いいです。
よろしくお願いします。
解決
でプロジェクトを実践プログラミングに関する知識.ものを処理しなければいけない本物のライブラリその他の人が使いたいのこのプロジェクトないが始alloneから...
が開始 本ソリューションであいて思うのでいます。どのようにプロジェクトが異なるから。
他のヒント
この優れたプロジェクトアイデア1.Is?
はい。私はそれは、かなり早く、テストおよびプログラミングの力を拡張します面白い作品の無限の供給源を提供するために期待される。
2.Whereを開始するには?
既存の作品をご覧ください。I二他の提案。 SAGEは非常に印象的であり、あなたが私のアドバイスを求めていた場合、私はあなたが最初に数字や記号で算術演算を行うための基本的なシステムを書くことを示唆しています。その後、SAGEを見ていると、他の言葉ではなく、自分でそれをすべてやろうとしているよりも大きな何かに貢献になるには、システムを拡張するモジュールを書きます。 Mathematicaとメープル、たMacsymaと公理でも見てください。後者の2は無料です(と思う)が、彼らはすべてが順調に行やアイデアや課題の偉大なソース文書化されています。
3.How 1は、このプロジェクトにアプローチすべきか?
1はゾウを食べるに近づくだろうと。一度に一つの一口。もっと真剣に、私はそのような表現の表現、そしてあなたがあなたの歯を切ることができるいくつかの基本的な機能(多項式の算術)などの一部のコアな問題は、あると思います。
4.Any良いリソース?
とてもたくさん。 「コンピュータ代数」、「用語の書き換え」のグーグル。 Amazonで入手できる何を見ています。そして、あなたがアクセス権を持っている場合は、ACMのデジタルライブラリをチェックしてください。
幸運ます。
シンボリック数学は楽しいプロジェクトです。誰が使用するかどうかは、あなたの質問には関係するように見えるので、ダイビングではありません。
私は長年にわたって、これらのうちの2つを書きました。クールなは、SQL句のためのものだった - それはいくつかの追加や条件を中折りするSQLのいくつかの些細な象徴的な操作をしました。ない完全な「ソルバー」または「オプティマイザ」か何か、句の可能な任意のSQLのほんの象徴的な操作。少ない涼しい1は、デバッガのためでした。それは(象徴)の変数のオフセットを積み重ねて動作するように複雑な数学をやっています。
あなたは数式の要素のためのクラスを定義することによって開始する - 。オペランド、演算子、関数、など。
あなたは発現させるための具体的な値は、簡単かつ明白なものです取得する。これらのオブジェクトが参加しなければならない操作かを決定しなければなりません。すべての変数が結合している場合に起動します。
その後、いくつかの変数が結合しないままのケースを処理し、あなたが表現の部分を評価するだけでできます。
次に、正準形への発現を再構成処理します。つまり、あなたは部分的な評価を行ってきたとAdd( Variable(x), Add( Variable(x), Lit(3) ) )
ています。あなたはAdd( Multiply( Lit(2), Variable(x) ), Lit(3) )
にこれを変換するためのルールを記述する必要があります。
印刷出力が意味をキャプチャするために必要な最小限の括弧を持つように1つの非常にクールな運動は括弧を最適化されます。
我々はすべての代数的操作を行うための学校で学ぶ多く、他の多くの「表現の変換」のルールがあります。それらの多くます。
具体的には、変数を分離するための式を整理すると、いくつかのケースでは、本当に難しいことができます。
派生変換を行うことは簡単ですが、シンボリックな統合は、特殊な例トンと本当に、本当に難しいです。
基本は楽しいです。あなたが行きたいどこまでによっては、それが次第に難しくなります。
@Resources:あなたは pythonica のを見てみることができ - これは、Mathematicaを実装するための試みでしたPythonで型プログラム(ソースコードがダウンロード可能である)。
これは pySym のもアイデアやスターターを取得し、他の人がしてやっている学習のためにあなたが興味かもしれないブログパイソン&シンボリック数学ます。
資源の方法で、より多くの: SympyCoreするます:
SympyCoreプロジェクトの目的は、Pythonプログラミング言語で記号式を表し、操作するための新しい高パフォーマンスのソリューションを模索するため、およびに簡単だろう基本的に一貫性があり、十分に一般的な記号モデルをachiveする新しいシンボリックモデルを試してみることですコンピュータ代数システム(CAS)に拡張します。
私は、これはすべてのスキルレベルのプログラマのための素晴らしいプロジェクトだと思います。有用であるために十分なだけ強力であるシンボリック計算機を実装行うことは非常に簡単です。あなたが幅で作業を続ける場合は、あなたが長い時間のためにそれを自分で占有できることを追加するので、多くの楽しい機能があります。あなたは深さのために行くことを選択した場合、あなたは物事がすぐにの非常に難しいを取得していることがわかります。それはあなたが好きなものだ場合は、無期限に自分自身に挑戦することができます。
多くの偉大なリソースがあります。それは本当に一般的な記号操作よりも特別な形式(多項式、整数、行列)での算術演算で、より懸念しているが、私は、ツアGathenとゲルハルトによる著書「現代のコンピュータ代数」をお勧めします。あなたが出始めているとき、あなたはシンボリック数学は概念的にLispで行うことは非常に簡単ですので、実際に、より良い、いくつかのLispやSchemeのチュートリアルを見て、助けすることができる、とPythonでシンボリックエンジンを構築するためにあなたは、多かれ少なかれする必要があります基盤としてミニのLispを実装します。
他の人が指摘したように、あなたはSymPyを見て、インスピレーションやコンクリートのアルゴリズムに対してsympycoreことができます。プロジェクトのいずれかのソースコードは、少し複雑な(しかしから学ぶことは確かにあまりにもハードではない)である。
私はビットプラグできる場合