計算科学

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

2
長方形の密行列のヌル空間
密行列を与えA∈Rm×n,m>>n;max(m)≈100000A∈Rm×n,m>>n;max(m)≈100000A \in R^{m \times n}, m >> n; max(m) \approx 100000 いくつかの許容範囲内にその零空間の基礎を見つけるための最善の方法は何かϵϵ\epsilon? その根拠に基づいて、私はその後、特定のCOLSは内直線的に依存していると言うことができϵϵ\epsilon?言い換えれば、ヌル空間基底を計算して、非特異行列を得るためにのどの列をAAA削除する必要があるのでしょうか? 参考文献を歓迎します。

3
どの三角形ポイントが含まれているかを見つける
重複しない三角形で構成される2Dメッシュと、点のセット。各ポイントがどの三角形にあるかを判断する最良の方法は何ですか? { P I } M iは= 1 ⊂ ∪ NのK = 1 T K{ Tk}Nk = 1{Tk}k=1N\{T_k\}_{k=1}^N{ p私}Mi = 1⊂ ∪Nk =1TK{p私}私=1M⊂∪k=1NTK\{p_i\}_{i=1}^M \subset \cup_{k=1}^N T_K たとえば、次の画像には、、があるため、リストを返す関数が。P 2 ∈ T 4 P 3 ∈ T 2 F F (P 1、P 2、P 3)= [ 2 、4 、2 ]p1∈ T2p1∈T2p_1 \in T_2p2∈ …

5
非常に大きなスパース行列にPCAを適用します
Rを使用してテキスト分類タスクを実行しており、サイズが22490 x 120,000のドキュメント用語マトリックスを取得しています(400万の非ゼロエントリのみ、1%未満のエントリ)。ここで、PCA(主成分分析)を利用して次元を減らしたいと思います。残念ながら、Rはこの巨大な行列を処理できないため、この行列を「行列市場形式」のファイルに保存し、PCAを行うために他の手法を使用したいと考えています。 だから誰も私に便利なライブラリ(プログラミング言語が何であれ)のヒントを教えてくれますか?この大規模なマトリックスでPCAを簡単に実行したり、自分で長文のPCAを実行したり、つまり最初に共分散行列を計算したり、次に、共分散行列の固有値と固有ベクトルを計算します。 私が望むのは、すべてのPC(120,000)を計算し、90%の差異を占める上位N個のPCのみを選択することです。明らかに、この場合、いくつかの非常に小さな分散値を0(共分散行列内)に設定するために、事前にしきい値を指定する必要があります。 1台のマシンでは処理できません。また、負荷(固有ベクトル)は非常に大きくなるため、スパース形式で保存する必要があります。 助けてくれてありがとう! 注:24GB RAMと8 CPUコアのマシンを使用しています。

2
マルチフィジックスシミュレーションのアルゴリズムと実装のベストプラクティスは何ですか?
マルチフィジックスシミュレーションには、多くの場合、異なる空間や時間スケールを持つ複数の「フィジックス」の結合が含まれます。さらに、単一物理コードは多くの場合異なるチームによって作成されます。最も一般的に使用されるカップリング手法は1次演算子分割ですが、これは精度と安定性の特性が不十分です。関心のある問題に対してどのアルゴリズムが効果的であるかをどのように判断し、これらのアルゴリズムを利用可能にするためにソフトウェアをどのように構成する必要がありますか?

4
Callgrindを使用したCFDコードのプロファイリング
Valgrind + Callgrindを使用して、作成したソルバーのプロファイルを作成しています。Valgrindユーザーマニュアルに記載されているように、コンパイラーのデバッグオプションを使用してコードをコンパイルしました。 「デバッグ情報がなければ、Valgrindの最良のツールは、特定のコードがどの機能に属するかを推測するため、エラーメッセージとプロファイリング出力の両方がほとんど役に立たなくなります。-gを使用すると、関連するソースコード行。」 Valgrindマニュアル デバッグオプションを使用してコンパイルすると、コードの実行速度が大幅に低下します。CFDコードは、デバッグフラグを付けてコンパイルした場合でも、非常に遅くなります。Valgrindを使用すると、40倍遅くなります(マニュアル1を参照)。 コードプロファイリング(ベンチマークではなくプロファイリング)にどのツールを使用していますか? コードを実行する時間(統計:時間ステップ数)。 ケースの大きさ(ケースがキャッシュに収まる場合、ソルバーは桁違いに高速ですが、メモリ関連のプロセスを見逃すことになります)
16 hpc 

