問題タブ [simplification]
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.
boolean - ブール代数式の簡略化
こんにちは、7 セグメント ディスプレイ割り当てからの最初の式を単純化する必要があります。大文字は NOT であることを意味するため、たとえば最初の部分 ZYXW は、NOT z AND NOT y AND NOT x AND NOT w を意味します。それが理にかなっていることを願っています。
したがって、問題は、a = z + x + yw + YW に単純化する式の答えを見つけたことですが、私の単純化は a = zYX で終了します。
以下は私の単純化の手順です。誰かが問題を特定してください。
wolfram-mathematica - Mathematica でより大きな式に部分式を挿入する方法は?
次の表現があります。
上記の式に次の部分式を挿入したいと思います。
どうすればいいですか?私は使用してみました:
および他の多くのソリューション。どれも機能していません。
「=」と「==」の違いについても少し混乱していますが、両方のケースを試しました。
jquery - jQuery 複数のクリックステートメントを取り除きたい
ここに私が取り組んでいる私のウェブサイトがあります: http://jaakkouusitalo.fi/newご覧のとおり、4 つの色付きの四角形があり、すべてが異なるクラスを持っています。
if ステートメントと else ステートメントを作成して、単純化したいと思います。何をすべきかを知るスキルが不足しているため、ここで直接質問することにしました。
これが私のhtmlファイルです:
現在、私は次のようにjQueryを処理しています:
これを作る良い方法があると思います。方法がわかりません。
trigonometry - atan(tan(a+b)) の簡略化
なぜこれが期待どおりに機能しないのだろうか:
次のようになります。
つまり、まったくありません。私はそれが次のように減少すると予想していました:
javascript - 基本的な数式簡約器の実装
y=x^2
Javascriptのような単純な関数を区別する calc クラスのサイド プロジェクトに取り組んでいます。そのために、式を抽象構文ツリーに解析し、積規則や連鎖規則などの導関数規則をハードコーディングしました。
これに入れられる唯一の関数は、AP 微積分/1 年目の微積分の問題です。そのため、三角関数、対数、指数はすべて有効です。
私のプログラムは導関数を問題なく取りますが、最終的に得られるのは、途方もなく単純化されていない方法で記述された関数です。
たとえば、微分するとx^2
が得られます(2*(x^(2-1)))
。これは技術的には正しいですが、2*x のように簡単に記述できます。これまでのところ、基本的にツリーを繰り返し分析し、いくつかの基本的なルールを適用する基本的な単純化機能があります。
私が持っている一般的な手順は、再帰降下で分析することです。
現在のツリーに変数がない場合は、それを評価し、現在のノードを結果で置き換えます。
それ以外の場合は、大量の if ステートメントを適用して単純化します。これには次のようなものが含まれます
- ゼロを掛ける場合は、式をゼロに置き換えます
- 1 を掛ける場合は、式を他のオペランドに置き換えます
- 0 乗する場合は、式を 1 に置き換えます。
などなど。似たような用語を組み合わせるなど、本当の単純化を実際に行いたい場合、これはすぐに制御不能になります。また、任意の 2 つの式が等しいかどうかを判断したい場合、私が持っている最善の解決策は、単に関数のドメインで乱数を生成し、それらが等しいかどうかを確認することです。ただし、これはあまり効率的ではないようです。
x+2
2 つの異なる式 (単純な例はand )の等価性をより効率的に判断するに2+x
はどうすればよいですか? また、大量の if ステートメントを使用せずに関数を単純化する方法はありますか?
java - ブール代数の単純化
それで、私はこれらの質問のいくつかを持っています。そのうちの1つについて助けが必要です。また、どのように答えを導き出したかについての説明を提供してください。よろしくお願いします
ab(!c) + !ab(!c) から b(!c) への代数的簡約を示します。
graphics - アルゴリズムで三角形の折り返しを処理する方法 二次誤差最小化によるメッシュ単純化
最近、私は QEM メッシュ単純化アルゴリズムを実装しています。これは、元は Michael Garland と Paul S. Heckbert の論文Surface Simplication Using Quadric Error Metricsからのものでした。
アルゴリズムによれば、contraction cost
エッジごとに a を計算し、すべてのエッジを最小限のヒープに入れる必要があります。これにより、収縮するための最小コストでエッジを選択するたびになります。ただし、収縮により、入射三角形が折りたたまれる場合があります。つまり、収縮の前後でノルムが 90 度変化します。折り返し現象は、次の例で視覚化できます。
選択した最小コストのエッジが でありV1V2
、それを縮小しようとしているとします。図が示すように、収縮が発生V1
し、V2
融合すると予測しています。Tri(ABV2)
さらに重要なことは、三角形のノルムを と定義すると、cross_product(V2A, V2B)
このノルムがその方向を外向きから内向きに変えることがわかります。これは私たちが望んでいるものではありません。この論文は、この状況に遭遇した場合、この操作を「ペナルティ」にする必要があると述べています。つまり、V1V2
のコストに大きな数を追加してV1V2
、ヒープの最上位にならないようにします。つまり、現時点では取得されません。代わりに、最小限のコストで次のエッジを選択します。
このアルゴリズムは、次の疑似コードで記述できます。
しかし、私は非常に難しい問題を見つけました。前述のように、エッジの収縮がE1
いくつかの三角形の折り返しを引き起こす可能性があることを発見したとき、そのコストを拡大してヒープに戻し、別のエッジを選択E2
しましたが、それでも折り返しが発生することがわかりました。などなど。ループが無限に続き、実際にはエッジが単純化されないように、エッジをこれ以上縮小できないことがわかりませんでした。
問題を解決するために、アルゴリズムについてのヒントを教えてくれる人はいますか? どうもありがとう!