計算科学

科学的問題を解決するためにコンピュータを使用する科学者のためのQ&A

4
CFDはアニメーション/映画/アートで使用されますか?
これは技術的な質問ではなく、単に好奇心から質問されます。 アニメーション映画で計算流体力学(CFD)シミュレーションは使用されますか?(浅水方程式、爆発問題など) 言い換えれば、現実世界の問題の計算シミュレーションをアートで使用できますか? (質問にシミュレーションのタグを付けましたが、適切なタグが見つからないため、自由にタグを付け直してください)

2
遺伝的アルゴリズムvs共役勾配法
シミュレーションの結果が実験構造にできる限り近づくように、分子フレームワークのいくつかの力場パラメータを最適化しようとしています。 以前は、本質的にランダムにパラメーター空間をサンプリングし、最適に機能する組み合わせを選択し、変異パラメーターのセットを作成し、目的の関数に最適なパラメーターが得られるまでこのプロセスを繰り返す遺伝的アルゴリズムを作成しました。また、アルゴリズム自体のいくつかの最適化も実行します。ここで、変異した値の分布は、より高速な収束を優先するように最適化されます。 私のアドバイザーは遺伝的アルゴリズムについて聞いたことがなく、彼が推奨する方法、つまり共役勾配法とシンプレックスアルゴリズムについて聞いたことがありません。 私の状況では、目的関数は実験的な場所からのすべての原子の偏差の関数です(つまり、構造最適化です)。システムは4-10K原子です。CGMやシンプレックスアルゴリズムの学習に時間を費やす価値はありますか?3つのうち、この状況に最適なのはどれですか。


3
ポアソン方程式における境界条件(例:周期的)の役割
与えられた3次元ポアソン方程式 と右辺とドメイン、Iは、機能上の任意の境界条件(BC)を課すことが解放午前φ、または実行彼らはどういうわけか右側と一致する必要がありますか?特に、定期的なBCを課す場合、右側のソリューションは1つだけでしょうか?∇2ϕ(x,y,z)=f(x,y,z)∇2ϕ(x,y,z)=f(x,y,z) \nabla^2 \phi(x, y, z) = f(x, y, z) ϕϕ\phi たとえば、聞かせて とIボックスに解決する(0 、1 )× (0 、1 )× (0 、1 )。今、すべてのソリューションは、の合計でなければなりませんφ 0 + φ 1: φf(x,y,z)=−3π2sin(πx)sin(πy)sin(πz)f(x,y,z)=−3π2sin⁡(πx)sin⁡(πy)sin⁡(πz) f(x, y, z) = - 3 \pi^{2} \sin{\left (\pi x \right )} \sin{\left (\pi y \right )} \sin{\left (\pi z \right )} (0,1)×(0,1)×(0,1)(0,1)×(0,1)×(0,1)(0, 1)\times …

2
NumPyで三角関数のアイデンティティを評価するときの驚くほど大きな違い
Wolfram AlphaとSageコンピュータ代数システムによれば、次のアイデンティティが成り立つ: cos(アークタン(l1− l2d)) = 11 + (l1− l2)2d2−−−−−−−−√cos⁡(arctan⁡(l1−l2d))=11+(l1−l2)2d2 \cos\left(\arctan\left(\frac{l_1-l_2}{d}\right)\right) = \frac{1}{\sqrt{1 + \frac{(l_1-l_2)^2}{d^2}}} しかし、NumPyの任意の例を使用してそれを検証しようとすると、偶発性の両側で計算された実際の値にかなり大きな違いがあることに気付きました。私は次のコードを使用しました: l1 = 10; l2 = 8; d = 17 from numpy import arctan2, cos, sin, sqrt alpha = arctan2((l1-l2),d) left = cos(alpha) right = sqrt(1 + ((l1-l2)**2)/(d**2)) 結果を評価するleftとright、次の結果が得られました。 left = 0.99315060432287616 right = 1.0 これを単なる数値エラーとして書き留めるのは魅力的ですが、私は数値エラーがどれほど大きくなるかについての経験がほとんどないため、確信が持てません。これは可能ですか、それとも何かが欠けていますか?

