計算科学

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

3
どのような状況で、モンテカルロ統合は準モンテカルロよりも優れていますか?
簡単な質問:多次元積分を行うには、ある種のモンテカルロ法が適切であると判断した場合、擬似乱数を使用した通常のMC積分が準乱数列を使用した準モンテカルロ積分よりも優れているという利点があります?もしそうなら、この優位性が発揮される状況をどのように認識するのでしょうか?(そうでない場合、なぜ誰もが昔ながらのモンテカルロ統合を使用するのですか?)

2
和の固有値分解:A(対称)+ D(対角)
仮定実対称行列と固有値分解であるV Λ V Tが与えられています。和A + c Iの固有値で何が起こるかは簡単にわかります。ここで、cはスカラー定数です(この質問を参照)。Dが任意の対角行列である一般的なケースA + Dで結論を出すことはできますか?ありがとう。AAAVΛVTVΛVTV \Lambda V^TA+cIA+cIA + cIcccA+DA+DA + DDDD よろしく、 イワン

4
発行可能な画像を作成するための優れた(無料の)ソフトウェアですか?
現在、Matlabを使用して1dおよび2d画像を作成し、特定のモデルとの精度を比較しています。私の方法を標準のGaussian .wfnモデルと比較する必要があり、分子とラプラシアンの密度を分析することでそれを行います。 私は、.wfn近似の近似(おそらく等高線マップを使用して)の違いの2次元画像を生成することに関心があり、2つの原子間の結合経路と直接線に沿った特性(密度、ラプラシアンなど)にも関心があります。 前に述べたように、私は現在、Matlabを使用して画像を作成していますが、これらの画像は主に私と同僚のためのものです。それらは、私が論文や他の出版物でよく目にするタイプの画像ではないようです。 出版品質のグラフと画像を作成するには、どのようなソフトウェアを使用する必要がありますか(または他のユーザーが使用しますか)?

1
巨大な高密度線形システムを解く?
次の線形システムを反復法で効率的に解くことに希望はありますか? A∈Rn×n,x∈Rn,b∈Rn, with n>106A∈Rn×n,x∈Rn,b∈Rn, with n>106A \in \mathbb{R}^{n \times n}, x \in \mathbb{R}^n, b \in \mathbb{R}^n \text{, with } n > 10^6 Ax=bAx=bAx=b と Δ - 6 6 1A=(Δ−K)A=(Δ−K) A=(\Delta - K) 、ここでは、ラプラス演算子の離散化から生じる、いくつかの対角線を持つ非常に疎な行列です。メインの対角線にはがあり、他のつの対角線にはがあります。ΔΔ\Delta−6−6-6666111 R n × nKKKは、完全に1 で構成される完全な行列です。Rn×nRn×n\mathbb{R}^{n \times n} 解くと、ガウスザイデルのような反復法で問題なく動作します。これは、スパースの斜めに支配的な行列だからです。問題は、多数の効率的に解決することはほとんど不可能であると思われますが、の構造を利用して、おそらくそれを解決するためのトリックはありますか?A=ΔA=ΔA=\DeltaA=(Δ−K)A=(Δ−K)A=(\Delta - K)nnnKKK 編集:のような何かをするだろう Δxk+1=b+KxkΔxk+1=b+Kxk\Delta x^{k+1} = b + Kx^{k} …

1
ACM TOMSに提出されたソフトウェアの場合、ACMソフトウェアライセンス契約は他のライセンスとどのように相互作用しますか?
ジャーナル数学ソフトウェア上のコンピューティング機械取引に関する協会(ACM TOMS)は、ソフトウェアの実装が含まれる数値計算アルゴリズムの多くの記事を掲載しています。彼らの編集方針によれば、アルゴリズム論文の提出には、その論文に記載されているアルゴリズムの実装のソースコードが含まれています。このソースコードは、ACMソフトウェア著作権およびライセンス契約の対象です。 私は自分の作品のソフトウェア実装をリリースすることに興味があるので、このライセンスの法的意味について心配しています。具体的には、このソフトウェアライセンスは一般的なオープンソースライセンス(GPLv3、BSD、MIT / X11、Apacheライセンスなど)とどのように相互作用しますか?