3
HPCシステムの作成とプログラミングをどのように勉強すればよいですか?
私は必ずしもHPCの多くの仕事をするわけではない分野にいます。そして、それが遭遇するとき、それはしばしば他の分野の研究者が彼らの方法などへの新しいアプリケーションを探求する結果です。主にこれが意味することは、それが研究の過程で実際に導入されたり、ワークショップ、セミナーなどであまり育てられたりしないことです-それを必要とせずに自分のキャリア全体に行くことが可能です。 しかし同時に、私ができる仕事の多くは、利用可能なHPCリソースをより有効に活用することで恩恵を受けることができます。そのほとんどは、うまく並列モンテカルロシミュレーションの形で行われます。 私の問題は、クラスターやMPIなどの使用方法を学習するためのリソースを見つけることです。 これらのタイプのシステムでのプログラミング、または独自の非常に控えめなHPCセットアップのセットアップと実行に関する書籍に関する提案はありますか?
16 hpc  education 

4
なぜHouseholder反射は行列を対角化できないのですか?
実際にQR分解を計算するときは、Householder反射を使用して、マトリックスの下部をゼロにします。対称行列の固有値を計算するために、Householder反射でできる最善の方法は、三重対角形にすることです。この方法で完全に対角化できない理由を確認する明白な方法はありますか?私はこれを簡単に説明しようとしていますが、明確なプレゼンテーションを思い付くことができません。

1
双曲線PDEの統合で暗黙的メソッドを使用する必要があるのはいつですか?
PDE(またはODE)を解くための数値的手法は、明示的手法と暗黙的手法の2つの大きなカテゴリに分類されます。暗黙的な方法では、より大きな安定したタイムステップが可能ですが、ステップごとにより多くの作業が必要です。双曲線PDEの場合、CFL条件で許可されているタイムステップよりも大きいタイムステップを使用すると非常に不正確な結果になるため、通常、暗黙のメソッドは成果を上げません。ただし、場合によっては暗黙的なメソッドが使用されます。特定のアプリケーションに対して、明示的メソッドを使用するか暗黙的メソッドを使用するかをどのように選択する必要がありますか?

5
高次収束を達成するマルチフィジックスPDEの演算子分割アプローチはありますか?
進化PDEが与えられた場合 あなたはt= A U + B Uあなたはt=Aあなたは+Bあなたはu_t = Au + Bu ここで、は通勤しない(おそらく非線形の)微分演算子であり、一般的な数値的アプローチは解くことを交互に繰り返すことです。A 、BA、BA,B あなたはt= A uあなたはt=Aあなたはu_t = Au そして あなたはt= B u 。あなたはt=Bあなたは。u_t = Bu. これの最も単純な実装はGodunov分割として知られており、1次精度です。Strang splittingとして知られるもう1つのよく知られたアプローチは、2次精度です。高次演算子分割法(または代替のマルチフィジックス離散化アプローチ)は存在しますか?

2
双曲線PDEのシステムを数値的に解くとき、どのように良いリーマンソルバーを選択できますか?
双曲線PDEの多くの数値的手法は、リーマンソルバーの使用に基づいています。このようなソルバーは、衝撃波を正確にキャプチャするために不可欠です。最もよく研​​究されたシステムで使用できるこのようなソルバーは数多くあります(正確なソルバー、Roeソルバー、HLLソルバーなど)。どちらを使用するかをどのように決定すればよいですか?

3
べき級数マップの使用
私は加速器物理学の分野から来ました。特に円形のストレージリングに関連していますシンクロトロン光源用。高エネルギー電子は、磁場に導かれてリングの周りを循環します。電子は何十億回も循環しており、安定性を予測したいと考えています。位相空間(位置、運動量空間)の観点から、リングの1点での電子の動きを説明できます。リングを回るたびに、パーティクルは新しい位置と運動量に戻り、これにより「ワンターンマップ」と呼ばれる位相空間のマップが定義されます。原点に不動点があると仮定する場合があるため、べき級数で拡張できます。したがって、反復べき級数マップの安定性について知りたいと思います。これについて多くの難しい質問があり、このトピックには古い歴史があります。いわゆる切り捨てられたべき級数代数を実装するために、多数のライブラリが実装されています。(例えばY. Yanによるzlibに関するこの論文。物理学に関するより多くの背景と分析の1つのアプローチは、Bazzani et。al。ここで。)問題は、そのようなライブラリを使用する方法、および安定性の問題を解決する方法です。ビームダイナミクスで使用される主なアプローチは正規形解析でしたが、成功したとは思いません。ある種のスペクトル法が他の分野で開発されているのだろうか(おそらくこのようなものに沿って)?)。誰かが原点を固定点とする反復べき級数マップの長期安定性が分析される別のドメインを考えることができます。私が知っている1つの例は、フィッシュマンと原子物理学の「アクセラレータモード」の仕事です。他にありますか?キックローターまたはヘノンマップとしてモデル化できる他のシステムは何ですか?