1
剛体運動によってあるセットのポイントを別のセットにフィットさせる
この問題を明確に説明する方法がよくわからないので、ご容赦ください。私は3つの正規直交単位ベクトルと位置、コンピューターグラフィックスの標準的な4x4変換行列のベースを持っています。 また、その空間にいくつかのポイント(オフセット)があり、ワールドスペースに変換します。次に、ポイントがわずかに摂動されます。次に、摂動されたポイントを表すのに最も近い新しい基準を見つけたいと思います。 元のオフセットを尊重したいので、主成分を見つけるのとはまったく異なります。それが理にかなっている場合。新しい各ポイントからそれぞれの開始位置へのスプリングのように。答えは最小二乗問題を解決することだと思いますが、頭が痛いので調べました。 誰かが簡単に説明してくれませんか。私は閉じた形のソリューションを好みますが、反復的なソリューションも大丈夫でしょう。どうもありがとう

2
VolkovとDemmelは、GPUのレイテンシ、ラインサイズ、ページサイズを実験的にどのように決定していますか?
では、「GPUのベクトル機能を使用してLU、QRやコレスキー因数分解」、ワシーリーボルコフとジェームス・デメルにより、レイテンシ、ラインサイズ、およびこのようなグラフからキャッシュのページサイズを解釈する興味深い方法があります: どうやら、ラインサイズはキャッシュがプラトーになり始めるところです(この例では約32バイト)。それはどこから来ましたか? そして、ページサイズが2番目のプラトーがグローバルメモリの開始点であることをどのようにして知るのでしょうか。 さらに、レイテンシが最終的に十分なストライド長で低下するのはなぜですか?彼らは増え続けるべきではないのですか? これが実際に機能し、そのように思われる場合、GPUのキャッシュに関する多くの文書化されていないデータを取得できるため、それは素晴らしいことです。

1
高次のLax-Wendroffタイプのスキーム?
双曲線保存則を解こうとし。私は本当にLax-Wendroffを使うのが好きです。あなたt+ f(u )バツ= 0あなたt+f(あなた)バツ=0u_t+f(u)_x=0 あなたn + 1j= uんj- Δ トンΔのX(g(uんj + 1、あなたんj)− g(uんj、あなたんj − 1))あなたjん+1=あなたjん−ΔtΔバツ(g(あなたj+1ん、あなたjん)−g(あなたjん、あなたj−1ん))u_j^{n+1} = u_j^n -\frac{\Delta t}{\Delta x}(g(u_{j+1}^n,u_j^n)-g(u_j^n,u_{j-1}^n)) どこ g(v 、w )= 12(f(v )+ f(W ))- Δ T2 Δ X| f(w )− f(v )w − v|2(w − v )g(v、w)=12(f(v)+f(w))−Δt2Δバツ|f(w)−f(v)w−v|2(w−v)g(v,w) = \frac12(f(v)+f(w)) - \frac{\Delta t}{2\Delta x}\vert\frac{f(w)-f(v)}{w-v}\vert^2(w-v) または(線形移流)の場合、f(u )= a …

2
通常の行列を並べ替えて対角形をブロックする
マトリックスが本来ブロック対角であるが、無作為に基底を選択してランダム化されている場合、マトリックスをブロック対角形式に再配置するアルゴリズムはありますか? 特に、このためのPythonモジュールはありますか?
8 matrix  python 

4
カルマンフィルターのスパース行列の実装?
カルマンフィルターベースのモデリングコードを使用して、ほぼリアルタイムの地域電離層マッピングアプリケーション用に開発しました。このコードは、カルマンフィルターを使用して、さまざまなセンサーからのデータを(基本関数のセットで記述された)マップに同化します。 私はこれをより大きな領域とより多くのセンサーに拡大しようとしていますが、カルマンフィルターの行列代数部分は、関与する大きな行列(数千の行/列)のために非常に遅くなります。ランタイムの問題を攻撃する最善の方法は、これらの行列が通常、総要素の80%以上が非常にスパースであるという事実を使用することだと思います。これは、各センサーにマップ係数と一緒に推定されるバイアスパラメーターがあるためです。これは、カルマンHマトリックスのそのセンサーの列に1として表示され、他のすべてのセンサーおよびマップ係数の列には0が表示されます。数百のセンサーがあり、それぞれが各エポックで8〜10の観測値を提供しているため、多くのゼロがあります。 スパースアルゴリズム、特に乗算と反転*を使用してカルマンフィルターのコンポーネントを実装することを検討することもできますが、マトリックスがまばら?アンサンブルカルマンフィルターなどを使用できることはわかっていますが、可能であれば、純粋な線形カルマンフィルターの最適性を維持したいと思います。総データ量は禁止されていません。線形モデルから生じる大きなスパース行列だけです。 実装に関しては、これはIDLで行われますが、コア行列代数は、外部の最適化されたLAライブラリ(具体的にはATLAS)の呼び出しを介して行われます。 *最適なカルマンフィルターの実装では反転が回避され、代わりにUD分解が使用されます。私はこのようなものを実装することを検討しているので、それが答えになるかもしれませんが、マトリックスのスパース性を考慮してより良い解決策があるかどうかを探しています。

