計算科学

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


4
使用する低差異シーケンスをどのようにして知ることができますか?
立方体または最適化に準モンテカルロ法を使用するときはいつでも、ファンデルコープ、ハルトン、ハンマースリー、フォーレ、ニーダーライター、ソボルの名前に関連して、さまざまな低不一致シーケンスから選択できるようです。覚えていない他の名前。計算に最も適切な低不一致シーケンスを選択する方法に関する優れた経験則はありますか?

1
行列の
与えられた大行列あAAと固有値σ1≥ σ2≥ …σ1≥σ2≥…\sigma_1\ge \sigma_2 \ge \dotsc 、私は、これらの値のサブセットのみを決定言いたいσ5、σ8σ5,σ8\sigma_5,\sigma_8およびσ19σ19\sigma_{19}。これを実行できるアルゴリズムはありますか、または上位19の固有値を実行できる最高のものを見つけていますか?

1
10年前にはシミュレートできなかった、どのような科学的問題をシミュレートできますか?
10年前にシミュレートできなかったコンピューターでシミュレートできる科学的問題は何ですか? 私は特に、10年前には(計算上の制約や知識の欠如のために)不可能だった最先端の科学シミュレーションに興味があります。 可能であれば、ソフトウェアへのリンクを提供してください。

1
FEMエラープロットは常に直線であると想定する必要がありますか?
FEMのエラー推定は、通常、次の形式です。 | | あなたh− u | | ≤ Ch 。||uh−u||≤Ch.||u^h-u||\leq Ch. 両側で対数を取ると、 ログ| | あなたh− u | | ≤ ログC+ ログh 。log⁡||uh−u||≤log⁡C+log⁡h.\log ||u^h-u||\leq \log C + \log h. この推定は、エラーが対数対数スケールでによって与えられる直線より下にあることを意味します。この推定では、に関する誤差のプロットが直線である必要はなく、直線より下にある必要があります。ログy= ログC+ ログhlog⁡y=log⁡C+log⁡h\log y=\log C + \log hhhh では、なぜジャーナルで公開されているほとんどのエラープロットがエラーの非常に鋭い直線を示しているのでしょうか。私は科学計算の初心者なので、この質問に対するいくつかの洞察に感謝します。 特に、FEniCSで実行した一部の計算では、直線ではないエラープロットが表示されましたが、グラフは直線の下にあります。特定の線形ソルバーはそのような動作に影響しますか?私はおたふく線形のソルバーを使用しています。 編集:下の図の理論的な結果は、エラー(y軸にプロット)がとして減衰し、がx軸にプロットされていることを示しています。2番目の図は、対数対数スケールです。1 / R1/R1/RRRR

1
科学計算におけるデータ構造のビットパッキングと圧縮
私は最近、この論文に出くわしました。この論文では、疎行列を表す際にメモリを節約する方法について説明しています。32ビット整数は、最大40億までの数値を格納できます。しかし、PDEを解くと、未知数の数が40億に近づくずっと前に、問題が並列化されて分割されました。彼らのアイデアは、帯域幅が狭い場合にマトリックスを並べ替えることです。j特定の行にすべてのゼロ以外の列のインデックスを格納するのではなく、並べ替えによって大きさが小さくなる傾向があるiオフセットを格納j - iします。オフセットは、32ビット整数よりも少ないビット数で保存できます。行列のゼロ以外のエントリを反復処理する場合は、より多くの計算を行う必要がありますが、キャッシュミスを少なくすることによる節約は、それを補う以上のミスをもたらします。では、この論文彼らは特に階層マトリックス形式で16ビットインデックスを使用することを検討していましたが、最終的には同様のアイデアです。ライブラリzfpもあります。これは、浮動小数点データを圧縮するためのものです。 現在「フロップは無料」であり、ボトルネックはメモリアクセスであるため、この種のトリックはCPUキャッシュをより有効に活用するために非常に有望であるように見えます。 私はこれら2つの論文の引用/引用のほとんどを精査しました。私は、ビットパッキングの有効性、スパース行列ベクトルの乗算、および計算科学の他の問題について、他の参考資料を探しています。たとえば、このアイデアを使用して、グラフや非構造化メッシュのデータ構造をはるかに効率的に設計できると思います。

