問題タブ [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.
differential-equations - Maxima が desolve で diff eq の解を見つけられない
wxmaxima 11.08.0 (ubuntu 12.04、Maxima バージョン: 5.24.0) での演習中に、P.Lutusの例
に従いましたが、彼の 2 番目の例はうまくいきませんでした。
その後、Maxima は再起動するまで反応しません。
結果を得るために最初にアクティブ化または定義する必要がある maxima の変更はありますか?
予想される出力は次のようになります。
式を手動で定義する場合に備えて、私の質問の 2 番目の部分があります。
連続プロセスの初期条件:
ここでは最終項がまだ残っています。これらの問題は三角関数の使用に基づいていますか?
よろしく、マーカス
PPA 経由で wxMaxima 13.04.0 & Maxima 5.29.1 に更新しました。これで desolve は終了しましたが、最後の項は非常に複雑に見えます。
negativ last term と desolve コマンドを使用して init_val を実行しても、方程式に %e^(..)*... が残ります。
maxima - wxMaxima を使用して多項式を因数分解する
次の行のように、関数を定義し、変数を変更して展開するとします。
私が今やりたいことは、 kの多項式を取得することです。つまり、1 つのコマンドでkの各累乗の項を収集して、次のように表示します。
python - ツリー構造を再帰的に操作する: 「全体」ツリーの状態を取得するにはどうすればよいですか?
まず、コンテキスト:
サイド プロジェクトとして、方程式を解くために必要な手順を生成するコンピューター代数システムを Python で構築しています。
これまでのところ、代数式と方程式を構文解析して式ツリーにすることができました。次のような構造になっています (実際のコードではなく、実行されていない可能性があります)。
これに加えて、式を単純化するために再帰的に動作する一連の関数があります。それらは純粋に機能的ではありませんが、操作の可変性に依存することを避けようとしており、代わりに、使用しているノードの変更されたコピーを返します。各関数は次のようになります。
課題は「一歩一歩」の部分にあります。「単純化」関数をすべて、何かを解決するために必要なステップを「生成」するネストされたジェネレーターにしたいと考えています。したがって、基本的に、各関数が操作を実行するたびに、次のようなことを実行できるようにしたいと考えています。yield (deepcopy(node), expression, "Combined like terms.")
このライブラリに依存しているものはすべて、次のようなものを出力できます。
ただし、各関数は、node
それが動作しているものについての知識しか持っていませんが、全体がどのexpression
ように見えるかはわかりません。
これが私の質問です:各「ステップ」が式全体の知識を持つように、式ツリー全体の「状態」を維持する最良の方法は何でしょうか?
私が思いついた解決策は次のとおりです。
- すべての操作を適切に実行し、グローバル変数またはクラス内のインスタンス変数を使用して、方程式へのポインターを格納します。最初にクラスをセットアップする必要があるため、単体テストがより困難になるため、これは好きではありません。また、より機能的なアプローチの他の利点も失います。
- 式のルートをすべての関数に渡します。ただし、これは、式を更新するためにすべての操作を繰り返す必要があるか、可変性に依存する必要があることを意味します。
- 私が生成した各ステップに基づいて、最上位関数に式ツリーを「再構築」させます。たとえば、yield
5x + 4x = 9x
の場合、最上位関数に (5x + 4x) ノードを見つけて「9x」に置き換えます。これが最善の解決策のように思えますが、各ステップを「再構築」するにはどうすればよいでしょうか?
関連する最後の 2 つの質問: これは意味がありますか? 私は今、私のシステムにカフェインがたくさんあり、私がクリアしているかどうかわかりません.
可変性について心配しすぎていませんか? これは時期尚早の最適化のケースですか?
algorithm - シンボリック代数式の符号
「ツリー-フォーム」で与えられた任意の記号代数式の符号を見つけることができるアルゴリズムはありますか?
ゼロ認識問題は任意の式に対して決定できないため、一般的なアルゴリズムが存在しないことは知っていますが、式の符号を見つける問題にどのようにアプローチすればよいでしょうか? (これはコンピュータ代数ではどのように行われますか?)
例えば:sign(sqrt(2)-1) = ?
computer-architecture - AB+Cを保存するには何ビットが必要ですか?
私はこれについて疑問に思っていました-
A、B が 16 ビットの数値で、C が 8 ビットの場合、結果を格納するには何ビットが必要ですか? 32 または 33 ?
また、C が 16 ビットの数値だったらどうなるでしょうか。じゃあ何?
方法と理由を説明して回答をいただければ幸いです。
max - Sympyで関数の最大値を見つける方法は?
最近は、Sympy を使って 1 自由度系のショックスペクトルをやり直そうとしています。この問題は、関数の最大値を見つけるために縮小できます。以下は、どうすればよいか分からない2つのケースです。
最初のものは
f
最終的な目標は、 (変数は ) の最大絶対値を取得することt
です。直接的な方法は
これが結果です。さまざまな方法を試しましたが、これ以上単純化することはできません。
そのため、別の方法を試しました。最大の絶対値が必要であり、最大のabs(f)
位置が の二乗の同じ位置で発生するため、最初f
の二乗を計算できます。f
答えはほぼ同じで、形が違うだけのようです。
予想される答えは、sinc
次のような関数と定数です。
したがって、問題は最終プレゼンテーションをどのように取得するかです。
2つ目は少し難しいかもしれません。この問題は、 の最大値を見つけるように縮小できます。f=sin(pi*t/t_r)-T/2/t_r*sin(2*pi/T*t)
ここでt_r
、 とT
は 2 つのパラメーターです。t_r
との比率がT
変化するとき、異なるピークに位置する最大値。そして、Sympy でそれを解決する方法が見つかりません。なにか提案を?答えは次の図で表すことができます。
boolean - 和の積から積の和へ
(A+B+C+D')(B+C'+D)(A+C)(A+C)
これは、積和に変換する必要がある式です。
(A'B'C'D)+(B'CD')+(A'C')+(A'C')
私が正しいかどうかはよくわかりません... もしそうなら、(A'C') を組み合わせて 2(A'C') と書くことはできますか??
助けてください
lisp - Maxima: 関数から関数を返し、後でそれを評価する
でConstantArrayにMaxima
似た関数を作成したいと考えています。そのため、ラッパーを配置しようとしましたが、最後の引数をリストではなくパラメーターのシーケンスとして受け取りますが、可変数の引数で呼び出した場合、すべてをリストとして配置せずに make-array に渡すことはできません。Mathematica
make-array
make_array(fixnum,2,3,4)
ConstantArray(a,b,c,d..)
パラメーターとして渡されたリストから要素を抽出し、make-array 関数を配置するという問題を回避するために、試しました。
どの呼び出しで
戻り値
make_array(fixnum,1,2,3,5,3)
この出力をコピーしてコンソールに貼り付けて実行すると、この関数はうまく実行されますLisp array [1,2,3,5,3]
.
''%
&などを使用して評価しようとしev(constantarray(1,2,3,5,3),nouns)
ましたが、うまくいきません。誰かがこの評価を強制する方法を知っているかどうか、または私が不可能なことを行っているかどうかを知りたい.
algorithm - 階層的な権限チェックを実行するためのアルゴリズムは存在しますか?
階層を表すデータ構造があります。
- フォルダ
- フォルダ
- フォルダ
- ファイル
- ファイル
- 等
- フォルダ
アクセス許可はフラット テーブルに格納されます。
検索のようなグローバル操作を実行する場合、ツリー内でパーミッションを再帰的にチェックする必要があります。
ツリー構造の個々のリーフにインラインでアクセス許可を確認するのは簡単です。ただし、ノードに対するアクセス許可のアカウンティングには、次の 2 つの既知のアプローチのいずれかが必要です。
- フィルタリングされた葉を取得した後、それぞれを後処理して、親のパーマを確認します
- コストは後まで延期されます
- 多くの初期リーフが見つかった可能性がありますが、親を処理した後は何も残っていないため、無駄な作業が行われています
すべてのルート (権限を付与するノード) を事前に計算し、それをクエリ フィルターとして使用して葉を取得する
- 多くのルートが存在する場合、巨大なクエリになる可能性があり、各リーフの処理に過剰な時間がかかる
より効率的な方法でこれを行うためのアルゴリズムはありますか? おそらく権限データを再編成するか、階層に情報を追加しますか?
おそらく、極端に対処するためにいくつかのヒューリスティックを追加しますか?