1
この「買い物かご」の最適化問題の正しい定式化とは何ですか。どうすれば効率的に解決できますか?
次の問題の解決策を探していますが、賢明にそれを定式化し、それを解決するための適切なアルゴリズムを見つけるのに苦労しています。 ショッピングバッグに入れられたアイテムのリストを考えてみましょう:1、2、3、4 ... 各アイテムは、1つ以上のプロモーションの一部にすることができます:A、B、C、D 割引の価値を最大化するように、プロモーションのセットを適用します。アイテムは複数のプロモーションに参加できませんが、各プロモーションは複数回適用できます。 プロモーションはさまざまな方法で定義できますが、今のところ、「2つの対象アイテムを購入してXを節約」というタイプを検討しているだけなので、ここから一般化できると期待しています。 私の例は: プロモーションA-購入2割引8 プロモーションB-購入2割引10 プロモーションC-購入2保存6 アイテム1-A、Bの対象 項目2-Bの対象 項目3-A、Cの対象 アイテム4-B、Cの対象 プロモーションの正しい適用は、アイテム1に対して3、Bに対して2、4であることが簡単にわかります。これにより、合計で18割引になります。 大きなケースでは困難になるため、アルゴリズム的に解決する必要があります。 私は以下を試しました: 適用可能なプロモーションの可能な組み合わせをすべてリストアップしてください。 明らかに貧弱なものはすべて破棄します(例:値の高いプロモーションの直接コピー)。 他のプロモーションと重複しないものを適用します(たとえば、アイテム1と2がプロモーションAに対してのみ有効である場合、そのプロモーションを適用します)。 残りのセットを取得し、結果に対してブランチアンドバウンドタイプの検索を試みます。 ただし、これには時間がかかる場合があります(同様の割引のある大規模なセットの場合)。 これは一種のナップザックまたは割り当て問題だと思いますが、私はそれを賢く書くことができません。うまく書けなくては解決できません。 これは問題の認識されたバリアントですか?特にそれを解決するのに役立つ擬似コードでそれを攻撃する助けは大歓迎です

1
エントリがわからないときに、ほぼ対角行列の対角を抽出する
既にほぼ対角になっている対称マトリックスから対角を抽出するための良い方法は何ですか?マトリックス要素がない場合(ベクトルに適用する機能のみ)? さらに、(1)対角線を明示的に構築するためにn行n列の行列をn回適用すると、法外にコストがかかり、(2)対角線の小さな要素が大きな要素に加えて重要になります。 これは、(小規模なテストケースで)対角線を抽出するマトリックスの種類の例の画像です。

1
3Dボリュームと2D平面の間の交差領域を計算する方法
こんにちは、誰かが私の問題を解決する方法についての洞察を提供してくれるなら素晴らしいです! 3Dボリュームと2D平面の間の交差領域を計算しようとしています。3Dボリューム:6点で定義(常に太い三角形に似た3Dウェッジになります)2D平面:3点で定義 助言がありますか?このタスクを実行できるオープンソースソフトウェアはありますか? どうもありがとうクリス

1
楕円pdeの解に対する放物線pdeの解の漸近収束
私は放物線システムがあるととディリクレの境界条件 U = G 、あなたt= ∇ ⋅ (K (X )∇ U )+ F、(X 、T )∈ Ω × Iut=∇⋅(k(x)∇u)+f,(x,t)∈Ω×Iu_t=\nabla\cdot(k(x)\nabla u)+f,\quad (x,t)\in\Omega\times Iと初期条件 U (X 、T )= H 、u = g、X ∈ ∂Ωu=g,x∈∂Ωu=g, \quad x\in\partial\Omegau (x 、t )= h 、t = 0。u(x,t)=h,t=0.u(x,t)= h,\quad t=0. 多くの場合、エンジニアリングでは、過渡的な動作ではなく、このPDEの漸近的な(定常状態の)動作に関心があります。だから、私達は時々時間微分項を無視し、楕円系を解く 代わり。仮定は、その無限の時間をかけて、 LIM T → ∞ U P …

