問題タブ [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.

0 投票する
5 に答える
504 参照

clojure - clojure のシンボリック行列ライブラリ、アドバイスが必要

線形代数用の Java ライブラリはたくさんありますが、Clojure には現在、記号演算のサポートを含む慣用的なコンピューター代数システムがありません。手始めに、簡単なことに取り組み始めることができると思います。

最初のステップとして、データ構造を正しくすることが良いスタートになると思います。

ステップ 1: 永続的なマトリックスを実装する

deftype(または)を使用reifyしますが、今のところ、実装を容易にするために、ストレージにハッシュマップを使用します (そのほうがよいと思われるが、トレードオフがある場合は別の方法を提案してください)。(配列の使用、外部 Java ライブラリへの委任、ある種のトランジェント インターフェイスの実装など、パフォーマンス要件に応じてさまざまな実装を想像できます。)

私の質問は、どのインターフェイス/プロトコルを実装することを検討すべきですか? (一般に、clojure が使用するすべてのプロトコル/インターフェースの適切なリストは何ですか?) また、これらの実装方法に関するアドバイスはありますか?

実装する私のリスト:

-不変の方法でマトリックスのセクションを変更するには、関連付けが役立ちます

-行列を要素のアクセサーとしての関数として扱い、2つのタプルを渡して単一の要素、単一の値(幅* y + xによるインデックス)、ハッシュマップを渡して列、行を取得できると考えていました。またはマイナー、カスタム クエリ ハッシュマップ/言語を介して。

現時点での私の目標は、実装を柔軟に選択できるようにする優れた抽象化を設計することです。

0 投票する
2 に答える
1762 参照

c++ - 運動学的方程式を解くことができるオープンソースの数式処理ライブラリを知っている人はいますか?

私はしばらくの間、運動方程式などの連立方程式を解くことができるオープンソースの数式処理ライブラリを探していました。したがって、5つの変数(初期速度、最終速度、加速度、距離、時間)のうち3つを入力し、解く変数を指定すると、答えが得られます。これができるものを見つける際に私が抱えている問題は、これらの方程式が非線形であるということだと思います。誰かがこれを行うことができる何かを知っているかどうか疑問に思いましたか?例として運動学的方程式を使用しています。これが可能であるかのように、必要な他のすべてを実行できるようになります。お願いしすぎかどうかわかりませんが、お答えいただければ幸いです!

0 投票する
1 に答える
694 参照

sage - Sage: Catch MACSYMA-QUIT is Undefined

私の状況

通常のシェルでsage.allモジュールを使用している場合、またはのようなメソッドを実行するとエラーがスローされます。pythonsage.allsolveassume

assumeorsolveをシェル (およびプリプロセッサ) で実行sageすると、想定どおりに動作します。

私の質問

sage.allで正しく作業するにはどうすればよいpythonですか?

ありがとう - 私の質問に関して不明な点があれば、コメントしてください。

0 投票する
2 に答える
494 参照

f# - C# ライブラリは ^ 演算子をオーバーロードします。代わりに ** を使用するには?

Symbolismライブラリは、算術演算子をオーバーロードします。C# で書かれていますが、F# から使用できます。

出力:

しかし、それ^は力の過負荷にもなります。もちろん、これは F# ではうまく機能しません。

回避策として、powers のメソッド グループをエクスポートしました。

出力:

代わりにメソッド グループ**を使用するにはどうすればオーバーロードできますか?Aux.Pow

私はこのようなことができます:

そして、それはMathObject値に対して機能します:

しかし、同様Aux.Powにオーバーロードさintれています:

どんな提案でも大歓迎です!

0 投票する
1 に答える
4699 参照

python - sympy integrate が返す区分方程式の扱い

sympy には、Piecewise オブジェクトを返す積分があります。

この区分方程式の最初の枝だけを抽出したい、つまりitest.parts(0)単純に を抽出するようなことができるようにしたいのですsqrt(pi)*z/2。これを行う方法が見つからないようですが、ドキュメントで間違った検索用語を使用している可能性があります。何か案は?

編集

itest.args[0][0]少し調べてみると、この式を抽出できることがわかりました。ただし、これはちょっとしたハックのようです。より良いアプローチはありますか?

0 投票する
1 に答える
273 参照

matlab - 微分後の式の整理

この問題で使用している方程式には指数が含まれています。このため、微分後、追加の定数やその他の要因を除けば、ほとんど変更されていないように見えます。これらの指数を集めて、それらが含まれる式の名前に戻すことができるかどうか疑問に思っていました。次に例を示します。

この関数定義を考えると

微分した後、次のようになります

そして、どうにかしてそれを変換できれば素晴らしいでしょう

これは MuPad やその他の CAS パッケージで可能ですか?

0 投票する
1 に答える
174 参照

programming-languages - 追加機能と最適化のためにコンピューター代数システムを使用する言語はありますか?

たとえば、次のような関数を想像してください。

シンボリック代数を使用すると、コンパイラは x = y / 2 であると判断します。さらに良いことに、y / 2 の結果を格納するには int では不十分であると不平を言うでしょう。この機能が、制約および/または境界条件を持つ ODE の解決に拡張されることを想像してください。必要に応じて、(実行時に) シンボリックまたは数値メソッドを使用した統合。私は、たとえば、次のようなものを見たいと思っています。

単純化して次のようにします。

さらに、関数内でローカルに式を単純化できるだけでなく、プログラム全体の最適化を実行できます。数値の安定性を向上させる (浮動小数点エラーの影響を減らす) ために式を再配置したり、別の表現を使用してそれらを完全に削除したりすることもできます。BigInt、IEEE1394 の 4 倍精度浮動小数点数、述語によって定義されるセット、区分関数の統合。おそらくもっと多くのことができるでしょう。

そんなことありえますよね?Mathematica または MatLab のプログラミング言語関数を使用してこのようなことを実行できることは知っていますが、それらはソース コードによって呼び出されます。コンパイラによってソースコードに適用されるようにしたい。(これらの言語にはこの種の機能がありますか? 私にはわかりません.) 私は仕事で言い訳があれば Mathematica を使うのが好きですが, C++ の魔法のように見える関数は外部参照なしでは意味をなさないものになってしまいます. Mathematica ノートブック。1 つの言語、1 つの環境で数学者とプログラマーになれるようになりたいです。そのようなものは存在しますか?

0 投票する
1 に答える
233 参照

symbolic-math - 単純化ルールが適切に適用されていない

ここのコードを使用して Maxima で Dirac Bra-Ket 表記を使用しようとしていますhttp://raoul.koalatux.ch/sites/ladderoperator/ladder_operator.html

ほとんどの式で機能します:

すべて正しく単純化しますが、

bra(0) への単純化に失敗します。Maxima にこのケースを単純化させるにはどうすればよいでしょうか?

0 投票する
1 に答える
330 参照

matrix - 最大値の任意サイズの行列

任意のサイズの行列を使用して計算を行いたい。簡単な例 - 任意の要素を持つ 2 つの行列 NxM と MxK を取り、積の要素を合計と見なします。

しかし、行列サイズを整数として指定せずにそのような記号計算を行う方法を見つけることはできません。

matrix()整数がmakelist()欲しい、整数が欲しい。

マキシマでこのようなことをする方法はありますか? または任意のCAS?