問題タブ [math]
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.
algorithm - 優れた開発者が知っておくべき主要な数学的概念は何ですか?
2006年に非常に小さな学校を卒業して以来、形が悪く時代遅れのプログラムでした(私は外国人で、当時はこれ以上の学校を知りませんでした).他の高等概念の基礎となる数学的およびソフトウェアの観点。
つまり、アルゴリズム入門に関する MIT のオープン コースウェアを聞いたり見たりしようとしましたが、コースをよりよく理解するための数学的概念がいくつか欠けていることにすぐに気付きました。
では、優れたソフトウェア エンジニアが知っておくべきコアとなる数学的概念とは何でしょうか? そして、あなたが私に推薦する可能性のある本/サイトは何ですか?
math - ランダム性をテストする方法 (適切なケース - シャッフル)
まず、この質問はこの質問から切り取られています。この部分は、長い質問のサブ部分よりも大きいと思うので、そうしました。気分を害する場合は、ご容赦ください。
ランダム性を生成するアルゴリズムがあるとします。では、どのようにテストしますか?または、より直接的に言えば、カードのデッキをシャッフルするアルゴリズムがあると仮定すると、それが完全にランダムなアルゴリズムであることをどのようにテストしますか?
問題にいくつかの理論を追加するには - カードのデッキは 52 でシャッフルできます! (52階乗) さまざまな方法。カードのデッキを取り、手でシャッフルし、すべてのカードの順番を書き留めます。あなたがまさにそのシャッフルを得る確率はどれくらいですか? 答え: 1 / 52!.
シャッフルした後、順番に各スートの A、K、Q、J ... が出る確率は? 答え 1 / 52!
したがって、一度シャッフルして結果を見るだけでは、シャッフル アルゴリズムのランダム性に関する情報はまったく得られません。2回で情報が増え、3回でさらに…
シャッフル アルゴリズムのランダム性をどのようにブラック ボックス テストしますか?
algorithm - 10 進数を整数に変換するための共通の乗数を見つけるアルゴリズム
小数点以下 8 桁までの可能性のある数値の配列があり、すべての整数になるように乗算できる最小の共通数値を見つける必要があります。これが必要なのは、元のすべての数値をすべて同じスケールに乗算し、整数のみを処理する密閉されたシステムで処理できるようにするためです。その後、結果を取得し、それらを共通の乗数で割って相対的な結果を得ることができます。 .
現在、数値をいくつかチェックして 100 倍または 1,000,000 倍していますが、*sealed システムによって行われる処理は、大きな数値を処理する場合に非常にコストがかかる可能性があるため、目的のためにすべてを 100 万倍にすることはあまり意味がありません。素晴らしいオプションです。概算として、封印されたアルゴリズムは、10 倍するたびに 10 倍のコストがかかると言えます。
私が必要とするものを達成するために、可能な限り最良の結果をもたらす最も効率的なアルゴリズムは何ですか?また、必要なものの数学的な名前や式はありますか?
*封印されたシステムは、実際には封印されていません。私はそのソースコードを所有/維持していますが、その100,000行の独自の魔法であり、バグとパフォーマンスが徹底的にテストされており、フロートを処理するように変更することは多くの理由でオプションではありません. それは、X x Y セルのグリッドを作成し、X x Y の四角形をグリッドにドロップし、「独自の魔法」が発生して結果を吐き出すシステムです。十分な近似です。
これまでのところ、いくつかの良い答えが静かにあり、「正しい」答えをどのように選択すればよいか疑問に思いました. 最初は、各ソリューションを作成してパフォーマンスをテストすることが唯一の公正な方法だと考えていましたが、純粋な速度だけが関連する要因ではなく、より正確なソリューションも非常に重要であることに後で気付きました。とにかくパフォーマンステストを書きましたが、現在、「直感」式を使用して、速度と精度に基づいて正しい答えを選択しています。
私のパフォーマンス テストでは、ランダムに生成された 100 の数値の 1000 の異なるセットを処理します。各アルゴリズムは、同じ乱数セットを使用してテストされます。アルゴリズムは .Net 3.5 で記述されています (ただし、これまでのところ 2.0 と互換性があります)。テストをできるだけ公正にするために、かなりの努力をしました。
- Greg – 大きな数を掛けてから GCD で割る – 63 ミリ秒
- Andy – 文字列解析 – 199 ミリ秒
- Eric – Decimal.GetBits – 160 ミリ秒
- Eric – 二分探索 – 32 ミリ秒
- Ima – 申し訳ありませんが、ソリューションを .Net で簡単に実装する方法がわかりませんでした (あまり時間をかけたくありませんでした)。
- Bill – あなたの答えは Greg の答えにかなり近かったので、実装しませんでした。わずかに高速になると確信していますが、精度が低下する可能性があります。
したがって、Greg の「多数を掛けてから GCD で割る」ソリューションは、2 番目に高速なアルゴリズムであり、最も正確な結果が得られたので、今のところ正しいと呼んでいます。
私は本当に Decimal.GetBits ソリューションを最速にしたかったのですが、非常に遅かったです。BitConverter.GetBytes とここに含まれるいくつかの知識を使用して、ストレート Double の同様の使用可能なソリューションがあるはずです: http://blogs.msdn.com/bclteam/archive/2007/05/29/bcl-refresher-floating-point- types-the-good-the-bad-and-the-ugly-inbar-gazit-matthew-greig.aspx ですが、その記事を読むたびに目が眩み、最終的に実装を試みる時間がなくなりました。解決。
誰かがより良いものを考えることができれば、私は常に他の解決策を受け入れます.
math - リジッド ボディ ダイナミクスの優れたリファレンスは何ですか?
私は数学の専門家ではありませんが、剛体物理について学ぶことに興味があります (基本的な 3D 物理エンジンを実装するため)。学校では、数学は代数 II しか取りませんでしたが、何年も 3D 開発を行ってきたので、ベクトル、四元数、行列などをかなりよく理解しています。私の本当の問題は、複雑な数式などを読むことです。いくつかの理にかなっているいくつかのまともな剛体ダイナミクスの参照。
誰か良い参考書はありますか?
c# - C#でジェネリックスを使用して数学ライブラリを作成する
ジェネリックスを使用して、データを格納するために選択された基本タイプに依存しない数学ライブラリを作成するための実行可能な方法はありますか?
つまり、Fractionクラスを作成したいとします。分数は、2つのintまたは2つのdoubleなどで表すことができます。重要なことは、基本的な4つの算術演算が明確に定義されていることです。だから、私は書くことができるようになりたいFraction<int> frac = new Fraction<int>(1,2)
ですFraction<double> frac = new Fraction<double>(0.1, 1.0)
。
残念ながら、4つの基本操作(+、-、*、/)を表すインターフェイスはありません。誰かがこれを実装するための実行可能で実行可能な方法を見つけましたか?
c# - WPF でスケーラブルなメビウス ストリップを作成するには?
メビウスの帯は片面を持つ面です。
XAML/WPF でそのようなオブジェクトをどのように定義しますか?
C# を使用して、このようなオブジェクトを 3D で操作したり、拡大縮小したり、回転したりするにはどうすればよいでしょうか?
algorithm - 類似画像を見つけるアルゴリズム
2 つの画像が「類似」しているかどうかを判断し、色、明るさ、形状などの類似パターンを認識できるアルゴリズムが必要です。人間の脳が画像を「分類」するために使用するパラメーターについて、いくつかの指針が必要になる場合があります。..
私はハウスドルフベースのマッチングを見てきましたが、それは主に変換されたオブジェクトと形状のパターンをマッチングするためのようです。
math - 錐台に対して線分をクリップするにはどうすればよいですか?
線分L =ABを形成する2つのベクトルAとBが与えられます。さらに、左、右、下、上、近距離、遠距離の平面によって定義される錐台Fのビューが与えられます。
LをFに対してクリップするにはどうすればよいですか?
つまり、交差点をテストし、 Lのどこでその交差点が発生するのでしょうか。(線分が角で2つの側面と交差する場合、錐台と複数の交差を持つ可能性があることに注意してください。)
可能であれば、コード例を提供してください(C ++またはPythonを推奨)。
python - 3D(またはnD)重心を計算するための最良の方法は何ですか?
作業中のプロジェクトの一環として、3D空間内の一連の点の重心を計算する必要があります。今のところ、私は単純に見えますが素朴な方法でそれを行っています-次のように、ポイントの各セットの平均を取ることによって。
ここx
で、、y
およびz
は浮動小数点数の配列です。より正確な重心を取得する方法があることを思い出しているようですが、そのための簡単なアルゴリズムは見つかりませんでした。誰かアイデアや提案がありますか?私はこれにPythonを使用していますが、他の言語の例を適応させることができます。
math - 優れた 3D メッシュ ライブラリ
優れた 3D メッシュ ライブラリを探しています
- 一般的な形式 (OFF、OBJ...) を読み取ることができる必要があります。
- ハーフエッジ構造と三角スープの両方をサポートする必要があります
- 障害や不正なメッシュに対して寛容であるべきです。
- 基本的な幾何学的操作 - 交点、法線計算など'
- 最も重要なこと - 無限のテンプレートと継承階層で複雑にならないようにしてください。
CGAL と OpenMesh の両方を試しましたが、どちらも最後のポイントで惨めに失敗しました。
具体的には、最も高度なコード分析ツールを使用しても追跡できない CGAL です。
これまでのところ、私は自分自身を引っ張ることを真剣に考えています。
私の好みは C++ ですが、他のオプションも受け入れます。