2
クライミングホールドカラーを壁のセクターに割り当てるアルゴリズムを探す
以前にこの質問をstackoverflowに投稿しましたが、オフトピックとして閉じられました。私はそれがここで生き残ることを望みます。 私のクライミングジムでは、ルートは時々再設定する必要があります。次の規則が適用されます。 私たちは、さまざまな量のさまざまな色で登りを保持しています。-セクターにルートを設定する場合、混乱を避けるために、そのセクターまたは近くのセクターに同じ色の他のルートを設定してはなりません。 白/灰色または赤/ピンクなど、一部の色の組み合わせは、セクターで避ける必要があります。 目標は、各セクターに4つのルートを設定することですが、4つが上記のルールに違反する場合は、それより少なくてもかまいません。 今までに2つの異なるアプローチを試しました。1つ目はSimulated Annealingで、ランダムなパターンの色(ただし、指定された色の重み)で壁を初期化し、各色の組み合わせの悪さを計算しました。この悪さは、1つのセクターとその近隣のセクターの組み合わせについても計算されました。各反復で、最悪のセクターからランダムに選択されたルートが、ランダムに選択された他のセクターからのルートと交換されました。これはある種の収束を示しましたが、結果は使用できませんでした(つまり、結果の状態には2色または3色のセクターが含まれていました)。 それから反対側から問題に取り組み、空の壁から始めました。今回は、すべての色に1つのセクターから隣接するセクターに減衰する濃度がありました。同様の色の濃度も増加しました。つまり、赤いルートは、セクターとその周辺のオレンジの濃度を増加させました。重み付けされたランダムな色のソース(バケット)により、壁の次の色が得られました。これは、この色の濃度が最も低いセクターに配置されました。濃度が特定のしきい値を超えた場合、色は追加されませんでした(ただし、バケットに戻されました)。結果の状態にダブルカラーが含まれていなかったため、これは部分的に成功しました。 だから:上記のルールを考えると、この問題を解決するための適切なアルゴリズムは何でしょうか?必要に応じて、情報を追加させていただきます。 編集1-詳細: 私のテストケースには15のセクターがあります。 各セクターには4つのルートが含まれている必要があります 実際のジムには平均50セクターの建物が3つあります 一部のセクターは柱の周りに配置され、一部は屋根で接続されています 約10種類のホールドカラーがあります セクターの高さは6(初心者セクション)から20メートル(13垂直+ 7屋根)の間で変化するため、ホールドの消費量は異なります。ただし、平均は約12で、これは一定と見なすことができます。 各色の量には限りがあり、量は等しくありません いくつかの色はより簡単で、いくつかはより困難です(つまり、どんな困難でも黄色のルートを作成できますが、子供のために非常に簡単なオレンジのルートを作成することはほとんど不可能です) 一部のセクターは「より簡単」なので、簡単な色を使用する必要があります(これはオプションです。ルートセッターは、広範囲で困難または簡単にすることができます)。 セクター内または隣接するセクター内でどの色がうまく調和し、どの組み合わせがうまくいかないかを安全に判断できます。白と黒(コンボが悪い)など、いくつかの驚きがあります。ゴム(靴)またはチョーク(手)が残っていると、どちらも灰色になります。 一部の保持色は、紫/白(縞模様)のような組み合わせです。 編集2:遺伝的アルゴリズムに関するいくつかの質問 ParadisEOをダウンロードしてコンパイルし、IDE(Code :: Blocksを使用)でQuickStartサンプルをコンパイルしました。ParadisEOは、単一目的と多目的GAを備えた遺伝的アルゴリズムを提供します。GertVdEは、各セクターの適合度を計算し、すべてのセクターの適合度の合計を単一の目的として最大化することを提案しました。また、多目的GAを使用して、各セクターの適応度を最大化できますか?それは約50の目標になります。 また、私は賢明なクロスオーバー関数の定義に苦労しています。各色の最大量が固定されているため、交差すると違法な状態になる可能性があります。以前に与えられた最大量よりも多くを許可すると、パターン全体が、厄介な色が捨てられた「厄介な」組み合わせの繰り返しに収束する可能性があります。一方、最大に達するまで余分な色を捨てて、クロスオーバー機能を非保守的にすることもできます。 (私は遺伝的アルゴリズムに完全に新しいです)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.