計算科学

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

1
実部からの分析継続の虚数部の数値回復
私の状況。 複雑な積分を通じて定義された複素変数関数があります。私が興味を持っているのは、虚軸上のこの関数の値です。次のリボンのこの関数に数値でアクセスできます:。正式には、積分式はこのドメインの外で発散するため、分析の継続が必要です。写真で私の状況を要約すると、Z = (X 、Y )∈ (- ∞ 、∞ )× [ - 1 、1 ]f(z)f(z)f(z)z= (x 、y)∈ (- ∞ 、∞ )× [ - 1 、1 ]z=(x,y)∈(−∞,∞)×[−1,1]z=(x,y)\in (-\infty,\infty)\times[-1,1] 数値からこのリボンのについて知っていることは次のとおりです。f(z)f(z)f(z) 虚軸と実軸を同時に対称にします。 ゼロに減衰します。R e (z)→ ∞Re(z)→∞Re(z)\rightarrow\infty 近くで爆発します。ポールまたは分岐ポイントの可能性がありますが、わかりません。この特異点(および分析継続のその他すべての孤立した特異点)の性質は、この関数の特定のパラメーター化に依存していると思われます(詳細については、以下の積分を参照してください)ξz= ± iz=±iz=\pm iξξ\xi 実際、または非常によく似てい。実部のプロットは次のとおりです。1 /(1 + z 2 )2 nセク2(z)sech2(z)\text{sech}^2(z)1 /(1 + z2)2 n1/(1+z2)2n1/(1+z^2)^{2n} 私の質問は、私が関数について持っている膨大な量の情報(そのリボン上のそれへの合計数値アクセス)を考えると、虚数軸に沿ってこの関数の近似を数値的に計算する方法はありますか?ところでMathematicaを使用しています。 虚軸に沿った値に興味があるのは、この関数の次のフーリエ変換を評価する必要があるためです。 …

3
高度に振動する積分の数値評価
で複素関数論のアプリケーションでは、この上級コースの演習の高い振動不可欠で1ポイントで I(λ)=∫∞−∞cos(λcosx)sinxxdxI(λ)=∫−∞∞cos⁡(λcos⁡x)sin⁡xxdxI(\lambda)=\int_{-\infty}^{\infty} \cos (\lambda \cos x) \frac{\sin x}{x} d x 複素平面で点法を使用して、λλ\lambda大きな値に対して近似する必要があります。 振動性が高いため、この積分は他のほとんどの方法を使用して評価するのは非常に困難です。これらは、異なるスケールでのλ=10λ=10\lambda = 10被積分関数のグラフの2つのフラグメントです。 一次漸近近似は I1(λ)=cos(λ−14π)2πλ−−−√I1(λ)=cos⁡(λ−14π)2πλI_{1}(\lambda) = \cos \left(\lambda-\frac{1}{4} \pi\right) \sqrt{\frac{2 \pi}{\lambda}} そして、さらに(はるかに小さい)改良が用語を追加します I2(λ)=18sin(λ−14π)2πλ3−−−√I2(λ)=18sin⁡(λ−14π)2πλ3I_2(\lambda)=\frac{1}{8} \sin \left(\lambda-\frac{1}{4} \pi\right) \sqrt{\frac{2 \pi}{\lambda^{3}}} λλ\lambda関数としての近似値のグラフは次のようになります。 ここで質問が来ます。近似がどれほど良いかを視覚的に見るために、積分の「実際の値」と比較するか、より正確には独立したアルゴリズムを使用して同じ積分の良い近似と比較したいと思います。サブリーディング補正の小ささにより、これは非常に近いものになると予想されます。 λλ\lambdatanh(sinh)tanh⁡(sinh)\tanh(\sinh) 最後に、実装した重要度サンプルを使用してモンテカルロインテグレーターで運を試しましたが、安定した結果を得ることができませんでした。 λ>1λ>1\lambda > 1

