計算科学

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

2
ほぼ特異なシステムに適用される反復線形ソルバーの停止基準
検討Ax=bAx=bAx=bとの固有値があることを意味し、ほぼ特異の非常に小さいです。反復法の通常の停止基準は、残差おり、が反復数のときに反復が停止できると見なします。しかし、検討しているケースでは、小さな固有値\ lambda_0に関連付けられた固有空間に大きな誤差vが存在する可能性があり、小さな残留Av = \ lambda_0vが得られます。初期残差r_0を仮定しますAAAλ0λ0\lambda_0AAArn:=b−Axnrn:=b−Axnr_n:=b-Ax_n∥rn∥/∥r0∥&lt;tol‖rn‖/‖r0‖&lt;tol\|r_n\|/\|r_0\|<tolnnnvvvλ0λ0\lambda_0Av=λ0vAv=λ0vAv=\lambda_0vr0r0r_0が大きい場合、\ | r_n \ | / \ | r_0 \ | &lt;tolで停止する可能性∥rn∥/∥r0∥&lt;tol‖rn‖/‖r0‖&lt;tol\|r_n\|/\|r_0\|<tolがありますが、エラーxn−xxn−xx_n-xはまだ大きいです。この場合のより良いエラーインジケータは何ですか?ある∥xn−xn−1∥‖xn−xn−1‖\|x_{n}-x_{n-1}\|良い候補者ですか?

