計算科学

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

2
小さなノルム調整の固有ベクトル
ゆっくりと変化するデータセットがあり、その共分散行列の固有ベクトル/固有値を追跡する必要があります。 私はを使用してきましたがscipy.linalg.eigh、高すぎるため、すでに少しだけ正しくない分解が既に存在しているという事実を使用していません。 誰もがこの問題に対処するためのより良いアプローチを提案できますか?

1
困難な方程式系を数値的に解く
数値的に解きたいの非線形方程式のシステムがあります。んnn f = (f 1、… 、f n)f(x)= af(x)=a\mathbf{f}(\mathbf{x})=\mathbf{a} f= (f1、… 、fん)x =( x1、… 、xん)f=(f1,…,fn)x=(x1,…,xn)\mathbf{f}=(f_1,\dots,f_n)\quad\mathbf{x}=(x_1,\dots,x_n) このシステムには、取り扱いを特に困難にする多くの特性があります。より効率的にシステムに対処する方法についてのアイデアを探しています。 なぜシステムが難しいのですか? 関数はこれに似ています(もちろん多次元です): 彼らは滑らかな変化の領域で区切られた平らな台地を持っています。2Dでは、1つのに対して次のようなものを想像できます。f私fif_i 一般に、各は、次元超平面の周りの滑らかな変化によって分離された2つのプラトーがあります。 n − 1f私fif_in − 1n−1n-1 このような関数は、導関数がプラトーで実質的にゼロになるため、ニュートンのような方法で処理することが困難です。多次元では、いずれにもf私fif_i n=1プラトーがない領域を簡単に見つけることができません。問題を解決できるとしたら。二分法は場合にうまく機能しますが、複数の次元にうまく一般化できません。n = 1n=1n=1 関数の計算は非常に遅いです。可能な限り少ない反復で根の妥当な近似を得ることができる方法を探しています。 関数はモンテカルロ法で計算されます。これは、それらが計算されるたびに、わずかに異なるランダム値を取得することを意味します。デリバティブは推定が困難です。ルートに十分近づくと、ノイズが支配的になり始め、精度を上げるために平均化を使用する必要があります。理想的には、この方法を同等の確率近似バージョン(たとえば、ニュートン→ロビンスモンロ)に一般化できるはずです。 システムは高次元です。は10〜20の大きさにすることができます。場合、効果的な方法は、おそらく次のようになります。トライによって定義された輪郭追従するととどこが交差参照します。これがどのように高次元に一般化されるかは明らかではありません。n = 2 f 1(x 1、x 2)= 0 f 2(x 1、x 2)= 0nnnn=2n=2n=2f1(x1,x2)=0f1(x1,x2)=0f_1(x_1,x_2) = 0f2(x1,x2)=0f2(x1,x2)=0f_2(x_1,x_2)=0 システムについて他に何を知っていますか? (理論的な結果から)正確に1つのルートがあります。 高原のの値を知っています(どのでも0と1だとしましょう)。 Ififif_iiii xは私をfはI(... …

1
四分木および八分木グリッドの視覚化
いわゆるクワッドツリーおよびオクツリーグリッドは、適応メッシュリファインメントを必要とするアプリケーションにとって非常に魅力的です。たとえば、GerrisやParameshで使用されています。そのようなグリッドの適切なファイル形式と、サポートする視覚化ソフトウェアを知っている人はいますか?Gerris FAQのこの回答も参照してください。私が現在気付いている唯一の潜在的な候補はVTK HyperOctreeクラスですが、ドキュメントはほとんどないようです。 メッシュの具体的な例として、それぞれがセルを含む個のボックスで構成される、まばらに洗練された八分木グリッドを考えてみましょう。Visit / Paraviewでの私の現在の戦略は次のとおりです。10410410^48×8×8=5128×8×8=5128 \times 8 \times 8=512 グリッドを非構造化VTKファイルとして書き込みます。これは、大規模なデータセットではコストがかかり、クワッド/オクツリーの「構造化」を利用しません。 ツリー内の隣接する「ボックス」をより大きなブロックに集め、ブロック構造のグリッドを記述します。これにはかなりの追加コードが含まれ、クワッド/オクツリーに埋め込まれた接続情報が失われます。 更新現在、octreeグリッドを直接書き込んで視覚化するための実行可能な形式がない場合は、octreeをブロック構造のグリッドとして書き込むために使用できるファイル形式について提案をいただければ幸いです。理想的には、このフォーマット: 定義/実装が比較的シンプルで、理想的にはオープンソースで、C / Fortranと互換性があります。 多数のグリッドブロック(1000以上など)を効率的に処理できます。 特に細分割境界でグリッドブロックの接続を簡単に指定できます。 私は現在、この目的でSiloを使用していますが、上記の3つの点でより良いスコア(より小さく、より速く、より単純)を探しています。

2
モンテカルロサンプリングによる情報エントロピーの推定
その分布からサンプリングする唯一の実用的な方法がモンテカルロ法である場合、その分布の情報エントロピーを推定できる方法を探しています。 私の問題は、Metropolis–Hastingsサンプリングの導入例として通常使用される標準のイジングモデルと同じです。セット確率分布があります。つまりごとにがあります。の要素はイジング状態のような組み合わせの性質のものであり、それらの数は非常に多いです。つまり、実際には、この分布からコンピューターでサンプリングするときに、同じサンプルを2回取得することはありません。正規化係数がわからないためを直接計算することはできませんが、比率は簡単に計算できます。AAAp(a)p(a)p(a)a∈Aa∈Aa \in Aa∈Aa∈Aa \in Ap(a)p(a)p(a)p(a1)/p(a2)p(a1)/p(a2)p(a_1)/p(a_2) この分布の情報エントロピーを推定したいのですが、 S=−∑a∈Ap(a)lnp(a).S=−∑a∈Ap(a)ln⁡p(a). S = -\sum_{a \in A} p(a) \ln p(a). あるいは、この分布とそれをサブセット制限することで得られる分布とのエントロピーの差を推定したいと思います(もちろん再正規化します)。a∈A1⊂Aa∈A1⊂Aa\in A_1 \subset A

2
ハミルトニアン行列の行列指数
レッツ本当、正方形、密行列も。とは対称です。しましょうA,G,QA,G,QA, G, QGGGQQQ H=[A−Q−G−AT]H=[A−G−Q−AT]H = \begin{bmatrix} A & -G \\ -Q &-A^T \end{bmatrix} ハミルトニアン行列である。の行列指数を計算したい。行列とベクトルの積だけでなく、完全な行列指数が必要です。ハミルトニアン行列の指数を計算するために利用できる特別なアルゴリズムまたはライブラリはありますか?HHHetHetHe^{tH}

4
確定的モデルの実行での小さく予測できない結果
私はかなり大きなモデル(約5000行)をCで記述しています。これはシリアルプログラムであり、乱数の生成はどこにもありません。FFTを使用する関数にFFTWライブラリを使用します。FFTW実装の詳細はわかりませんが、その中の関数も確定的であると想定しています(エラーが発生した場合は修正してください)。 私が理解できない問題は、同じマシン(同じコンパイラ、同じライブラリ)での同一の実行の結果に小さな違いがあることです。 私は、倍精度変数を使用して、変数に結果を出力するvalue例えば、私が発行します fprintf(outFID, "%.15e\n", value);か fwrite(&value, 1, sizeof(double), outFID); そして、私は常に次のような違いを得るでしょう: 2.07843469652206 4 e-16対2.07843469652206 3 e-16 私はこれがなぜなのかを理解するために多くの時間を費やしてきました。私は最初、メモリチップの1つが故障していると思っていたので、注文して交換しましたが、役に立ちませんでした。その後、同僚のLinuxマシンでコードを実行してみたところ、同じ性質の違いが生じました。 何が原因でしょうか?今は小さな問題ですが、「氷山の一角」(深刻な問題)なのでしょうか。 数値モデルを扱う誰かがこの問題に遭遇した場合に備えて、StackOverflowの代わりにここに投稿すると思いました。誰かがこれに光を当てることができれば、私は多くの義務があります。 コメントの フォローアップ: Christian ClasonとVikram:まず、私の質問に関心をお寄せいただきありがとうございます。あなたがリンクした記事は、次のことを示唆しています:1.丸め誤差は精度を制限し、2。異なるコード(一見害のない印刷ステートメントを導入するなど)がマシンのイプシロンまでの結果に影響を与える可能性があります。効果fwriteとfprintf機能を比較していないことを明確にすべきです。どちらか一方を使用しています。特に、両方の実行で同じ実行可能ファイルが使用されます。fprintfOR を使用しているかどうかに関係なく、問題が発生すると単に述べていfwriteます。 したがって、コードパス(および実行可能ファイル)は同じであり、ハードウェアも同じです。これらすべての外部要因が一定に保たれている場合、基本的にランダム性はどこから来るのでしょうか?不良メモリがビットを正しく保持していないためにビットフリップが発生したのではないかと疑ったので、メモリチップを交換しましたが、これは問題ではないようです。私のプログラムは、1回の実行で数千のこれらの倍精度数値を出力します。ランダムなビットフリップを持つランダムな握りが常にあります。 クリスチャンClasonの最初のコメントへのフォロー:なぜマシンの精度内で0と同じ?doubleの最小の正の数は2.22e-308なので、0に等しくないはずです。私のプログラムは10 ^ -16の範囲(1e-15から8e-17の範囲)で数千の値を出力し、私たちの研究プロジェクトには意味のある変化が見られたので、無意味なものを見ていなかったと思います番号。2 ⋅ 10− 162⋅10−162\cdot 10^{-16} フォローアップ#2: これは、コメントでの派生的議論を支援するために、モデルによって出力された時系列のプロットです。

3
圧縮性流れソルバーを使用して非圧縮性流れを解決できますか?
非圧縮性および圧縮性フローソルバーは、さまざまな流体特性/フロー条件でさまざまなタイプの問題を解決するように特別に設計されていることを知っています。明らかに、非圧縮性流体の問題をモデル化するために非圧縮性フローソルバーを使用する利点の1つは、エネルギー方程式を無視できるため、解決する必要のある変数と方程式の数が減ることです。 ただし、流体のプロパティと流れの条件は非圧縮性になりがちなので、限界における圧縮性流れソルバーの精度について知りたいです。モデル化される流体/流れがますます非圧縮性になると、圧縮性流れソルバーは失敗する傾向がありますか?または、圧縮性フローソルバーは、流体/フローの圧縮性とは関係なく、同等にうまく機能しますか? この質問は少し広範であり、モデル化されている問題の特性に非常に依存している可能性があることを理解しています。そのような場合は、非圧縮性フローソルバーで十分である場合に、圧縮性フローソルバーを使用することの適用性を判断する際に留意する必要がある要因を理解できるように教えてください。

4
非常に小さなドメインを持つ生物学的に正確なモデルで適切なメッシュを作成する方法
私は、さまざまな生理学的プロセスが発生する、組織層の生物学的に正確な2D空間モデルを作成しようとしています。これには主に、化学反応、拡散、境界を超えるフラックスが含まれます。 私はこのモデルをCOMSOL Multiphysicsで作成しています。これは、反応拡散システムなどのさまざまな物理学を解く有限要素ソフトウェアパッケージですが、私の質問にはこれはあまり関係がないかもしれません。 私の形状では、組織層の細胞の間に本当に小さな領域があります。これらの領域は、セル(接合部)間で拡散が行われる開口部として機能します。ここではメッシュの品質はあまり良くありません。品質を向上させたい場合(主に要素を追加するなど)、シミュレーション時間が大幅に増加します。メッシュの品質が低いほど、収束に時間がかかります。アイデアを与えるために、ジオメトリの画像を追加しました。要素の品質と要素の数が16000〜50000の範囲で、さまざまなメッシュを試しました。 FEMの私のバックグラウンドは本当に限られており、この問題に次のような方法で取り組むことができるかどうか知りたいと思いました。 生物学に悪影響を及ぼさない(組織ドメインのサイズ/問題などを可能な限り生物学的に正確に保つ) シミュレーション時間を大幅に増やしませんが、 より良いメッシュ品質を与えます。私はすでにいくつかのことを考えているので、私は本当に行くための最良の方法が何であるかを知りたいです。 したがって、より品質の低いメッシュ(それほど悪くはないが、どちらでもない)を使用して、生物学的精度を最適化するために小さな領域を維持し、計算時間を比較的短くすることができます(そして、収束エラー)。しかし、おそらく私が見落としている可能性があるかもしれません。たとえば、小さなドメインを大きくして、拡散率に何らかの要因を追加することは可能ですか。つまり、ドメインを2倍の大きさにしたい場合、拡散率を半分に因数分解しますか?それは化学/物理法則でも正確ですか? うまくいけば、私は問題を少し明確にし、助けてくれて本当にありがとうございました。 乾杯、

3
グレブナー基底と多項式システムソリューションのベンチマーク
ブライアンボーチャーズは、最近の質問である7つの非線形代数方程式を記号的に解くシステムで、Matlab / Mupadが処理できない多項式システムをMapleで解くことができることを実験的に確認しました。Mapleにはグレブナー基底と関連アルゴリズム(ここで使用しているものだと思います)の高品質な実装があることを、現場で働いている人々から以前に聞いたことがあります。 「Matlabはこの種の問題で遅いのでMapleに切り替えてください」と提案したくなりますが、このステートメントを裏付けるデータが欲しいです。 さまざまなコンピューター代数システムにおけるグレブナー基底の実装と多項式システムソリューションの速度と有効性を比較する一連のベンチマーク結果はありますか?(Maple、Mathematica、Matlabの象徴的なツールボックスなど)。

2
有限要素エラー推定
ノルム(つまり、)で誤差推定を提供する有限要素法の設定はありますか?それらを実装するために使用できる要素のファミリはどれですか? ‖ U ' H - U ' ‖ ∞W1 、∞W1,∞W^{1,\infty}∥u′h−u′∥∞‖uh′−u′‖∞\|u'_h - u'\|_\infty (ほとんど興味がなかったMathOverflowからクロスポストされましたが、おそらくここにFEMのバックグラウンドを持つ人々をもっと見つけることができます。)

3
双曲線空間の点をサンプリングする方法は?
ポアンカレ上半分の空間モデルの双曲線空間は通常のように見えますが、角度と距離の概念は比較的単純な方法で歪んでいます。ユークリッド空間でIは、例えば、生成することにより、いくつかの方法でボールに一様ランダム点をサンプリングすることができ方向を得るために、独立したガウスサンプル、別途座標半径サンプリングRを一様にサンプリングすることによってSから[ 0 、1RんRn\Bbb R^nんnnrrrsss[ 0 、1n + 1Rn + 1][0,1n+1Rn+1]\left[0, \frac1{n+1}R^{n+1}\right]、ここでRRRは半径であり、設定r = ((n + 1 )s )1n + 1r=((n+1)s)1n+1r = \left((n+1)s\right)^{\frac1{n+1}}。双曲線上半平面では、球体はたまたま球体であり、その中心だけがユークリッドメトリックの中心にはならないので、同じことができます。 非均一な分布に従ってサンプリングしたいが、ガウス分布などの等方性の方法では、これはそれほど簡単ではないように見えます。ユークリッド空間では、座標ごとにガウスサンプルを生成するか(これはガウス分布でのみ機能します)、または同等に多次元ガウスサンプルを生成できます。このサンプルを双曲線空間のサンプルに直接変換する方法はありますか? 別のアプローチは、最初に均一に分散された方向を生成し(たとえば、んnnガウスサンプルから)、次にラジアルコンポーネントのガウスサンプルを生成し、最後に、指定された方向の指定された長さの指数マップの下でイメージを生成します。バリエーションは、ユークリッドガウスサンプルを取り、それを指数マップの下にマッピングすることです。 私の質問: 双曲線空間の特定の平均と標準偏差でガウスサンプルを取得するための良い効率的な方法は何でしょうか。 上記で説明した方法では、目的のサンプリングが提供されますか? 誰かがすでに式を解決しましたか? これは他のメトリックおよび他の確率分布にどのように一般化されますか? 前もって感謝します。 編集 私は、一様にサンプリングした場合でも、これらの質問が残っていることに気づきました。球が球であるとしても、均一な分布はボール上の定数関数によって記述されません。

3
彼らは業界で半確定プログラミングを使用していますか?
求人情報でそれについての言及を見ることができません。整数プログラミング、MIP、混合整数非線形プログラミング、LP、動的プログラミングなどについて言及しましたが、SDPについては言及していません。業界よりもアカデミーの方がはるかに流行っていますか? 電力システムの研究者や業界の参加者への私の限られた暴露から、私はSDPが独立したシステムオペレーターによって最適な電力潮流問題に適用される可能性が高いと思いますが、それは卵の頭がスケーリングできる範囲に依存しますより大きな問題のインスタンスに対処するための現在のアプローチをアップします。

2
奇妙な結果を持つ3次対4次シンプレクティック積分器のテスト
では私の答えにMSEの質問 2D、ハミルトニアンの物理シミュレーションに関しては、私はより高次の使用を示唆しているシンプレクティック積分器を。 次に、さまざまな時間ステップがさまざまな次数のメソッドのグローバル精度に及ぼす影響を示すのは良い考えだと思い、その効果のためにPython / Pylabスクリプトを作成して実行しました。比較のために私が選んだもの: (leap2)Wikipediaの2次例 Iは、名前の下にそれを知っているが、私は、よく知っていると馬跳び、 (ruth3)ルースの3次シンプレクティック積分器、 (ruth4)Ruthの4次シンプレクティック積分器。 奇妙なことに、どのタイムステップを選択しても、テストでは、Ruthの3次法の方がRuthの4次法よりも1桁精度が高いようです。 したがって、私の質問は次のとおりです。詳細は以下。 これらの方法は、分離可能なハミルトニアン、つまりとして記述できる システムでその強さを展開します。 ここで、はすべての位置座標を含み、 は共役運動量を含み、 は運動論を表しますエネルギーとポテンシャルエネルギー。H(q、p )= T(p )+ V(q)H(q,p)=T(p)+V(q)H(q,p) = T(p) + V(q)qqqpppTTTVVV この設定では、力と運動量を、それらが適用される質量によって正規化できます。したがって、力は加速度に変わり、モーメンタは速度に変わります。 シンプレクティックインテグレーターには、特別な(与えられた定数)係数が付属しており、これにおよびラベルを付けます。これらの係数を使用すると、システムを時間 から時間に進化させるための1つのステップは次の形式になります。a1、… 、aんa1,…,ana_1,\ldots,a_nb1、… 、bんb1,…,bnb_1,\ldots,b_ntttt + δtt+δtt+\delta t 以下のために:i = 1 、… 、ni=1,…,ni=1,\ldots,n すべての位置のベクトルを指定して、すべての加速度のベクトルを計算しますgggqqq すべての速度のベクトルをvvvb私gδtbigδtb_i\,g\,\delta t すべての位置のベクトルをqqqa私vδtaivδta_i\,v\,\delta t 知恵は今係数にあります。これらは、 [a1b1a2b2][a1b1a2b2a3b3][a1b1a2b2a3b3a4b4]=[120121]=[23724−23341−124]=12−2–√3[1201−2√3211−2√32−2–√3121](leap2)(ruth3)(ruth4)[a1a2b1b2]=[121201](leap2)[a1a2a3b1b2b3]=[23−23172434−124](ruth3)[a1a2a3a4b1b2b3b4]=12−23[121−2321−2321201−231](ruth4)\begin{align} \begin{bmatrix} a_1 & a_2 \\ b_1 …

1
演算の順序、数値アルゴリズム
読んだ (1)条件の悪い操作は、条件の良い操作の前に実行する必要があります。 例として、乗算はそうで​​はないのに減算は悪条件なので、x z− yzバツz−yzxz-yzをとして計算する必要(x − y)z(バツ−y)z(x-y)zがあります。 ただし、両方のアルゴリズムの1次エラー分析では、3倍(*)だけ異なることがわかり、これをステートメント(1)に一般化できる理由もわかりません。また、その重要性を直感的に把握していません。操作の順序。ステートメントは(1)は受け入れられたルールであると思いますか、それについて他の説明がありますか? *:より具体的には、最初のバージョンには、 eps+3|x|+|y||x|−|y|epseps+3|x|+|y||x|−|y|eps\text{eps}+3\frac{|x|+|y|}{|x|-|y|}\text{eps}第二のバージョンの相対誤差がで囲まれている間 3eps+|x|+|y||x|−|y|eps3eps+|x|+|y||x|−|y|eps3\text{eps}+\frac{|x|+|y|}{|x|-|y|}\text{eps} ここで、epseps\text{eps}はマシンの精度です。 ことをこの分析は、仮定に基づいているi私i番目の中間結果を用いて乗算される(1+εi)(1+εi)(1+\varepsilon_i)(丸め誤差に)、εiεi\varepsilon_iによって囲まIIDランダム変数であるepseps\text{eps}。「一次」とは、ような高次の項ϵiϵjxϵiϵjバツ\epsilon_i\epsilon_jxが無視されることを意味します。

3
と間には複雑性がありますか?[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、計算科学スタック交換のトピックになるようにします。 5年前休業。 より大きくより小さい複雑度はありか?O (n log n )O(n)O(n)O(n)O(nlogn)O(nlog⁡n)O(n \log n)

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