1
二次微分の中央差分スキームは悪条件につながります
中心差分スキーム: 収率三重対角係数行列[1 -2 1]。ポイントの数が増えると、この行列は悪条件になります。しかし、これは一般的な離散化です。このスキームが悪条件になりがちなときに一般的に使用されるのはなぜですか。d2udx2=un+1−2ui+un−1Δx2d2udx2=un+1−2ui+un−1Δx2\frac{d^2u}{dx^2}=\frac{u_{n+1}-2u_i + u_{n-1}}{\Delta x^2}

3
実際の行列に適用されたQRアルゴリズムはどのようにして複素固有値を返しますか?
私は固有値アルゴリズムの初心者ですが、何か注意が必要です。QRアルゴリズムは、実数/複素数の固有値を生成する実数/複素数行列で機能します。ただし、実際の行列から複素固有値を生成することはできません。ここでは、ジュリアで書かれ、こことここから派生した単純な例を示します。 using LinearAlgebra A = [7 3 4 11 -9 -2; -6 4 -5 7 1 12; -1 -9 2 2 9 1; -8 0 -1 5 0 8; -4 3 -5 7 2 10; 6 1 4 -11 -7 -1] M = copy(A) for i=1:100 global M Q,R = …

1
これらの振動は何ですか?
ガウス関数とローレンツ関数の中間の関数数値で定義しています。ガウス分布よりもはるかに遅く減衰しますが、単純な逆指数よりも高速です。g(x)g(x)g(x) フーリエ変換を大きなに対して計算する必要があります。への関数呼び出しは計算コストが高いため、補間を定義します-これをと呼び -いくつかの巨大な範囲、、それを私の積分に使用します。T G (X )G (X )G INT(X )X - 40 &lt; X &lt; 40f(t)≡F[g(x)](t)f(t)≡F[g(x)](t)f(t)\equiv \mathcal{F}[g(x)](t)tttg(x)g(x)g(x)g(x)g(x)g(x)gint(x )gint(x)g_{\text{int}}(x)バツxx− 40 &lt; x &lt; 40−40&lt;x&lt;40-40<x<40 f(t )= ∫∞- ∞cos(t x )g(x )dバツ⟶≈∫L− Lcos(t x )gint(x )dバツf(t)=∫−∞∞cos⁡(tx)g(x)dx⟶≈∫−LLcos⁡(tx)gint(x)dxf(t)=\int_{-\infty}^{\infty}\cos (tx)g(x)\,dx\,\,\underset{\approx}{\longrightarrow}\,\,\,\int_{-L}^{L}\cos(tx)g_{\text{int}}(x)\,dx しかし、フーリエ変換の近似を計算すると、最初は予期していなかった奇妙な振動が発生します。 上の図で示したように、振動の「周期」は約15.7です。私の最初の推測は、これは積分の相殺の交互の性質のアーティファクトであるかもしれないが、それは15.7の観察された「期間」を説明しないでしょう。 T推測= 2 πL≈ 0.157 ...Tguess=2πL≈0.157…T_{\text{guess}}=\frac{2\pi}{L}\approx 0.157\ldots これは、私が観察するものとはまったく異なる100の因数です(はい、積分と水平軸を正しく定義したことを確認しました)。これはどうやってできるの? 編集#1:補間の詳細 私は、Mathematicaの組み込みInterpolationで補間しています。これは、3次曲線で連続するポイント間を補間します(したがって、各ポイントで2導関数まで定義されます)。具体的には、関数を範囲でステップで補間しています。 G(X)-40&lt;X&lt;40DX=40 / 100=0.4ndnd^{\text{nd}}g(x )g(x)g(x)− …

