計算科学

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


2
FEM:剛性マトリックスの特異点
私は微分方程式を解いています 初期条件、。ここで、はパラメーターです。演算子形式では、微分方程式をとして書き換えることができます。ここで、演算子は正定値です。(σ2(x)u′′(x))′′=f(x),0⩽x⩽1(σ2(x)u″(x))″=f(x),0⩽x⩽1 \left( \sigma^{2}(x) u ''(x) \right)'' = f(x), \;\;\; 0 \leqslant x \leqslant 1 u(0)=u(1)=0u(0)=u(1)=0u(0) = u(1) = 0u′′(0)=u′′(1)=0u″(0)=u″(1)=0u''(0) = u''(1) = 0σ(x)⩾σ0>0σ(x)⩾σ0>0\sigma(x) \geqslant \sigma_{0} > 0Au=fAu=fAu = fAAA FEMスキームに従って、問題を最適化問題に縮小します v_ {として 有限要素h_ {k}(x)を導入しますk}(x)= \ left \ {\ begin {array} {rl} 1-\ left(\ frac {x-x_ {k}} {h} \ right)^ …

4
初期値と最終値の制約を持つ結合ODEを解く
私の質問の本質は次のとおりです。2つのODEのシステムがあります。1つには初期値制約があり、もう1つには最終値制約があります。これは、いくつかの変数に初期値制約があり、他の変数に最終値制約がある単一のシステムと考えることができます。 詳細は次のとおりです。 私は、線形動的システムを駆動するために、連続時間の有限水平LQRコントローラーを使用しようとしています。Pythonエコシステムを引き続き使用したいと思います。 システムは、形態であるに、被写体X (0 )= X 0バツ˙(t )= A x (t )+ B u (t )x˙(t)=Ax(t)+Bu(t)\dot{x}(t) = Ax(t) + Bu(t)x (0 )= x0x(0)=x0x(0)=x_0 LQRソリューションは、x (t )で線形の最適な制御入力u(t)がu (t )= K (t )x (t )であるような行列生成します。K(t )K(t)K(t)x (t )x(t)x(t)u (t )= K(t )x (t )u(t)=K(t)x(t)u(t) = K(t)x(t) ここで、K(t )= R− 1BTP(t )K(t)=R−1BTP(t)K(t) …

2
mpi_allgather操作の計算コストは​​、ギャザー/スキャッター操作と比較してどうですか?
単一のmpi_allgather操作または1つのmpi_scatterと1つのmpi_gather操作を使用して並列化できる問題に取り組んでいます。これらの操作はwhileループ内で呼び出されるため、何度も呼び出される場合があります。 MPI_allgatherスキームを使用した実装では、重複する行列を解決するために、分散ベクトルをすべてのプロセスに収集しています。もう1つの実装では、分散ベクトルを単一のプロセッサ(ルートノード)に収集し、このプロセッサで線形システムを解き、ソリューションベクトルをすべてのプロセスに分散させます。 収集操作のコストが、分散操作と収集操作を合わせたものよりもかなり大きいかどうか知りたいです。メッセージの長さは、その複雑さにおいて重要な役割を果たしていますか?mpiの実装によって異なりますか? 編集:

3
三重対角行列の固有システムの並列アルゴリズム
大きなスパースマトリックス(〜200万要素)のランチョス対角化を行っています。Lanzcosアルゴリズムのほとんどすべての手順は、収束を確認するためにLanczos行列を対角化することを除いて、GPU上で並行して実行されます。そのために、私はNumerical RecipesのTQLIアルゴリズムを使用しています。並列または簡単に並列化可能な三重対角行列の固有システムを見つける方法はありますか?TQLIの並列バージョンは存在しますか?

4
ラプラシアン行列の平方根を見つける
次の行列と仮定与えられたが [ 0.500 - 0.333 - 0.167 - 0.500 0.667を- 0.167を- 0.500 - 0.333 0.833 ] その転置とA T。製品A T A = G収量 [ 0.750 - 0.334 - 0.417 - 0.334 0.667 - 0.333 - 0.417 - 0.333 0.750 ]、AAA⎡⎣⎢0.500−0.500−0.500−0.3330.667−0.333−0.167−0.1670.833⎤⎦⎥[0.500−0.333−0.167−0.5000.667−0.167−0.500−0.3330.833] \left[\begin{array}{ccc} 0.500 & -0.333 & -0.167\\ -0.500 & 0.667 & -0.167\\ …

1
逆関数を計算せずに線形回帰問題の標準誤差を計算する
反転するよりも、線形回帰問題の標準誤差をより高速に計算する方法はありますか?ここで、回帰があると仮定します。X′XX′XX'X y=Xβ+ε,y=Xβ+ε,y=X\beta+\varepsilon, ここで、はn × k行列、yはn × 1ベクトルです。XXXn×kn×kn\times kyyyn×1n×1n\times 1 最小二乗問題の解決策を見つけるために、で何かを行うことは実用的ではありません。行列Xで QRまたはSVD分解を直接使用できます。または、勾配法を使用できます。しかし、標準エラーはどうでしょうか?本当に必要なのは(X ′ X )− 1の対角線(およびεの標準誤差の推定値を計算するためのLS解法)だけです。標準誤差計算のための特定の方法はありますか?X′XX′XX'XXXX(X′X)−1(X′X)−1(X'X)^{-1}εε\varepsilon

1
大規模線形システムの反復法が実際に収束的であることを確立する方法は?
計算科学では、直接法または反復法などのいくつかの(効率的な)手段で解く必要のある大きな線形システムに遭遇することがよくあります。後者に注目した場合、大規模な線形システムを解くための反復法が実際に収束的であることをどのように確立できますか? 試行錯誤分析(cf. なぜ私の反復線形ソルバーが収束しないのか?)を行い、証明による収束を保証するか、音響経験ベース(例えば、CGやGMRESなどのKrylov部分空間法)を持つ反復法に依存できることは明らかです。それぞれ対称および非対称システムの場合)。 しかし、実際に収束を確立するために何ができるでしょうか?そして何が行われますか?

1
六面体セルの非構造化メッシュに関して点の雲を並べ替えます
質問 六面体セルの非構造化メッシュに関して、ポイントのクラウドをどのようにソートしますか? 各セルには、中心とそれを表す一意のラベルがあります。基本的に2つのクラウドポイント(元のポイントクラウド、およびセル中心のポイントクラウド)がありますが、セルジオメトリ情報(境界ボックス)が役に立つかもしれません。 結果 私はいくつかの質問をし、文献を検索しました: メッシュが六面体で構造化されていない場合、問題は直交範囲検索に限定されます。この目的のために、kdツリーが最もよく使用されます。メッシュが八分木データ構造に基づいて洗練されている場合、範囲検索アルゴリズムを構築できます。目標は、直接的なメッシュジオメトリの処理を避け、点群A-点群の関係Bに集中することです。点群A:クエリポイント、点群B:メッシュセル中心。

1
有限集合のジェネレーターを与えられた行列リー代数の基底をどのように計算できますか?
(数値)正方複素行列の任意のセット所与、Iはによって生成された実行列リー代数計算に興味、それを呼び出します。つまり、 ここで再帰的に定義されるような、およびのための。A L A L A = S P A N R { B :B ∈ ∪ ∞ 、K = 1個のC K } C K C 1 = A C K + 1 = { [ X 、Y ] :X 、Y ∈ ∪A={A1,A2,⋯,Am}A={A1,A2,⋯,Am}\mathcal{A}=\{A_1,A_2,\cdots,A_m\}AA\mathcal{A}LALA\mathcal{L_\mathcal{A}}LA=spanR{B:B∈∪∞k=1Ck}LA=spanR{B:B∈∪k=1∞Ck} \mathcal{L_\mathcal{A}} = \mathbb{span_R}\{B:B\in\cup_{k=1}^{\infty}\mathcal{C}_k\} CkCk\mathcal{C}_kC1=AC1=A\mathcal{C_1}=\mathcal{A}K≥1Ck+1={[X,Y]:X,Y∈∪kj=1Cj}Ck+1={[X,Y]:X,Y∈∪j=1kCj}\mathcal{C_{k+1}}=\{[X,Y]:X,Y\in\cup_{j=1}^k\mathcal{C_j}\}k≥1k≥1k\geq 1 この計算は(量子)制御理論に基づいています。 現在、ここにあるメソッドを使用しています。このメソッドは、Lieブラケットの繰り返し(つまり)、終了が保証されています。ただし、他の(より高速な)方法があるかどうかを知りたいです。おそらく、P。Hallベースを使用しているのでしょうか?おそらく再帰アルゴリズムですか?私の現在のデフォルト言語はMatlabです。[Aj1,[Aj2,[Aj3,⋯[Ajn−1,Ajn]⋯]]][Aj1,[Aj2,[Aj3,⋯[Ajn−1,Ajn]⋯]]][A_{j_1},[A_{j_2},[A_{j_3},\cdots[A_{j_{n-1}},A_{j_n}]\cdots]]]

3
数値線形代数を学習する前に、どの線形代数テキストを読むべきですか?
数値線形代数を深く研究したい(そして、数値線形代数と行列理論のジャーナルに従う)と仮定すると、最初に取り上げる方が良いコース/より良い本になります。 HoffmanとKunzeで証明と厳密さ(厳密な数学の問題はありません)。 または 厳密ではない証明または「証明なしで述べられた」アプローチであるが、アプリケーションと「現実世界」の問題に重きを置いているStrangの本を使って。 または あなたがお勧めする他の何か?(Gene Golubの本はどうですか?) Strangの本(彼のオンラインレクチャーで補足)の一部と、TrefethenとBauの数値線形代数の一部を知っています。しかし、私は主題のより完全な理解を持ちたいです。私は本を​​主に自習します。

4
fortran 95およびLAPACKを使用したスキューエルミート行列の行列指数
量子力学のシミュレーションのために、Fortran 95に没頭しています。正直なところ、私はOctaveに甘やかされてきたので、当然行列の累乗法を採用しました。(小、与えられた)スキューサイズの-Hermitian行列のn × nは、この問題を解決するためにLAPACKを使用する最も効率的な方法は何ですか?LAPACK95ラッパーは使用せず、LAPACKを直接呼び出します。n≤36n≤36n\leq 36n×nn×nn\times n
11 fortran  lapack 

4
Runge-Kuttaとデータポイントの再利用
Pythonでd yの 1次ODEを解くために、4次のRunge-Kuttaメソッドを実装しようとしています。。私はこの方法の仕組みを理解していますが、f(x、y)の計算回数を最小限に抑える効率的なアルゴリズムを作成しようとしています。これは非常にコストがかかるためです。以前に計算されたデータポイントは、ステップを進めるごとに再利用できるが、その方法はわからない、と言われました。誰もこれを行う方法を知っていますか、それは不可能ですか?dydx=f(x,y)dydx=f(x,y)\frac{dy}{dx} = f(x,y)f(x,y)f(x,y)f(x,y)

1
線形連立方程式を解くためのマルチグリッド法をどのように並列化できますか?
私が理解しているように、マルチグリッド法は、同じ問題のより粗いバージョンを解決することで線形システムを解決し(低周波誤差を除去することにより)、高精度誤差を滑らかにするために細かいグリッドに投影し直します。大規模なシステムの場合、各グリッドレベルで反復法を並列に実装する方法を確認できます。このアプローチは並行してうまく拡張できますか?アルゴリズムに並行して利用できる並行性の他のソースはありますか?

1
三角格子上のフーリエ変換ライブラリ
2D三角形または六角形格子での離散フーリエ変換(DFT)の合理的に高速な実装を探しています。 このような実装(特にPythonまたはMathematicaから簡単に使用できる実装)へのポインタと、この問題を多くのシステムに既に組み込まれている1D DFTに減らす方法の説明に感謝します。

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