問題タブ [computer-algebra-systems]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 方程式の等価性テスト (C++ または Unix ツールを使用) (代数関数の同型)
実行する C++ オープン ソース ライブラリ (またはオープン ソースの Unix ツール) を探しています。
式は、実行時に AST ツリー、文字列、またはその他の形式で作成できます。
方程式はほとんどが単純な代数であり、未知の関数に関するいくつかの仮定があります。ドメインは、整数演算になります (関連する問題はよく知られているため、浮動小数点の問題はありません。@hardmath にストレスを与えてくれてありがとう、私はそれが既知であると仮定しました)。
例: 入力には function が含まれphi
ており、それに関する仮定 (ほとんどの場合)phi(x,y)=phi(y,x)
があり、 を解決しようとします。
equality_test( phi( (a+1)*(a+1) , a+b ) = phi( b+a, a*a + 2a + 1 )
ファジーまたは任意の等式テストである可能性があります-つまり、常に成功する必要はありません(方程式が等しい場合でも「false」を返す場合があります)。
phi
関数に関する上記のような仮定をサポートすることに問題がある場合は、私はこれを処理できます。そのため、単純な線形代数方程式の等価テスターも同様に歓迎されます。
- C/C++ プログラミング ライブラリまたは Unix ツールの推奨事項を教えてください。(オープンソース)
- 可能であれば、そのような等価テストが特定のライブラリ/ツールでどのように見えるかの例を添付していただけますか?
PS そのような equality_test が (成功した場合) 2 つの与えられた方程式の間で同形性 (つまり、一種の「マッピング」) を返すことができれば、大歓迎です。しかし、そのような機能を持たないツールも大歓迎です。
PS「ファジーテスター」とは、ランダムな入力に対するテストではなく、2つの関数の「同形」を探すという点で、内部方程式ソルバーが「ファジー」になることを意味します-確かにこれを実装できますが、試してみますより精度の高いものを見つけるために。
PPSブルートフォース「すべての入力テスト」よりも優れたパフォーマンスソリューションが必要な理由は別の問題です。上記の方程式は、方程式内の変数間のマッピングを持たない、私の内部問題の単純化された形式です。つまり、私にはeq1=phi( (a+1)*(a+1) , a+b )
とがありeq2=phi( l+k, k*k + 2k + 1 )
、それと を見つけなければなりませa==k
んb==l
。しかし、このサブ問題は、「総当たり」アプローチ (このアプローチの漸近的な複雑さでさえ) で処理できます。変数がわずかしかない場合は、8 とします。そのため、可能なマッピングごとにこの equation_test を実行する必要があります。その仕事を丸ごとできるツールがあれば、とてもありがたいし、そのようなプロジェクトに貢献できます。しかし、私はそのような機能を必要としません。単にequation_test()で十分であり、残りを簡単に処理できます。
要約すると:
- equality_test() は、私が解決しなければならない多くの下位問題の 1 つにすぎないため、計算の複雑さが重要になります。
- 100% 信頼できる必要はありませんが、いくつかのランダムな入力と変数マッピングを使用して方程式をテストするだけでなく、可能性が高くなります:)。
- 「はい」または「いいえ」の出力 (すべての追加情報は役立つかもしれませんが、将来的には、この段階で「はい」/「いいえ」が必要です)
c++ - C / C ++/Obj-Cのシンボリック数学ライブラリ
iPhoneにグラフ電卓を実装しようとしています。式や関数の文字列を取得して操作できるライブラリを探しています(導関数、切片、ゼロなどを検索します)。このようなものはありますか?
haskell - アフィンk代数計算用のライブラリ?
リング内の多項式の演算を計算するのに役立つライブラリまたは数式処理システムを探しています
ここF_2
で、は2要素の有限体であり、はのすべての<f^2 - f>
要素から生成された理想です。(私は/希望/これがxorを+および* [ wikipedia ]として使用するブール代数リングであると確信しています)。f^2 - f
f
F_2[...]
例えば、
私はHaskellでこのためのコードを書いたが、残念ながらパフォーマンスはあまり良くない。
注:「アフィンk代数」というタイトルは、アイゼンブドの「体上の多元環」の本p。35; より良い名前があれば、質問を編集してください、ありがとう!
math - 独自の CAS アプリケーション用の Mathematica ライクな (LaTeX) タイプセッティング
私は Mathematica をよく使っているので、使用する必要な関数とパッケージの非常に小さなサブセットを公開するだけの小さくて無料の CAS を作成するというアイデアを得て、Mathematica のようにユーザーに適切な方法で結果を提示したいと考えています。 (背景の Facebook ロゴは無視してください :D ):
私の最初のアイデアは、バックグラウンドでソースに LaTeX コードを作成pdflatex
し、ビューに PDF を含めることでした...しかし、これはやり過ぎのようです! この CAS を C++ または C# で記述したいのですが、そのような素敵な式を出力するための推奨される解決策があるかどうかを知りたいです。
私が最初に考えたのは「リアルタイムの数式編集ビュー」でしたが、コマンドと数式を入力するための入力ボックスと、上部のビューを編集不可の出力にするだけでも問題ありません。
symbolic-math - Maxima:行列をリストに変換する
次の方法で、Maximaでリストを行列に変換します。
他の方法でそれを行う方法は?与えられた行列DataMをリストDataLに変換する方法は?
reflection - 記号計算のためのリフレクティブ言語
まさにその言語で書かれた、プログラム上で動作する言語を探しています。それは、プログラムがその言語の主要な (おそらく唯一の) オブジェクトである言語です。
この観点だけを念頭に置いて作られた、自己プログラム変換言語のようなもの。
動機は次のとおりです。
Real -> Real を計算するためのプログラム P1 が必要です。P1 を取り、それを P1 の記号導関数 (または逆導関数) に変換するプログラム P2 が必要です。明らかに、P2 はほとんどの入力に対して適切な作業を行うことができない可能性があります。
これは、ラムダに対するパターン マッチングと見なすことができます。しかし、非常に便利なパターン マッチングです。
xml - モデル交換のためのコンテンツMathMLとOpenMath
私の研究グループには、MatlabのSymbolicToolboxやPythonのSympyなどのさまざまなシンボリックツールで代数モデリングを行うさまざまな人々がいます。これらのモデルは通常、Cコードにエクスポートされ、さらにシンボリック操作を行うために、独自のシンボリックC++ベースのツールにコピーアンドペーストされます。
このほとんど保守不可能なアプローチの代替案を探しているときに、多かれ少なかれ標準化されているように見える2つの形式、OpenMathと「ContentMathML」を見つけました。私たちはセマンティクスにのみ関心があり、きれいな印刷には関心がないことに注意してください。
これら2つのフォーマットの関係は何ですか?ツール間で数式を保存および交換するために両方を使用できますか?
数式の交換形式は、他にも多かれ少なかれ標準化されていますか?
c++ - Exact Large Finite Field Linear Algebra Library (例: GF(2^128) / GF(2^256) )
全般的
GF(2 128 )/ 2 128や GF(2 256 )/ 2 256などの大きな有限体で正確な計算を実行できるライブラリを探しています。以下に、必要な機能とクールな機能をリストしました。明らかに、ライブラリは可能な限り高速であるべきです:-)。ああ、私は C++ の達人ではないので (そしておそらくほとんどのライブラリは C++ です)、ランダムな要素/定数を生成し、それを乗法逆数に乗算するサンプル コードです。
必須機能
- フィールド要素の追加
- 体の元のかけ算
- 体の元の乗法逆数を求める
機能があると便利
- ベクトル/行列のサポート
- ランダム要素のサポート
私がすでに見たライブラリはおそらく機能しないでしょう
- FFLAS/FFPACKは、そのような大きな有限フィールドでは機能しないようです
- Givaroは、そのような大きな有限フィールドでは機能しないようです
私がすでに見たライブラリは機能する可能性があります(ただし、使用できませんでした)
NTL、要素を反転することはできませんでしたが、GF(2^256) を定義するときにSAGEがこのライブラリを使用しているようで、要素を使用して反転できるため、実際には機能するはずです。x^(-1)
- PARI/GP、ドキュメントで必要なものをすべて見つけることができませんでしたが、SAGEドキュメントには、それが機能するはずだと書かれています
その他の注意事項
- 私はHaskellプログラムを書いており、後でそのライブラリとインターフェースする予定なので、Haskellインターフェースはより簡単です:-)
java - 計算機代数システムの GUI
良い一日。Java で計算機代数のフレームワークに取り組んでいます。この時点では、プログラムでのみ使用できます (たとえば、Java または groovy でコードを記述して使用する必要があります) が、それほどユーザーフレンドリーではありません。単純な問題を解決するためだけに開発環境全体をセットアップし、Java 構文を使用するのは複雑すぎます。
現在、ユーザー インターフェイスとその構文を作成するための比較的簡単な方法を探しています。私たちの考えは、単純で強力な構文 (groovy について考えています) を持つ既存の Java 互換言語を使用して、基盤となる複雑なインフラストラクチャをより自然な構文で隠すライブラリへのバインディングを作成することです。
例えば:
ジャワ:
グルーヴィー:
私たちのニーズに合わせて調整 (埋め込み) できる、優れた IDE (少なくともオートコンプリート付き) を備えた言語が必要です。
このタスクには何をお勧めできますか (IDE と言語の組み合わせ)?