1
BDFと暗黙のルンゲクッタの時間ステップ
BDFタイムステッピングよりも高次の暗黙的なルンゲクッタ(IMRK)を選択する理由はありますか?段階IMRKにはqが必要なので、BDFの方がはるかに簡単に思えますqqqqqqタイムステップごとに線形解。BDFとIMRKの安定性は重要なポイントのようです。暗黙のタイムステッパーを比較/比較するリソースが見つかりません。 それが役立つ場合、最終的な目標は移流拡散PDEの高次の暗黙的なタイムステッパーを選択することです。

1
FFTポアソンソルバーの収束率
FFTポイズンソルバーの理論上の収束率は? Iは、ポアソン方程式を解く午前: と N (X 、Y 、Z )= 3∇2VH(x 、y、z)= - 4 πn (x 、y、z)∇2VH(バツ、y、z)=−4πn(バツ、y、z)\nabla^2 V_H(x, y, z) = -4\pi n(x, y, z) ドメインに[0、2]×[0、2]×[0、2]、周期的境界条件を有します。この電荷密度は正味中立です。溶液は、で与えられる: VH(X)=∫N(n (x 、y、z)= 3π((x − 1 )2+ (y− 1 )2+ (z− 1 )2− 1 )n(バツ、y、z)=3π((バツ−1)2+(y−1)2+(z−1)2−1)n(x, y, z) = {3\over\pi} ((x-1)^2 + (y-1)^2 + (z-1)^2 - 1)[ …

2
超幾何関数の評価のための効率的で正確なアルゴリズムは何ですか?
一般化された超幾何関数(または級数)の評価のために、次のように定義される優れた数値アルゴリズムが存在することを知りたい pFq(a1,…,ap;b1,…,bq;z)=∑k=0∞(a1)k⋯(ap)k(b1)k⋯(bq)kzkk!pFq(a1,…,ap;b1,…,bq;z)=∑k=0∞(a1)k⋯(ap)k(b1)k⋯(bq)kzkk!{}_pF_q(a_1,\ldots,a_p;b_1,\ldots,b_q;z) = \sum_{k=0}^{\infty} \frac{(a_1)_k\cdots(a_p)_k}{(b_1)_k\cdots(b_q)_k}\frac{z^k}{k!} 一般に、このシリーズは必ずしも非常に高速に収束する(またはまったく収束する)わけではないため、用語を1つずつ合計するのは理想的ではないようです。より適切に動作する代替方法はありますか?具体的には、妥当な数の計算で4桁または5桁の精度が得られるものを探しています。 私が通常使用する最も一般的なケースはおよびp = 2 、q = 1ですが、私が取り組んでいる特定のプロジェクトでは、p = 1 、q = 2が必要です。明らかに、任意のための一般的なアルゴリズムのpとqが理想的ですが、私は私が得ることができるものかかります。p=1,q=1p=1,q=1p=1,q=1p=2,q=1p=2,q=1p=2,q=1p=1,q=2p=1,q=2p=1,q=2pppqqq

2
(方法)より高速に実行されるシミュレーションを作成しますか?
私はすべての割り当てをCFDで行うためのプログラミング言語としてpythonを使い始めました。プログラミングの経験はほとんどありません。私は機械工学の経験があり、航空宇宙工学の高等教育を追求しています。 CFDの計算面は、方程式を操作したり、数学を実行したりするよりも面倒になります。 プログラムの実行を高速化する一般的なガイドラインは何ですか?物事を並行して行うコツは何ですか?より高速に実行されるコードを記述する方法は? 上記の質問に答えるリソース(私のような素人にとって理解しやすい)はどこで入手できますか?

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