2
numpyの行列反転の複雑さ
密な正方行列を反転する必要がある微分方程式を解いています。この行列の反転は計算時間のほとんどを消費するため、利用可能な最速のアルゴリズムを使用しているかどうか疑問に思っていました。 私の現在の選択はnumpy.linalg.invです。数値から、でスケーリングされることがわかります。ここで、nは行数であるため、方法はガウス消去法のようです。O(n3)O(n3)O(n^3) ウィキペディアによると、利用可能なより高速なアルゴリズムがあります。これらを実装するライブラリがあるかどうか誰もが知っていますか? なぜこれらの高速アルゴリズムをnumpyが使用しないのでしょうか?

1
逆数のない最小の固有値
仮定A∈Rn×nA∈Rn×nA\in\mathbb{R}^{n\times n}の対称正定値行列です。 AAAは十分大きいため、Ax=bAx=bAx=b直接解くのは高価です。 最小固有値見つけるための反復アルゴリズムがあるAAA反転関与しないAAA各反復では? つまり、共役勾配のような反復アルゴリズムを使用してを解かなければならないため、A - 1をAx=bAx=bAx=b繰り返し適用することは高価な「内部ループ」のように思えます。必要なのは単一の固有ベクトルだけです。A−1A−1A^{-1} ありがとう!


2
科学計算における複雑な算術演算の危険性
複素内積二つの異なる定義が規則によって決定した:ˉ U Tの VまたはU T ˉ V。BLASで、cdotu、zdotu、およびcdotc、zdotcのルーチンを見つけました。前の2つのルーチンは実際にu T v(偽の内積!)を計算し、最後の2つのルーチンは内積の最初のベクトルを共役させます。また、いずれかの定義によって(共役U又はV)、⟨ U 、V ⟩ = ¯ ⟨ V 、U ⟩⟨ U 、V ⟩⟨u,v⟩\langle u,v\rangleあなたは¯Tvu¯Tv\bar{u}^TvあなたはTv¯uTv¯u^T\bar{v}あなたはTvuTvu^Tvあなたはuuvvv⟨ U 、V ⟩ = ⟨ V 、U ⟩¯¯¯¯¯¯¯¯¯¯¯⟨u,v⟩=⟨v,u⟩¯\langle u,v\rangle=\overline{\langle v,u\rangle}活用して!さらに、コメントで指摘されているように、多値の複雑な関数の主要な値を選択することは、慣習に依存する可能性があります。 私の質問は次のとおりです。この複雑さは科学計算での複雑な算術演算の使用に対して真の危険を引き起こしますか?この問題は、複素数を常に実部と虚部に分割し、実算のみを使用することを提案するdeal.iiの著者によって強調されています。しかし、分割アプローチが便利だとは思いませんでした。たとえば、時間調和マックスウェル方程式のPMLについて考えます。 FreeFem ++およびlibmeshを除くほとんどのオープンソースFEMソフトウェアでは、複素数を使用することの心配が一般的であるようです。ただし、2つの例外についても、複雑な算術演算は実際よりもテストされていません。 私の最後の質問は、複素数の使用を常に避けなければならないのかということです。

1
ラインサーチおよび信頼領域アルゴリズムのスケール不変性
Nocedal&Wrightの数値最適化に関する本では、セクション2.2(27ページ)に「一般的に、信頼領域アルゴリズムよりもライン探索アルゴリズムのスケール不変性を保持する方が簡単です」という記述があります。同じセクションで、元の変数のスケーリングされたバージョンである新しい変数を使用することについて説明します。これは、ライン検索と信頼領域の両方に役立ちます。別のアプローチは事前調整です。信頼領域メソッドの場合、事前条件付けは楕円形の信頼領域を持つことと同等であるため、スケール不変性を提供します。ただし、行検索の前提条件については、同様の直観が明確ではありません。線の探索はどのような点でスケール不変性に適していますか?実用的な考慮事項はありますか? また、信頼領域メソッドの前提条件に関する質問があります。非常に条件の悪い問題の場合、優れた前提条件は外側のニュートン反復と内側のCG反復の両方を減らすか、後者のみを減らすか?信頼領域は元の空間では楕円体であるため、適切な前提条件子を使用すると、地形によりよく一致する楕円体が得られます。これにより、アルゴリズムがより良い方向に進むように強制することにより、外側のニュートン反復の数を減らすことができると思います。これは正しいですか?

