問題タブ [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 投票する
6 に答える
12343 参照

math - コンピュータ代数システムの紹介?

コンピュータ代数システムの一般理論 ( mathematicasympy など)に関するリソース (書籍、クラス、講義ノートなど) を知っている人はいますか?

「入門」の教材が好まれますが、そのような専門的な科目では、何でもかなり高度になるはずです.

0 投票する
3 に答える
568 参照

computer-algebra-systems - Pari/GP で小数を合理化する方法はありますか?

PARI/GP 電卓 (gp) で小数値を分数に自動変換する方法を探しています。たとえば、0.759765625 を 389/512 に変換したいとします。「759765625/10^9」と入力して手動でこれを実行できることはわかっていますが、「rationalize(0.759765625);」のような簡単な方法が必要です。マキシマで動作します。

これを直接できない場合は、小数点以下の桁数を数える関数があるのではないでしょうか? 次に、その関数の結果に 10 を上げることができます。(この関数を有効にするには、先頭の 0 の小数点以下の桁数をカウントする必要があります。)

0 投票する
4 に答える
2992 参照

algorithm - 正弦波の振幅と位相をアルゴリズムで取得しますか?

Maxima コンピューター代数システムで正弦波項を持つ関数の振幅と位相をアルゴリズムで取得する方法を見つけようとしています。これは、定常状態にのみ適用されます (t -> 無限大および過渡現象が減衰するため)。たとえば、些細なケースは次のようになります。

この場合、ゲインは 1 / w になり、位相オフセットはシータになり、一時的な項 exp(-a * t) は無視されます。 a * t) -> 0 as t -> 無限. 「+ 8」という用語も無視します。これは単なる DC オフセットであるためです。エンジニアリングの授業で教えられた方法では、上記のような形式にするために、多くの経験則と退屈な方程式の再配置が必要であり、答えは見ただけで明らかです。

ゲインと位相遅延が存在すると仮定して、それを見つける一般的なアルゴリズム的方法を知っている人はいますか? ? Maximaで実装する可能性が高いですが、数学の観点から説明された一般的な回答をいただければ幸いです。

編集: 私の例から、wの観点から象徴的に答えが欲しいことは非常に明らかだと思いました。w は実際にはオメガであると想定されており、入力の周波数を表しています。私が本当に求めているのは、大量のヒューリスティックな手動式の再配置なしでゲイン項と位相項を生成する標準的な数学演算があるかどうかです。

0 投票する
4 に答える
568 参照

python - 一連の多項式の演算数を最小化する計算機代数ソフト

私は多項式のシステム、かなり単純な多項式式を持っていますが、手を最適化するにはかなり時間がかかります。式はセットにグループ化され、特定のセットにはいくつかの変数に共通の用語があります。

Mathematica、Matlab、または sympy など、複数の多項式を共通の項で最適化して演算数を最小限に抑えることができるコンピューター代数システムがあるかどうかを知りたいです。また、そのようなシステムが中間項の数を最小限に抑えてレジスタの数を減らすことができれば素晴らしいことです。

そのようなシステムが存在しない場合は、Python 記号代数 Sympy を使用して独自に作成します。このようなパッケージに取り組んでいる場合、または開発や使用に興味がある場合は、お知らせください。

ここに作成例があります

したがって、明らかに (t - qA) 項を因数分解できます。ここで、一般的な用語のさまざまな組み合わせで非常に多くの用語を作成すると、手作業で行うのが難しくなります。私が持っている方程式には最大 40 の項が含まれ、セットのサイズは約 20 です。

ありがとうございました

0 投票する
3 に答える
6489 参照

haskell - SymPy のような Haskell ライブラリ?

1 + sqrt(3) のような式を操作し、加算、減算、除算などの基本的な算術演算を行う必要があります。マップのキーとして使用できるように、結果を何らかの標準形式にしたいと考えています。丸めの問題により、1 + sqrt(3) を float に変換することはできません。