1
拡散による測地線距離の計算
加重グラフのAPSP(All-Pair Shortest Path)問題を解決しようとしています。このグラフは実際には1次元、2次元、または3次元のグリッドであり、各エッジの重みは2つの頂点間の距離を表します。必要なのは、頂点のすべてのペアに対する測地線グラフの距離(グラフの最短経路)です。 拡散ベースの方法が必要です。ダイクストラまたはフロイドワーシャルアルゴリズムよりも高速だからです。私は熱方程式を使用してこれを達成しようとしています: 最後に、私のアプリケーションは、フォームのカーネル必要がありますとグラフ測地線距離を。exp(−d2/γ)ddあなたdt= Δ U 。dあなたdt=Δあなた。\frac{du}{dt} = \Delta u.exp(− d2/ γ)exp⁡(−d2/γ)\exp(-d^2/\gamma)ddd 私の希望は、そのソリューションをすることになっているので、拡散のための緑の機能: u ( t 、x 、y)=(14個のπt)− d私メートル2exp(−d2(x、y)4 トン)、あなた(t、バツ、y)=(14πt)−d私メートル2exp⁡(−d2(バツ、y)4t)、 u(t,x,y) = \left(\frac{1}{4\pi t}\right)^{-\frac{dim}{2}}\exp\left(\frac{-d^2(x,y)}{4t}\right), 次に、そのソリューションを直接使用して(前に因子を取り除くためにいくつかの調整を加えて)、カーネルとして使用できます。パラメーターは、調整することによって調整されます。トンγγ\gammattt 私はまだうまくいくことをすることができなかった、そして私はいくつかの助けが欲しい。これまでに多くのことを試しましたが、いくつかの問題が発生しています。これらすべてを1つの質問で説明することは困難で長いので、最初に私が良いアプローチの始まりであると考えるものを説明し、次にいくつかの一般的な質問をします。 それはクレーンらによる熱アルゴリズムにおける測地線の第一段階で行われるのと同じ方法で、後退オイラーステップで、Iは、線形システム解くことができる: と拡散ステップ、はラプラシアン行列、は頂点の1つでのディラック。 tLu0(私d− t L )u = u0(1)(1)(私d−tL)あなた=あなた0(Id - tL)u = u_0 \tag{1}tttLLLあなた0あなた0u_0 式(1)を解くと、実際にはという形式のカーネルが得られますが、これは望ましくありません。したがって、時間内にK回の反復を行い、K回解く必要があります: Id- これにより、。(I d − texp(− d/ γ)exp⁡(−d/γ)\exp(-d/\gamma) u = …

1
有限要素法のメッシュ生成に関するリソース
これは推奨事項の質問であり、これらの質問には答えがないため、これは実際にはルールの一部ではありません。しかし、このフォーラムの投稿のように:https : //stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list。正直なところ、他にこの質問をする場所はわかりません。 有限要素とメッシュに関するブックガイドリストを作成したいと思います。実は、私はこれを大学の研究や仕事の研究として行っていません。私はこのトピックに興味があり、何年も前からいます。これを自分の時間で学びたいです。私は2次元の非線形電磁シミュレーション用の独自のシミュレーターの作成に取り組んでおり、現在はgmshをメッシャーとして使用しています。現在、gmshをソースに統合する作業をしています。進捗は順調です。ソースコードがプロジェクトに直接統合されているgmshでメッシュを作成できます。メッシュの現在のワークフローを変更したいと思います。つまり、GMSHの制限を回避するためにコードを記述する必要があります。これはまた、 ソースが私がよく知らない多くの用語を参照しているため、この側面(数値グリッドの生成)に欠けていることに気づきました。これがフォーラムのルールに違反している場合は、お詫び申し上げます。 しかし、数値グリッド生成に関するリソースを誰かが私に指摘できるかどうか疑問に思っていましたか?入門、初心者、中級、上級者向けの参考資料として、どのようなものがありますか?今は初心者のようです。現在、「数値グリッド生成:ジョーF.トンプソンによる基礎とアプリケーション」というリソースを持っています。このリソースは出発点として役立ちますか? (ドキュメンテーションは非常に詳細なので、私は間違いなく取引を進めます。IIチュートリアル/マニュアル。技術的な詳細で読者に負担をかけすぎないで、簡潔に説明していますが、要点があります) 余談ですが、動画のセクションがあるべきだと思います。時々、それらは役に立ちます。

2
ラグランジュ乗数空間は数学的な見方では多すぎる
バックグラウンド: ラグランジュ乗数法は、接触問題、材料界面、相変態、剛性拘束、または界面に沿った滑りなど、多くの分野で採用されてきました。 ラグランジュ乗数空間の選択または設計が悪いと、ラグランジュ乗数に振動結果(不安定な問題)が生じることはよく知られています。膨大な量の文献がこの観察を示しており、通常、供給不足状態の偏差によって発生する振動を取り除くためにいくつかの変更または改善が行われました。 質問: XFEMに関する文献を読んでいるとき、以下の議論が赤くハイライトされていて、これは非常に数学的なものです。空間を局所的に解釈または理解する方法は局所的に高すぎるため、結果としてinf-sup条件に違反していますか?貢献してくれてありがとう。

2
効率的な行列-ベクトル乗算のための行列のパターンの活用
私は次のような状況にあります。一連のベクトルあり、それぞれ、が最初に固定されている積を計算します。の構造に関する情報はありませんが、には通常、多くの値が繰り返される特定のパターンがあり、これらの積をできるだけ高速に計算したいと考えています。x1,x2,..x1,x2,..x_1, x_2,.. AxiAxiAx_iAAAxixix_iAAA 1つの例は次のようになります。AAA ここで白い領域は0です。 に関する情報を格納する方法、または何らかの方法でそれを変更して、各製品の操作の数を減らすことができる方法があるのでしょうか。すべて0の行の場合、これは簡単です。そのような行を示す行インデックスを格納するだけです。行の計算を再利用するために、複製された行に関する情報を保存することもできます。また、各行の平均差を最小化し、各行の差だけを計算するなど、行列の行の順序付けも検討しました。しかし、これはより複雑なパターンの問題にぶつかるようです。AAA この種の問題に対する既知の方法があるのか​​と思っていました。 編集:私が持っていたもう一つのアイデアは、それ以来ないということです。マトリックス内の一意の値の数はかなり少ないため、として製品を分解できます。ここで、は一意の値が1つしか含まれていませんが、これがこの問題に何らかの利点をもたらすかどうかはまだません。Ax=A1x+A2x+…AnxAx=A1x+A2x+…AnxAx = A_1x + A_2x + \dots A_nxAiA私A_i

2
SDEの微分係数なしのソルバーの優れている点は何ですか?
私はSDEに慣れるために、このトピックに関するレビューペーパーをいくつか読んでいます。彼らは、デリバティブのないソルバーに多大な労力が費やされたという印象を残しています。私の理解では、これはDDEのような fと gの 導関数はメソッドに必要ありません(間違っている場合は修正してください)。dX=f(X)dt+g(X)dW,dX=f(X)dt+g(X)dW,\newcommand\diff{\mathop{}\!\mathrm{d}} \diff X = f(X)\diff t + g(X) \diff W, fffggg この特性は、導関数を取得するのが難しい、または計算上実行できない、または存在しない一部のアプリケーションで有用であることを理解できます。ただし、このような問題がアプリケーションに関連することはあまりありません。 これは、次のうち少なくとも1つが当てはまることを示唆しています。 導関数なしのソルバーにはさらに欠けている関連する利点がいくつかあります。 (上記の理由により)導関数なしのソルバーが必要な問題は、私が思っているよりも関連性があります。 導関数なしのソルバーの需要は、「供給」、つまりソルバーを開発する人々によってそれらに与えられる注意よりも低くなります。 どっち?

2
小さな行列の固有値
2x2、3x3、および4x4行列(実数、非対称)の小さな数値ライブラリを書いています。 多くの数値分析テキストは、特性多項式の根を計算することを強くお勧めし、ダブルシフトQRアルゴリズムの使用を推奨しています。ただし、行列のサイズから、特性多項式を単純に計算して根を見つけるだけで十分かどうか疑問に思います。これをサポートするStackExchangeでこの回答を見つけましたが、多項式係数のエラーにより、多項式のゼロ(したがって、異なる固有値)が不正確になる可能性があることを知っています。一方、方程式はせいぜい4次式であり、多項式の根の分析式があるので、あまり離れすぎないようにしてください。 この場合の固有値を得るために特性多項式を使用することの長所と短所は何ですか?

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