3
多様体上の有限要素
たとえば、球体上の楕円方程式など、多様体上のPDEを解きたいです。 どこから始めますか?私は2dで既存のコード/ライブラリを使用しているものを見つけたいのですが、(今のところ)それほど空想的ではありません 後で追加:記事とレポートを歓迎します。

1
Runge-Kuttaメソッドを2次ODEに適用する
オイラー法をルンゲ・クッタの4次に置き換えて、一定の重力ではない自由落下運動(たとえば、地上1万kmからの自由落下)を決定する方法を教えてください。 これまで、オイラー法による簡単な統合を書きました。 while() { v += getMagnitude(x) * dt; x += v * dt; time += dt; } x変数は現在位置、vは速度、getMagnitude(x)はx位置の加速度を返します。 私はRK4を実装しようとしました: while() { v += rk4(x, dt) * dt; // rk4() instead of getMagintude() x += v * dt; time += dt; } ここで、rk4()関数本体は次のとおりです。 inline double rk4(double tx, double tdt) { …

1
アカデミアにおけるコードの公開およびオープンソース開発に関するポリシー
前書き 問題とは何かを説明するために、まず問題の矛盾する主張をいくつか述べておきましょう。 個人的には、開発のあらゆる段階でコードを開いてもらいたいと思っています。 他の人は私がやっていることを見て活用するでしょう また、既存のコードを再利用したい 第三者が貢献できる 国民は私に資金を提供しているので、国民は見る権利を持っています しかし、私の上司は言います 彼は自分の名前(または研究所の名前)で公開されるものを承認する必要があり、すべてのステップを承認することはできません 研究所の知的財産権に関するガイドラインがあります 私の同僚は言う 他の人が来て私の未発表のアイデアを盗みます 私の実験的なコードは他の人にはほとんど役に立たない ご質問 私の研究室でコード公開とオープンソース開発の青写真を思いつくために、次の質問を提起したいと思います。 アカデミアにおけるオープンソフトウェアの重要な問題をカバーする、そのようなガイドラインはすでにありますか? そのようなガイドラインに含める必要がある問題はどれですか? そのようなガイドラインを実装して使用する正しい方法は何だと思いますか? 備考 クレジット、再現性、コードのドキュメント、発行場所の問題については、別のガイドラインで対処したいと思います。

2
PDE制約付き最適化のための随伴法のコストを理解する
随伴ベースの最適化手法がPDE制約付き最適化でどのように機能するかを理解しようとしています。特に、設計変数の数は多いが「方程式の数は少ない」という問題に対して、随伴法がより効率的である理由を理解しようとしています。 私が理解していること: 次のPDE制約付き最適化問題を検討してください。 minβ I(β,u(β))s.t.R(u(β))=0minβ I(β,u(β))s.t.R(u(β))=0\min_\beta \text{ } I(\beta,u(\beta))\\ s.t. R(u(\beta))=0 ここで、は、設計変数に依存するベクトル設計変数βおよびフィールド変数未知数u (β )の(十分に連続的な)目的関数であり、R (u )はPDEの残差型です。IIIββ\betau(β)u(β)u(\beta)R(u)R(u)R(u) 明らかに、IとRの最初のバリエーションは δI=∂I∂βδβ+∂I∂uδuδI=∂I∂βδβ+∂I∂uδu\delta I = \frac{\partial I}{\partial \beta}\delta\beta + \frac{\partial I}{\partial u}\delta u δR=∂R∂βδβ+∂R∂uδu=0δR=∂R∂βδβ+∂R∂uδu=0\delta R = \frac{\partial R}{\partial \beta}\delta\beta + \frac{\partial R}{\partial u}\delta u = 0 ラグランジュ乗数ベクトルを導入すると、目的関数の変動は次のように記述できます。λλ\lambda δI=∂I∂βδβ+∂I∂uδu+λT[∂R∂βδβ+∂R∂uδu]δI=∂I∂βδβ+∂I∂uδu+λT[∂R∂βδβ+∂R∂uδu]\delta I = \frac{\partial I}{\partial \beta}\delta\beta + \frac{\partial …
11 optimization  pde 

2
行列が半正定かどうかをテストする
正の半正定性を確認する必要がある対称行列のリストLL{\cal L}があります(つまり、それらの固有値は非負です)。 上記のコメントは、それぞれの固有値を計算し、それらが非負であるかどうかをチェックすることで実行できることを示しています(おそらく丸め誤差を処理す​​る必要があります) 私のシナリオでは固有値の計算は非常に高価ですが、使用しているライブラリは正の確定性(つまり、行列の固有値が厳密に正である場合)のテストが非常に高速であることに気付きました。 したがってアイデアは、マトリックス与えられたであろうB∈LB∈LB \in {\cal L}、あるテスト場合にB+ϵIB+ϵIB + \epsilon I正定値です。そうでない場合、BBBは正の半正定値ではありません。そうでない場合、の固有値を計算して、BBBそれが実際に正の半正定値であることを確認できます。 私の質問は次のとおりです。 正定性の効率的なテストが提供されている場合、行列が半正定かどうかをテストするより直接的で効率的な方法はありますか?

2
マトリックスを使用しないメソッドのブラックボックス前提条件は存在しますか?
ヤコビアンフリーニュートンクリロフ(JFNK)メソッド、および一般的なクリロフメソッドは、行列ベクトル積の結果のみを明示的に保存または行列の構築を必要としないため、非常に便利です。実際にスパースシステムを形成する場合、多くの前提条件があります。 真のマトリックスフリー法には何が利用できますか?グーグルは、「マトリックス推定」への参照と、それが可能であることを示す他のいくつかを示します。これらの方法は一般的にどのように機能しますか?従来の前提条件と比較してどうですか?物理学ベースのマトリックスフリーの前提条件は進むべき道ですか?たとえば、PETScや他のパッケージなど、公に利用可能な方法はありますか?

3
高次元の放物線PDE(多電子シュレディンガー方程式)を解く際の最新技術は何ですか
単純な極(形式)および境界条件の吸収?1| r⃗ 1− r⃗ 2|1|r→1−r→2| \frac{1}{|\vec{r}_1 - \vec{r}_2|} 具体的には、多電子シュレディンガー方程式を解くことに興味があります。 (Σ私∑j ≠ i[ - ∇2私2 メートル− Z私Zj| r⃗ 私− r⃗ j|+ V(r⃗ 私、T )]) ψ=-I ∂tψ(∑i∑j≠i[−∇i22m−ZiZj|r→i−r→j|+V(r→i,t)])ψ=−i∂tψ \left( \sum_i \sum_{j\neq i}\left[ -\frac{\nabla_i^2}{2 m} - \frac{Z_i Z_j}{|\vec{r}_i - \vec{r}_j|} + V(\vec{r}_i, t) \right]\right)\psi = -i\partial_t \psi 1個以上の電子を持つ2原子分子の場合。

1
純粋に回転する最小二乗一致
誰でも次の最小二乗問題の方法を推奨できますか? 最小化するを見つける:、ここでRはユニタリ(回転)マトリックス。R∈R3×3R∈R3×3R \in \mathbb{R}^{3 \times 3}∑i=0N(Rxi−bi)2→min∑i=0N(Rxi−bi)2→min\sum\limits_{i=0}^N (Rx_i - b_i)^2 \rightarrow \minRRR ∑i=0N(Axi−bi)2→min∑i=0N(Axi−bi)2→min\sum\limits_{i=0}^N (Ax_i - b_i)^2 \rightarrow \min(任意のA∈R3×3A∈R3×3A \in \mathbb{R}^{3 \times 3})を最小化することにより、近似解を得ることができますマトリックスAAAおよび: SVDの計算:A=UΣVTA=UΣVTA = U \Sigma V^T、ΣΣ\Sigmaをドロップし、R \ approx UV ^ Tを近似R≈UVTR≈UVTR \approx U V^T 極分解の計算:A=UPA=UPA = U P、スケールのみの対称(および私の場合は正定値)PPPをドロップし、R \ approx Uを近似するR≈UR≈UR \approx U QR分解も使用できますが、アイソメトリックではありません(座標系の選択に依存します)。 少なくともおおよそですが、上記の2つの方法よりも優れた近似でこれを行う方法を知っている人はいますか?

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