Python でのこのタスクには SymPy を使用しました。Haskell に相当するネイティブ ライブラリはありますか?

0 投票する
3 に答える
2511 参照

clojure - Clojure のための計算機代数

短いバージョン: x のシーケンスを効率的に生成できるように、関数 f(x) の値が不変である x の変換 (順列、回転など) を指定できる Clojure コードに興味があります。 r = f(x) を満たします。Clojure 用のコンピューター代数の開発はありますか? (些細な)例として

(preimage f #{0}) を呼び出すと、効率的に #{3 4 7} が返されます。当然、コドメインに正しく注釈を付けることもできます。助言がありますか?

より長いバージョン: Clojure 用のコンピューター代数の開発について知りたいと思わせる特定の問題があります。誰かが私にそのようなプロジェクトを教えてもらえますか? 私の特定の問題は、F(x) = r を満たす単語のすべての組み合わせを見つけることです。ここで、F はランキング関数であり、ra は正の整数です。私の特定のケースでは、 f は合計として計算できます

F(x) = f(x[0]) + f(x[1]) + ... f(x[N-1])

さらに、s の a、b、S の s に対して f(a)=f(b) となるように、素集合 S = {s_i} のセットがあります。したがって、F(x) = となるすべての x を生成する戦略r は、この F の因数分解と、各 s_i の下での f の不変性に依存する必要があります。つまり、合計が r になる S の要素を含むサイトのすべての順列を計算し、各 s_i の要素のすべての組み合わせでそれらを構成します。これは、次のように非常にずさんに行われます。

これにより、仕事は完了しますが、根底にある全体像が失われます。たとえば、連想演算が合計ではなく積である場合、一部を書き直す必要があります。

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

cryptography - Mapleのように数字の桁数を調べます

RSAキーを生成するための基本的な手順を実装しようとしています。このプロシージャは、aとbの範囲の数値を受け入れます。aとbの間隔が「5桁」であることを確認する必要があります。

だから私は解決策を思いついた:

Mapleはpとqをtype関数の変数として理解しているようです。log10を使用して、安全なRSAキーを計算するために素数が何桁あるかを調べたいと思います。evalb2つの対数を決定できないため、失敗しますか?

0 投票する
3 に答える
5024 参照

php - コンピュータ代数システムの構築

PHP で CAS (Computer Algebra System) を作成していますが、現在行き詰まっています。私はこのウェブサイトを使用しています。

今、トークナイザーを書きました。次のような式に変換されます。

これに:

(ここで、グループはトークンの別のセットです)。この方程式をどのように単純化できますか? ええ、私はあなたができることを知っています: X-vars を追加しますが、それらはサブグループにあります。これらのトークンを処理するために使用できる最良の方法は何ですか?

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

functional-programming - 記号計算と関数型プログラミングは関連していますか?

数式処理システム(Matlab、Mathematicaのシンボリックツールボックスなど)での記号計算と関数プログラミングはどのように関連しているか疑問に思いました。前者は後者に属しますか?

ありがとう、よろしく!

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

scala - Scala用の数式処理システム(CAS)

私はscala用のシンプルなCASシステムを探しています。

次の機能が必要です。

  • 抽象構文ツリーへのアクセスを許可します(一致を容易にするために、できればケースクラスを介して)
  • StringASTに解析する
  • 式を簡略化する

何も存在せず、自分で基本的なことを書かなければならない場合、最良の表現は何ですか?

私はこのようなことを考えています:

ここで説明する単純化アルゴリズムを実装しますが、これは面倒なようです。(しかし、代数式を単純化することになると、退屈は避けられないのでしょうか?)

この特定の実装に対するいくつかの批判は次のとおりです。

  • ケースクラスへの引数について、あちこちで再帰的に呼び出しsimplifyます(どういうわけか一元化できるようです)
  • varargs /List引数を処理するAddと、Mutliply厄介になる可能性があるようです