6
線形プログラムに
仮に 分Av e c(U)Uの対象 i 、j≤ 最大{ Ui 、k、Uk 、j} 、i 、j 、k = 1 、… 、nminAvec(U)subject to Ui,j≤max{Ui,k,Uk,j},i,j,k=1,…,n\begin{align*} \min A &\mathrm{vec}(U) \\ &\text{subject to } U_{i,j} \leq \max\{U_{i,k}, U_{k,j}\}, \quad i,j,k = 1, \ldots, n \end{align*} ここで、は対称n × n行列であり、v e c(U )はUをn 2エントリの1次元ベクトルに再整形します。うんUUn × nn×nn\times nv e c(U)vec(U)\mathrm{vec}(U)うんUUn2n2n^2 上記のプログラムの中で問題を引き起こす部分はです。(非負の対称行列の解を制限するのは簡単なようです。)最大{ …

3
科学プログラミングコンテスト
私は定期的にいわゆる「プログラミングコンテスト」に参加します。このコンテストでは、限られた時間内に独自のコードと問題解決スキルで困難なアルゴリズムの問​​題を解決します。それらがどのように見えるかの参考例については、Google Code JamやACM-ICPCなどのコンテストを検索してください。 (プログラミングコンテストの内容がわかっている場合は、次の段落をスキップできます) これらのコンテストでは、個人またはチームで、物理的なサイトまたはオンラインで競争できます。目標は、コンテストが終了する前にできるだけ多くの問題を解決することです。各問題は、実行時間、使用メモリなど、ソリューションが満たさなければならない特定の制約に関連付けられています。問題の難易度は、「明らかな解決方法」から「高度な知識やひび割れへの多大な工夫」にまで及びます。もちろん、主な目標は楽しみを持つことですが、場合によっては、成功するとGoogleのような一流企業の採用担当者とのインタビューでさえ、賞金、名誉、忍耐につながる可能性があります。 (上の段落をスキップした場合は、スキップを停止してください。ここに私の質問が来るので) プログラミングコンテストを通じて、アルゴリズム、コンピュータサイエンス全般、そして問題解決スキルのコーディングと開発に関して、全体的な意味の感覚に真の関心を抱くことができました。科学計算でも同様にしたいと思います。 質問: 純粋にアルゴリズム的な種類と同じような流れで、数値解析、最適化などに焦点を当てた競争はありますか? グーグルを試してみましたが、一目で見つかりませんでした… 補遺: Project Eulerをチェックアウトするよう提案されましたが、それは私が探していたものではありません。私が望んでいるのは、pdeの解法を使って創造的になる、数値最適化の問題を解決するなど、より「汚れた」種類の数値を練習する場です。比較のために、Kaggleは、定期的に開催されるさまざまなコンテストでデータマイニング、機械学習などを練習できるサイトです。私はそのようなものが欲しいのですが、数値スキームなどを実装して創造的にするために。

1
メッシュ依存の安定性を持つ要素の有用性
3Dストークス問題の要素の安定性に関連するいくつかの数学を行った後、が任意の四面体メッシュに対して安定でないことを認識するために少しショックを受けました。より正確には、すべてのノードと4つのファセットのうち3つがディリクレ条件のドメインの境界にある要素がある場合、特異行列が得られます。これは実際、ストークスシステムの弱い形式から結論づけるのはかなり簡単です。P2− P1P2−P1P_2-P_1 (COMSOL)にアクセスできる唯一の商用Stokesコードをテストしたところ、このようなメッシュを作成できました。解決をクリックすると、予想どおり「エラー:特異行列」が表示されます。(私は、COMSOLがクリーピングフローモジュールにを使用しているという印象を受けています。)P2− P1P2−P1P_2-P_1 問題が他の構成に関連していないことをさらにテストするために、次のメッシュを試してみましたが、すべてが期待どおりに機能します。 質問:この種の制約は(適応型または非適応型)メッシュジェネレーターで考慮されますか?さまざまな研究論文から、この要素は非常に人気があるようです。これらの種類の境界不安定性は、一般に、使用する方法を選択する際に重要でないと見なされますか?さらに重要なことは、安定した有限要素を持つことは本当に何を意味するのか、つまり、どのようなメッシュ依存の不安定性が大きすぎて、方法が悪いと結論付けるのですか?

1
5次ルンゲクッタ法の安定領域に関する不可解な発言
論文で不可解な発言に出くわした PJ van der Houwen、偏微分方程式のためのルンゲクッタ法の開発、Appl。数 数学。20:261、1996 264ページの8ff行目に、van der Houwenは次のように書いています。 "テイラー多項式の場合、これは仮想安定間隔のために空であることを意味し "P = 1 、2 、5 、6 、9 、10 、⋯p=1、2、5、6、9、10、⋯p = 1, 2, 5, 6, 9, 10, \cdots ここで、テイラー多項式は安定多項式(の切り捨て膨張を指すの周りにルンゲ・クッタ法の)、pは次数である(ページ263を参照)。5次のルンゲクッタ法には、私の知る限り空の虚安定区間がないため、何かを誤解していると思います。私が覚えていることから、想像上の限界は約3.4程度です。exp(x )exp⁡(バツ)\exp(x)x = 0バツ=0x=0 私の誤解は何ですか?

5
なぜODEの数値解は不安定な平衡から遠ざかるのですか?
二重振り子のようなシステムの動作をシミュレートしたいと思います。このシステムは2自由度のロボットマニピュレーターであり、作動しないため、重力の影響を受ける二重振り子のように動作します。二重振り子との唯一の主な違いは、2つの振り子が、質量中心に質量と慣性の特性を持つ2つの剛体で構成されていることです。 基本的ode45に、次のタイプのODEのシステムを解決するためにMatlabでプログラミングしました。 ⎡⎣⎢⎢⎢10000M110M1200100M120M22⎤⎦⎥⎥⎥⎡⎣⎢⎢⎢x˙1x˙2x˙3x˙4⎤⎦⎥⎥⎥=⎡⎣⎢⎢⎢x2−V1−G1x4−V2−G2⎤⎦⎥⎥⎥[10000M110M1200100M120M22][x˙1x˙2x˙3x˙4]=[x2−V1−G1x4−V2−G2] \left[ \begin{array}{cccc} 1 & 0 & 0 & 0\\ 0 & M_{11} & 0 & M_{12}\\ 0 & 0 & 1 & 0\\ 0 & M_{12} & 0 & M_{22} \end{array} \right] \left[ \begin{array}{c} \dot{x}_1\\ \dot{x}_2\\ \dot{x}_3\\ \dot{x}_4 \end{array} \right]= \left[ \begin{array}{c} x_2\\ -V_1-G_1\\ x_4\\ -V_2-G_2 \end{array} …

4
一連のポイントから最も散乱するポイントを選択する
ポイントのセットからポイントのサブセットを選択する(効率的な)アルゴリズムはありますか()、ほとんどの領域を(サイズすべての可能なサブセットに対して)「カバー」しますか?N M &lt; N MMMMNNNM&lt;NM&lt;NM < NMMM ポイントは2D平面にあると仮定します。 素朴なアルゴリズムは単純ですが、時間の複雑さの点では法外です。 for each subset of N points sum distance between each pair of points in the subset remember subset with the maximum sum より効率的な、または近似的な方法を探しています。 例、これはいくつかのランダムな点を持つ平面です: 以下のために、私はこのような点を選択期待します:M=5M=5M=5 選択したポイント(赤)が平面全体に散在していることに注意してください。 この問題に関連する記事「視覚的な追跡のための空間的に分散されたキーポイントの効率的な選択」を見つけました。ただし、これはポイントが重み付けされていることを前提としています。

5
非常に高価な目的関数を持つ問題の並列最適化アルゴリズム
10〜20個の変数の関数を最適化しています。悪いニュースは、各関数の評価が高価で、約30分のシリアル計算であるということです。幸いなことに、数十の計算ノードを自由に使用できるクラスターがあります。 したがって、質問:その計算能力をすべて効率的に使用できる最適化アルゴリズムはありますか? スペクトルの片側には徹底的な検索があります。検索空間全体を細かいグリッドに分割し、各グリッド点で関数を個別に計算します。これは確かに非常に並列計算ですが、アルゴリズムは恐ろしく非効率的です。 スペクトルの反対側には、準ニュートンアルゴリズムがあります。以前の履歴に基づいて、パラメータの次の推定値をインテリジェントに更新します。これは効率的なアルゴリズムですが、並列化する方法がわかりません。「以前の履歴に基づいたパラメーターの推定」という概念は、シリアル計算のように聞こえます。 二次アルゴリズムは中間のどこかにあるように見えます。値の束を並列に計算することで初期の「代理モデル」を構築できますが、残りの反復が並列化可能かどうかはわかりません。 クラスター上でどのような種類のグラジエントフリー最適化方法がうまく機能するかについての提案はありますか?また、現在利用可能な最適化アルゴリズムの並列実装はありますか?


7
浮動小数点の2つの数値の平均のロバストな計算?
させて x、y2つの浮動小数点数のこと。それらの平均を計算する正しい方法は何ですか? 単純な方法で(x+y)/2は、次の場合にオーバーフローが発生する可能性があります。xでyは、大きすぎるがあります。0.5 * x + 0.5 * y多分もっと良いと思うかもしれませんが、それは2つの乗算(これは非効率かもしれません)を必要とし、それで十分かどうかわかりません。もっと良い方法はありますか? 私が遊んでいるもう一つのアイデアは (y/2)(1 + x/y) if x&lt;=yです。しかし、繰り返しますが、これを分析し、それが私の要件を満たしていることを証明する方法がわかりません。 さらに、計算された平均がとになること&gt;= min(x,y)を保証する必要があり&lt;= max(x,y)ます。Don Hatchの答えで指摘されているように、この質問を提起するより良い方法は次のとおりです。つまり、xおよびyが浮動小数点数である場合、(x+y)/2?に最も近い浮動小数点数を計算する方法は?この場合、計算された平均は自動的に&gt;= min(x,y)および&lt;= max(x,y)です。詳細については、Don Hatchの回答を参照してください。 注:私の優先事項は堅牢な精度です。効率は消耗品です。ただし、堅牢で正確なアルゴリズムが多数ある場合は、最も効率的なアルゴリズムを選択します。

2
「二重前提条件」を行う方法はありますか
質問: あなたは対称正定値行列のための2つの異なった(因数分解)予備調整があると: A ≈ B T B 及び A ≈ C T C 、 因子の逆数をAAAA ≈BTBA≈BTBA \approx B^TBA ≈ CTC、A≈CTC、A \approx C^TC,B 、BT、C、CTB、BT、C、CTB, B^T, C, C^T容易にしているが適用します。 と両方 からの情報を使用して、またはいずれか単独よりも優れた前提条件を構築することはいつ可能ですか?C B CBBBCCCBBBCCC

3
マトリックス平方根逆関数の効率的な計算
統計の一般的な問題は、対称正定行列の逆平方根を計算することです。これを計算する最も効率的な方法は何でしょうか? 私が出会ったいくつかの文献(私はまだ読んでいない)、およびいくつかの偶発Rコードここで私は便宜のためにここに再現されます、 # function to compute the inverse square root of a matrix fnMatSqrtInverse = function(mA) { ei = eigen(mA) d = ei$values d = (d+abs(d))/2 d2 = 1/sqrt(d) d2[d == 0] = 0 return(ei$vectors %*% diag(d2) %*% t(ei$vectors)) } 私はその行を理解しているかどうかはよくわかりませんd = (d+abs(d))/2。マトリックスの平方根逆関数を計算するより効率的な方法はありますか?R eigen関数はLAPACKを呼び出します。

1
BFGSアップデートの直感的な動機
私は数値分析調査クラスを教えており、最適化の背景/直感が限られている学生のためのBFGS法の動機付けを求めています! JのK(→ X K - → Xのk - 1)= F (→ X K)- F (→ Xのk - 1)∥ Jk− Jk − 1∥2あちこち‖Jk−Jk−1‖あちこち2\|J_k-J_{k-1}\|^2_{\textrm{Fro}}Jk(x⃗ k− x⃗ k − 1)= f(x⃗ k)− f(x⃗ k − 1)Jk(バツ→k−バツ→k−1)=f(バツ→k)−f(バツ→k−1)J_k(\vec x_k-\vec x_{k-1})=f(\vec x_k)-f(\vec x_{k-1}) BFGSアップデートの派生は、はるかに複雑で曖昧なようです!特に、更新がランク2であるか、特定の形式をとるべきであるとアプリオリに仮定したくない。BroydenのようなBFGS Hessianの更新には、変則的に見える短い動機がありますか?

2
Newton-Raphson反復を使用せずに非線形PDEを解くことは可能ですか?
私はいくつかの結果を理解しようとしていますが、非線形問題への取り組みに関する一般的なコメントをいただければ幸いです。 フィッシャーの方程式(非線形反応拡散PDE)、 あなたはt= dあなたはx x+ βu (1 − u )= F(u )あなたはt=dあなたはバツバツ+βあなたは(1−あなたは)=F(あなたは) u_t = du_{xx} + \beta u (1 - u) = F(u) 離散化された形式で、 あなたは′j= L u + βあなたはj(1 − uj)= F(u )あなたはj′=Lあなたは+βあなたはj(1−あなたはj)=F(あなたは) u_j^{\prime} = \boldsymbol{L}\boldsymbol{u} + \beta u_j (1 - u_j) = F(\boldsymbol{u}) ここで、は微分演算子で、は離散化ステンシルです。u = (u j − 1、u …

1
Matlabのこの数値三重積分を信頼できますか?
計算科学の人々: 私はもともと数学スタック所でこの質問を投稿し、誰かが、私はここに、「より良い」答えを得るかもしれないとコメント: 私は数値計算法とMatlabの初心者です。次の2つのトリプル積分の合計を評価しようとしています(明らかにもっと簡単に書くことができますが、それでもシンボリックに評価することはできません(?))。Lの取得に問題がありますはここで動作するので、ここで渋々それをバラバラに分割しました。LATEXLATEX\LaTeX 2((1/0.3)−1)2(∫1/0.31∫r11∫r1−r00F1(r0,r1,t)exp(−(0.3)2t24)dtdr0dr1),2((1/0.3)−1)2(∫11/0.3∫1r1∫0r1−r0F1(r0,r1,t)exp⁡(−(0.3)2t24)dtdr0dr1),\frac{2}{((1/0.3) - 1)^2}\left(\int_1^{1/0.3}\int_1^{r_1}\int_0^{r_1-r_0}F_1(r_0,r_1,t)\exp(-\frac{(0.3)^2 t^2}{4})\,dt\,dr_0\,dr_1 \right), そして 2((1/0.3)−1)2(∫1/0.31∫r11∫r1+r0r1−r0F2(r0,r1,t)exp(−(0.3)2t24)dtdr0dr1),2((1/0.3)−1)2(∫11/0.3∫1r1∫r1−r0r1+r0F2(r0,r1,t)exp⁡(−(0.3)2t24)dtdr0dr1),\frac{2}{((1/0.3) - 1)^2}\left(\int_1^{1/0.3}\int_1^{r_1}\int_{r_1-r_0}^{r_1+r_0} F_2(r_0,r_1,t)\exp(-\frac{(0.3)^2 t^2}{4})\,dt\,dr_0\,dr_1 \right), どこ F1(r0,r1,t)=t2r30∗(0.3)32r31π−−√F1(r0,r1,t)=t2r03∗(0.3)32r13πF_1(r_0,r_1,t)=\frac{t^2 r_0^3*(0.3)^3}{2r_1^3\sqrt{\pi}} そして F2(r0,r1,t)=(0.3)3π3/2(r0+r1−t)4(t2+2t(r0+r1)−3(r1−r0)2)2288(43πr30)(43πr31).F2(r0,r1,t)=(0.3)3π3/2(r0+r1−t)4(t2+2t(r0+r1)−3(r1−r0)2)2288(43πr03)(43πr13).F_2(r_0,r_1,t)=\frac{(0.3)^3\pi^{3/2}(r_0+r_1-t)^4 (t^2+2t(r_0+r_1)-3(r_1-r_0)^2)^2}{288(\frac{4}{3}\pi r_0^3)(\frac{4}{3}\pi r_1^3)}. 編集(2013年3月2日):Mathematicaに積分をシンボリックに実行させたと誰かが答えました。私はこれを(積分の単純化されたバージョンで)実行しようとしましたが、Mathematicaは最初の2つだけを実行でき、2つ目は停止しました。助けていただければ幸いです。これが私がしたことです。 私は評価しようとしました via∫21∫r21∫r2−r10r31t2exp(−t2)r32dtdr1dr2∫12∫1r2∫0r2−r1r13t2exp⁡(−t2)r23dtdr1dr2\int_1^2 \int_1^{r_2} \int_0^{r_2-r_1} \frac{r_1^3 t^2 \exp(-t^2)}{r_2^3}\,dt\,dr_1\,dr_2 Integrate [r1 ^ 3 / r2 ^ 3 * t ^ 2 * Exp(-t ^ 2)、{t、0、r2-r1}、{r1、1、r2}、{r2、1、2}] Mathematicaが戻ります(Lに問題がありましたは結果が長いためです。私はそれを2つの方程式に分けました。誰かがこれを表示する良い方法を知っているなら教えてください):LATEXLATEX\LaTeX ∫21164r22e−1−r22(2e2r2(25+r2(19+2r2(1+r2)))−∫12164r22e−1−r22(2e2r2(25+r2(19+2r2(1+r2)))−\int_1^2 \frac{1}{64r2^2} …
15 matlab 

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