問題タブ [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.
computer-algebra-systems - マグマCAS。有理数の x,y に対して x^3+y^3=d となる [1..100] のすべての d を見つける
このメソッドは、何らかの理由で「procedure() ... end procedure」のみを出力しています。正直なところ、理由がわかりません。修正しようとしましたが、前の. コード C_i と E_i は for ループ内の有効な概念でした。正確な間違いを教えていただく必要はありませんし、マグマのことを知っている必要もありませんが、この問題を解決するのに協力していただけると助かります (チームワークのように?)。
global-variables - マグマ計算機代数システムのローカル変数とグローバル変数
これ (Max(100)) を実行すると、max = 0 と表示されます。ただし、#gen = 1 と 2 が異なる場所にあるため、#gen > 0 であることはわかっています。max のローカライズに苦労しています。if ステートメントと for ステートメントの外側の max は、for ステートメントと if ステートメントの内側の max とは異なると見なされるため、max は更新されません。マグマ CAS 構文でこれを修正する方法がわかりません。この側面に関してマグマの構文を理解するのを手伝ってくれる人はいますか? local max; を入れてみました。ループ内とifステートメントですが、構文エラーが発生しました。
maxima - Maxima: 最小値を含む式を単純化します
max(a, b) を含む数式を単純化するために Maxima を使用しようとしています。
z = min(x1, x2)とd = abs(x1 - x2)を定義したとすると、恒等式x1 * x2 = z*(z+d)とx1 + x2 = 2*z + dが続きます。
たとえば、次の式を使用します。
上記の ID を手動で適用すると、次のように単純化できます。
マキシマでは、素朴に試しています
長い表情を演出します。
式の奥深くに埋め込まれたx1 * x2およびx1 + x2の出現を Maxima に見つけさせるにはどうすればよいでしょうか? たとえば、さまざまな形式のtellimp、let、letsimpを試しました。
また
また
Maxima に手動で到達できる素敵な短い式を生成させるにはどうすればよいでしょうか? もっと大きな式で作業する必要があります。
parsing - 多項式の正規化
Polynom を読み取り、それを正規化された形式に変換する必要があります。
たとえば、私は読み込んで4*x * (x^2 + 4x + 3)
、に変換する必要があり4*x^3 + 16*x^2 + 12*x
ます。
それにはトリッキーなアルゴリズムがありますか、それとも自分で何かを考える必要がありますか? 基本的にこれは用語を拡張しているだけだと思います。用語を再帰的に解析して解析ツリーを生成するため、正規化操作はこの解析ツリーに適用されます。
私を助けてくれたみんなに感謝
performance - 計算速度のための多項式のセットの最適化
コンピューター代数システム (CAS) によって生成された一連の多項式があります。たとえば、これはこのセットの 1 つの要素です。
-d*d*l*l*qb*b*l*l*q+2*d*f*j*l*q+2*b*f*h*l*qf*f*j*j*qb *b*j*j*q+2*b*d*h*j*qf*f*h*h*qd*d*h*h*q+b*b*j*j*o*o-2 *b*d*h*j*o*o+d*d*h*h*o*o-2*b*b*j*l*n*o+2*b*d*h*l*n *o+2*b*f*h*j*n*o-2*d*f*h*h*n*o+2*b*d*j*l*m*o-2*d*d *h*l*m*o-2*b*f*j*j*m*o+2*d*f*h*j*m*o+b*b*l*l*n*n-2 *b*f*h*l*n*n+f*f*h*h*n*n-2*b*d*l*l*m*n+2*b*f*j*l*m *n+2*d*f*h*l*m*n-2*f*f*h*j*m*n+d*d*l*l*m*m-2*d*f*j *l*m*m+f*f*j*j*m*m
それらすべてを C プログラムでできるだけ早く実行する必要があります。これらの式のいずれかを注意深く見ると、計算速度を最適化できることは明らかです。たとえば、上に貼り付けた多項式では、-d*d*l*l*q、2*d*f*j*l*q、および -f*f*j*j*q という項がすぐにわかります。その合計を -q*square(d*lf*j) で置き換えることができるようにします。ここでできることはたくさんあると思います。私は、コンパイラがこの最適化、またはおそらくより高度な最適化を見つけることができるとは信じていません (しかし、おそらく私は間違っています)。これを maxima (CAS) に依頼しようとしましたが、何も出てきませんでした (私は maxima の初心者なので、魔法のコマンドを見逃している可能性があります)。ですから、私の最初の質問は次のとおりです。計算速度のために多項式を最適化するために使用できるツール/アルゴリズムは何ですか?
ほとんどの変数を共有する一連の多項式を最適化する場合、事態はさらに複雑になります。実際、式ごとに最適化することは、最適化前にコンパイラーによって共通部分が識別される可能性がありますが、これが全体として実行されない場合、最適化後に識別されないため、最適ではない可能性があります。2 つ目の質問は、一連の多項式式を計算速度のために最適化するために使用できるツール/アルゴリズムは何ですか?
よろしくお願いします、
PS : この投稿は、「多項式のセットの演算数を最小限に抑えるためのコンピューター代数ソフト」といくつかの類似点を共有していますが、その 1 つの答えは、目標を達成するためにそれらを使用する方法を述べるのではなく、CAS プログラムを指しています。
c - C での代数操作
現在、基本的な線形代数を実行できるプログラムをコーディングしようとしています.AとBの2つの定数があり、係数を入力して他の値を追加するだけです.
例:
フィボナッチ数列の項を見つけたいとします
A + B を取得してファイルに追加したい。
今、私は第2項と第3項を追加したい
等々。
すべての数値に対してこれをうまく実行できるプログラムがありますが、ビネット式を使用せずに代数的に上昇することを望みます。
私の唯一の推測は、A と B の係数を 2 つの別々のファイルに保存して計算し、出力することですが、線形代数が C で利用できる場合は、はるかに簡単になります。
編集:気にしないでください、ここが数学オタクではなくコンピューターオタクの場所であることを忘れていました
python - Sympy で関数合成を行うには?
h = f(g(x))
のようなことをして、 h を微分できるようにしたいのようにh.diff(x)
。このような関数h = cos(x)
は 1 つだけでも実際に可能であり、ドキュメントで明確にされています。
しかし、関数合成については、それほど明確ではありません。これを行った場合は、例を示すか、関連するドキュメントへのリンクを教えてください。
(Sympy がこれを行うことができない場合、Python 以外であっても、これを行う他のパッケージを知っていますか)
ありがとうございました。
symbolic-math - maxima CAS - 変数を式に置き換える方法は?
マキシマでは、部分式に変数置換を適用する方法はありますか? たとえば、 のインスタンスを に置き換えx+y
ますz
。
subst
些細な場合には機能しますが、それ以上の場合には機能しません。
symbolic-math - sum()、diff()、または integrate() の「プライベート」シンボル
前の質問ですでに言及した次の関数を考えてみましょう。
一般的には機能しますが、元の式に、 などのf
記号が既に含まれている場合はどうなるでしょうか。この場合、それは正しいことをしません。これまでに見つけた唯一の解決策は、これらのシンボルに一意のプレフィックスを使用するか、少なくともアンダースコアで名前を開始することです: → , → . しかし、もっと慣用的な解決策があることを願っています。何かありますか? r
j
r
__r
j
__j