2
共有メモリ並列プログラミング向けのPythonガイド
共有メモリマシン用のOpenMPをコーディングして(CとFORTRANの両方で)行列加算、乗算などの単純なタスクを実行した経験があります(LAPACKと競合する方法を確認するだけです)。OpenMPは、ドキュメントを見なくても簡単なタスクを実行できるほど十分に知っています。 最近、私は自分のプロジェクトでPythonに移行しましたが、絶対的な基本を超えるPythonの経験はありません。 2つの質問があります。 Pythonの共有メモリパラレルコンピューティングについて説明するための優れたガイド(オンラインPDF)はありますか? それを達成する最良の方法は何ですか?私は少し見ましたがctypes、それが最良の方法であるかどうかはわかりません。(最良の意味で言うと、プログラマー時間とシステム時間の間に良いトレードオフがあるものを意味します。コーディングが面倒にならないようにし、実行が遅くならないようにしてください)

3
リアプノフの方程式を解くためのライブラリ
以下の行列方程式 におけるΣ -所与のためのBおよびC行列-共分散行列の特性として仕事に現れます。この方程式は、特に連続時間制御理論では、リアプノフの方程式として知られていること、およびこの線形方程式の特殊な性質を活用する、それを解くためのさまざまな既知のアルゴリズムがあることを学びました。 B Σ + Σ BT+ C= 0BΣ+ΣBT+C=0B\Sigma + \Sigma B^T + C = 0ΣΣ\Sigma −−-BBBCCC−−- グーグルから、MatlabとFortranの実装が存在することも学びました。SLICOTとRECSYを見つけました。ただし、ライセンスの問題により、SLICOTソースへのアクセスは停止されました。 私の仕事のほとんどはRで実装されており、ソルバーへのRインターフェイスを見つけることができなかったため、自分で作成することを検討しています。私の質問は、SLICOTが、リアプノフの方程式のソルバーを実装したFortran(またはC)の最高のライブラリであるかどうかです。また、大きなスパース行列を処理できる実装にも興味があります。 BBB


2
特異線形ODEの固有システムを見つけるための有限差分法の精度をどのように改善しますか
私はタイプの方程式を解こうとしています: ( - ∂2∂バツ2− f(X )) ψ(X)=λψ(X)(−∂2∂x2−f(x))ψ(x)=λψ(x) \left( -\tfrac{\partial^2}{\partial x^2} - f\left(x\right) \right) \psi(x) = \lambda \psi(x) ここで、f(x )f(x)f(x)は、最小のN個の固有値と固有ベクトルに対して、000に単純な極を持ちます。境界条件は以下のとおりですψ (0 )= 0とψ (R )= 0、と私はオーバー機能で探しています(0 、R ]。NNNψ (0 )= 0ψ(0)=0\psi(0) = 0ψ (R )= 0ψ(R)=0\psi(R)=0(0 、R ](0,R](0,R] ただし、非常に単純な等間隔の有限差分法を実行すると、最小の固有値は非常に不正確になります(「偽」の固有値が存在することがわかっているものよりも数桁大きい「最初の固有値」が2番目になりますが、まだ不十分です。 そのような有限差分スキームの精度に影響を与えるものは何ですか?特異点が問題の原因であり、不等間隔のグリッドが物事を大幅に改善すると思いますが、良い不均一な有限差分法に向けて私を指すことができる論文はありますか?しかし、おそらく高階差分スキームはそれをさらに改善するでしょうか?どのように決定しますか(または単に「両方試してみてください」) 注:私の有限差分スキームは、3つの対角線が次の対称三重対角です。 ( − 12 Δ2、1△2− f(x )、− 12 Δ2)(−12Δ2,1Δ2−f(x),−12Δ2)\left( -\frac{1}{2 \Delta^2}, …

2
非構造化メッシュのセル中心にマルチポイントデータを補間する方法は?
マルチポイントフィールドデータのセットがあり、各ポイントデータセットは非構造化メッシュの単一セルに関連しています。目標は、最も正確な方法で、直接または間接的にセル中心にデータを補間することです。 逆距離加重補間を使用する場合、ソースとターゲット(セルの中心)間の距離が非常に短い場合、浮動小数点例外が発生する可能性があります。 構造化メッシュでのこの種の補間では、ボリュームウェイト補間が使用されます。これは、任意の形状のメッシュセルに直接変換されません。 SIGFPEを回避するためにIDW補間の許容値を導入することは、補間を非効率にする可能性のあるテストを導入しない場合にのみ意味があります。IDW補間では、すべての重みの分母に十分に小さなを追加することが可能なオプションですか?この問題に適した補間方法は何ですか?δδ\delta 追加情報: メッシュからポイントへの補間には、重心座標に基づいた補間を使用しています。メッシュの各多面体セルは、四面体に分解されます。セル中心フィールドは、IDW補間を使用してセルポイントに補間されます。各ポイントに対して検索が行われ、その中にある四面体が検出され、重心補間を使用して値が補間されます。 点からメッシュへの補間では、これは不可能です。セルの中心値は不明です。を強制する四面体構成を組み立てる方法はありません。ここで、はポイントPとセル中心Cに関連する重みです。これは、ポイント構成が任意であるという事実に由来しています。そのため、現在は浮動小数点の例外が発生しないように、IDWを使用しています。この問題により適した補間方法はありますか?W P C∑pWPC= 1∑pWPC=1\sum_p W_{PC} = 1WPCWPCW_{PC}

2
petsc4pyとc / c ++ / fortranの使用効率
petsc4pyとc / c ++ / fortranはどれくらい遅いですか? 実行されているコードに大きく依存することはわかっていますが、マトリックスベクトル製品のような単純なものはどうでしょうか。
11 petsc  python 

1
固有値の多重度を検出する方法は?
Aが一般的なスパース行列であり、固有値を計算するとします。固有値の多重度を検出する方法がわかりません。私の知る限り、特別な場合、コンパニオンマトリックス法によって多項式の根を見つけるには、RRQRを適用して根の多重度を検出できます。

1
ヌル空間突出
システム所与A ∈ R 、N × Nが場合ヤコビ反復がソルバとして使用する場合には、私は、それを読んで、この方法は、収束しないであろうbはのヌル空間内の非ゼロ成分有し、Aが。それでは、Aのヌル空間にまたがるゼロ以外の成分がbにある場合、Jacobiメソッドは非収束であると正式に述べることができますか?ヌル空間に直交する解の一部は収束するため、数学的にどのように形式化できるのでしょうか。A x = b 、Ax=b,Ax=b,A ∈ Rn × nA∈Rn×nA\in\mathbb{R}^{n\times n}bbbAAAbbbAAA したがって、各反復からヌル空間を射影することにより、収束(または?)します。AAA ......... Iは、特にの場合に興味Lが零空間対称ラプラシアン行列は、ベクトルによって張られる1 N = [ 1 ... 1 ] T ∈ R N、および有するゼロ成分中ののヌル空間、ここではセンタリング行列です。それは、各ヤコビ反復がヌル空間を投影することを意味しますか、つまり、各反復は中央に配置されますLx=b,Lx=b,Lx=b,LLL1n=[1…1]T∈Rn1n=[1…1]T∈Rn1_n=[1\dots 1]^T\in\mathbb{R}^nL J b = b 、J = I − 1bbbLLLJb=b,Jb=b,Jb=b, LJ=I−1n1n1TnJ=I−1n1n1nTJ=I-\frac{1}{n}1_n1_n^TLLL?私はこれを求めているので、Jacobiの反復からヌル空間を投影する必要はないでしょう(言い換えれば、反復を中央に配置するために)。LLL

3
2つの粒子積分<ij | kl>に効率的なインデックス関数を実装する方法は?
これは単純な対称列挙問題です。ここで完全な背景を説明しますが、量子化学の知識は必要ありません。 2つの粒子の積分は次のとおりです。 そして、次の4つの対称性があります。 積分を計算して、次のようにインデックス付けされた1D配列に格納する関数があります。⟨ij|kl⟩⟨ij|kl⟩\langle ij|kl\rangle⟨ij|kl⟩=∫ψ∗i(x)ψ∗j(x′)ψk(x)ψl(x′)|x−x′|d3xd3x′⟨ij|kl⟩=∫ψi∗(x)ψj∗(x′)ψk(x)ψl(x′)|x−x′|d3xd3x′ \langle ij|kl\rangle = \int {\psi_i^*({\bf x})\psi_j^*({\bf x}')\psi_k({\bf x})\psi_l({\bf x}') \over | {\bf x} - {\bf x}' |}\, d^3 x \,d^3 x' ⟨ij|kl⟩=⟨ji|lk⟩=⟨kl|ij⟩=⟨lk|ji⟩⟨ij|kl⟩=⟨ji|lk⟩=⟨kl|ij⟩=⟨lk|ji⟩\langle ij|kl\rangle = \langle ji|lk\rangle = \langle kl|ij\rangle = \langle lk|ji\rangleint2 int2(ijkl2intindex2(i, j, k, l)) ijkl2intindex2上記の対称性を考慮して、関数は一意のインデックスを返します。唯一の要件は、i、j、k、lのすべての組み合わせ(それぞれ1からnまで)をループする場合、int2配列を連続して埋め、上記に関連するすべてのijklの組み合わせに同じインデックスを割り当てることです4つの対称性。 Fortranでの私の現在の実装はこちらです。とても遅いです。誰もこれを効果的に行う方法を知っていますか?(任意の言語で。) ヒント:軌道が実数である場合、上記の対称性に加えて、およびを交換できるため、合計8つの対称性が得られます: そして、インデックス付けのための非常に高速な関数を実装できます。こちらの実装を参照してください。軌道が実数でない場合の効率的な索引付けスキームを見つけたいと思います。ψi(x)ψi(x)\psi_i({\bf x})i↔ki↔ki\leftrightarrow kj↔lj↔lj\leftrightarrow l⟨ij|kl⟩=⟨ji|lk⟩=⟨kj|il⟩=⟨il|kj⟩=⟨ij|kl⟩=⟨ji|lk⟩=⟨kj|il⟩=⟨il|kj⟩=\langle ij|kl\rangle = …

2
科学論文でのカーブフィット結果の報告
(この質問がこのサイトに合うことを望みます;そうでない場合、私の謝罪を受け入れます)。 特定のシミュレーションを実行し、時系列y(t)、t = 0、1、... 20を取得しました。いくつかの関数を試した後、次のことがわかりました。 y(t) =~ 1 / (A t + B) ここで、AとBは線形回帰を使用して計算した係数で、R ^ 2&gt; 0.99です。 そのような結果を科学論文で報告する標準的な方法は何ですか?具体的には: A.理論的な説明、出力がこのように見える理由はありません(これは減少するはずであり、下から制限されていることを知っていますが、それ以上ではありません)。それは単なる推測でした。試みた他のすべての失敗した推測を説明する必要がありますか? B.シミュレーションを実行するたびに、AとBの値がわずかに異なります。ランダムな実行を報告するだけですか、それともシミュレーションを何度も実行して結果を平均する必要がありますか?もしそうなら、何回で十分ですか?

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