計算科学

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

2
フロートなしのアイゼンシュタイン数の表現
具体的には、2次フィールドを使用する必要があるプロジェクトがあります。具体的にはの形式でます。a+b−3−−−√a+b−3a + b \sqrt{-3}a,b∈Qa,b∈Qa,b \in \mathbb{Q} たとえば、次はアイゼンシュタイン整数の素数です。 セージは使いたくない。 組み込む独自のデータ型を記述したいと思いnumpyます。PARIは便利ですが、Pythonとの互換性はありません。 これらのオブジェクトの追加はかなり明確です(a1+b1−3−−−√)+(a2+b2−3−−−√)=(a1+a2)+(b1+b2)−3−−−√(a1+b1−3)+(a2+b2−3)=(a1+a2)+(b1+b2)−3(a_1 + b_1 \sqrt{-3}) + (a_2 + b_2 \sqrt{-3}) = (a_1 + a_2) + (b_1+b_2) \sqrt{-3} 乗算は少しデリケートですが、ハードコーディングもできます (a1+b1−3−−−√)×(a2+b2−3−−−√)=(a1a2−3b1b2)+(a1b2+a2b1)−3−−−√(a1+b1−3)×(a2+b2−3)=(a1a2−3b1b2)+(a1b2+a2b1)−3(a_1 + b_1 \sqrt{-3}) \times (a_2 + b_2 \sqrt{-3}) = (a_1 a_2 - 3 b_1 b_2) + (a_1 b_2 + a_2 b_1)\sqrt{-3} 私のデータ型も除算に対応する必要があります。簡単にするために、逆数を取ってみましょう: 1a+b−3−−−√=a−b−3−−−√a2+3b21a+b−3=a−b−3a2+3b2 …

2
釣り竿(またはロープ)のモデリング方法は?
短いセグメントを結合して釣り竿(またはロープ)をモデル化したいと思います。(セグメントの長さは等しい(短い)場合がありますが、各セグメントには独自の個別の質量を割り当てる必要があります。)1つのセグメントは、セグメント間のトルクによって次のセグメントに影響を与えます。当面は、ジョイントは板ばね(曲げ角度に比例するトルク(aまたはalfa)、各ジョイントの個々のk)と見なすことができます。 最初のセグメント(「ハンドル」)にトルクを加えると、トルクが残りのセグメントに広がります。 問題は、セグメント1にトルクT1を適用したとき(時間dtの間)、セグメント1(質量m1)と後続のセグメントで発生する動きを計算する方法がわからないことです。 https://www.dropbox.com/s/ze7g6dzrzzd6757/DSC_0113.JPG 私はバイオメカニクスに興味のある(退職した)医師なので、基本的な物理用語のみを使用してください。(モデルを生体力学的用途に移行したいと思います。以前にモデル用のコンピュータープログラムを作成したことがあるので、運動方程式をまっすぐに行けば、その部分を管理できればと思います。)
9 ode  modeling 

2
ラインサーチで3次と2次の内挿を決定するのに役立ちます
準ニュートンBFGSアルゴリズムの一部としてラインサーチを実行しています。ラインサーチの1つのステップで、3次補間を使用して、ローカルミニマイザーに近づけます。 してみましょうf:R→R,f∈C1f:R→R,f∈C1f : R \rightarrow R, f \in C^1関心の関数です。f ′(x ∗)≈0となるようなを見つけたい。x∗x∗x^*f′(x∗)≈0f′(x∗)≈0f'(x^*) \approx 0 ましょうf(xk)f(xk)f(x_k)、f′(xk)f′(xk)f'(x_k)、f(xk+1)f(xk+1)f(x_{k+1})とf′(xk+1)f′(xk+1)f'(x_{k+1})知られています。また、想定0≤xk&lt;x∗&lt;xk+10≤xk&lt;x∗&lt;xk+10\le x_k<x^*<x_{k+1}。三次多項式Q(x)=ax3+bx2+cx+dQ(x)=ax3+bx2+cx+dQ(x)=ax^3+bx^2+cx+dので、Q(0)=f(xk)Q(0)=f(xk)Q(0)=f(x_k)、Q′(0)=f′(xk)Q′(0)=f′(xk)Q'(0)=f'(x_k)、Q(xk+1−xk)=f(xk+1)Q(xk+1−xk)=f(xk+1)Q(x_{k+1}-x_{k})=f(x_{k+1})と。Q′(xk+1−xk)=f′(xk+1)Q′(xk+1−xk)=f′(xk+1)Q'(x_{k+1}-x_{k})=f'(x_{k+1}) 私は二次方程式を解きます:は、閉形式の解を使用して、求めたx ∗ に対してです。(1):Q′(x∗−xk)=0(1):Q′(x∗−xk)=0(1): Q'(x^*-x_k) = 0x∗x∗x^* 上記は、が(1 )の閉じた形の解をaで割るaで除算する場合を除いて、ほとんどの場合にうまく機能します。f(x)=O(x2)f(x)=O(x2)f(x)=\mathcal{O}(x^2)(1)(1)(1)aaa000 私の解決策を見ていると、それは「小さすぎる」であれば、単純に二次多項式の最小化のための閉じた形のソリューション取るQ 2(X )= B のx 2 + C X + D私はすでに係数の持っているBを、C 、Dへの以前のフィットからQ (X )。aaaQ2(x)=bx2+cx+dQ2(x)=bx2+cx+dQ_2(x)=bx^2+cx+db,c,db,c,db,c,dQ(x)Q(x)Q(x) 私の質問は次のとおりです。立方体に対して2次補間を行うタイミングを調べるにはどうすればよいでしょうか。以下のためのテストへの単純なアプローチ≡ 0は私が探していますので、数値的な理由による悪いです| a | &lt; ε τどこεはマシンの精度ですが、私は良いのかを決定することができないんだτの規模不変だFを。a≡0a≡0a \equiv 0|a|&lt;ϵτ|a|&lt;ϵτ|a| < \epsilon\tauϵϵ\epsilonττ\taufff おまけの質問:失敗した3次近似からの係数使用に数値的な問題はありますか、または係数を計算する適切な方法で新しい2次近似を実行する必要がありますか?b,c,db,c,db,c,d 明確化のための編集: …


2
9次以上の明示的なRunge Kuttaメソッドの作成
私が見たいくつかの古い本は、指定された注文の明示的なルンゲクッタ法の最小ステージ数は、注文については不明であると述べています。これはまだ本当ですか?≥ 9≥9\geq 9 高次のルンゲクッタ法を自動的に処理するためのライブラリはありますか?

2
適応FEMで使用される新しいデータ構造はどれですか?
適応FEMライブラリの多くは、たとえばなどのノード、エッジ、三角形、四面体を、追加/削除処理するために、より高度なメッシュデータ構造を使用し、p4estライブラリの使用は、解適合格子法のためのデータ構造をオクトリ。静的メッシュでの計算に使用されるオクツリーはあまりありません。 適応FEMの線形代数側で何が変わりますか? 私が考えることができる最も率直な方法は、メッシュが洗練または粗くされるときはいつでも、すべてのシステム行列を完全に再構築することです。メッシュ適応が十分に頻度の低い操作である場合、そのための費用は最終的に残りの計算に渡って償却されます。このアプローチでは、既存のスパース線形代数ソフトウェア(PETSc、Trilinosなど)を簡単に活用できます。 この鈍い方法が最も一般的に使用されていますか、それとも洗練中に古いマトリックスを再利用または変更するためのライブラリがありますか?結局のところ、メッシュと対応する行列のほとんどは、メッシュの適応中に変更されません。


1
3次固有値問題に対するJacobi-Davidson法の実装
私は大きな三次固有値問題を抱えています: (A0+λA1+λ2A2+λ3A3)x=0.(A0+λA1+λ2A2+λ3A3)x=0.\left(\mathbf{A}_0 + \lambda\mathbf{A}_1 + \lambda^2\mathbf{A}_2 + \lambda^3\mathbf{A}_3\right)\mathbf{x} = 0. これを線形固有値問題に変換することで解決できますが、システムは大きさになります。32323^2 ⎡⎣⎢−A0000I000I⎤⎦⎥⎡⎣⎢xyz⎤⎦⎥=λ⎡⎣⎢A1I0A20IA300⎤⎦⎥⎡⎣⎢xyz⎤⎦⎥,[−A0000I000I][xyz]=λ[A1A2A3I000I0][xyz],\begin{bmatrix} -\mathbf{A}_0 & 0 & 0 \\ 0 & \mathbf{I} & 0 \\ 0 & 0 & \mathbf{I} \end{bmatrix} \begin{bmatrix} \mathbf{x} \\ \mathbf{y} \\ \mathbf{z} \end{bmatrix} = \lambda \begin{bmatrix} \mathbf{A}_1 & \mathbf{A}_2 & \mathbf{A}_3 \\ \mathbf{I} & 0 & …

10
この統合コードを最適化して実行速度を上げることは可能ですか?
double trap(double func(double), double b, double a, double N) { double j; double s; double h = (b-a)/(N-1.0); //Width of trapezia double func1 = func(a); double func2; for (s=0,j=a;j&lt;b;j+=h){ func2 = func(j+h); s = s + 0.5*(func1+func2)*h; func1 = func2; } return s; } 上記は、拡張された台形規則を使用して、台形を使用しfunc()制限間の1D数値積分の私のC ++コードです。[a,b][a,b][a,b]N−1N−1N-1 私は実際に3D統合を行っています。このコードは再帰的に呼び出されます。私は作業して、適切な結果を出しています。N=50N=50N = 50 さらに減らす以外に、上記のコードを最適化してより速く実行する方法を提案できる人はいますか?または、より速い統合方法を提案できますか?NNN

2
アルゴリズムの計算努力
x opt x 0 x opt。x ϵ − O | | x − x opt | | 2O:=minx∈Rnf(x).O:=minx∈Rnf(x).\mathcal{O} := \min_{x \in \mathbb{R}^n} f(x).xoptxoptx_\text{opt}x0x0x_0xopt.xopt.x_\text{opt}.xxxϵ−ϵ−\epsilon-OO\mathcal{O}||x−xopt||2||x0−xopt||2≤ϵ.||x−xopt||2||x0−xopt||2≤ϵ.\begin{equation} \frac{||x - x_{\text{opt}}||_2}{||x_0 - x_\text{opt}||_2} \leq \epsilon. \end{equation} 次のプロパティを持つ close解を見つけるために、2つの反復アルゴリズムとが存在するとします。A 2 ϵ− OA1A1\mathcal{A}_1A2A2\mathcal{A}_2ϵ−ϵ−\epsilon-OO\mathcal{O} いずれについても合計の計算努力、すなわち努力イテレーションごとに必要な反復の総数は、見つける近いソリューションは、両方のアルゴリズムでも同じです。× ϵ −ϵ&gt;0,ϵ&gt;0,\epsilon > 0,××\timesϵ−ϵ−\epsilon- たとえば、反復ごとの努力は反復ごとの努力は O(n)、 A 2 O( n 2)。A1A1\mathcal{A}_1O(n),O(n),O(n),A2A2\mathcal{A}_2O(n2).O(n2).O(n^2). あるアルゴリズムが他のアルゴリズムよりも好まれる状況はありますか?どうして?

2
シミュレーション実行を管理するための提案?
この質問はcomp-sciのトピックから少し外れるかもしれません。必要な場合は、どこに適合するか提案してください。 問題は、すべてのシミュレーション実行を効率的に管理する方法に関するものです。 たとえば、シミュレーションで、特定の推奨値の範囲で定義する必要がある2つのパラメーターを修正する必要があるとします。 (シミュレーション結果を実験データと比較するなどして)2つのパラメーターのペアによって生成されるより良い結果を見つけるには、各パラメーターに3つの値を定義し、9回の実行を公式化することにより、感度分析を実行できます。 以前は、sedを使用して各実行の入力を変更し、この実行の入力と結果を格納するフォルダーに値とパラメーター名を書き込むことで、各実行にタグを付けていました。しかし、パラメーターの数が増えると、これは非常に非効率的であることがわかりました(たとえば、プロット用のスクリプトでフォルダーの名前にアクセスします)。 その後、フォルダ名として単純な数字を使用し、他のいくつかのスプレッドシートで詳細を保存することにしました。この方法は今のところ問題ありませんが、いくつかの面倒な作業が必要です。また、ランの成長に伴い、数日前にすでに実行されている別のランを実行するなど、ミスを犯すこともよくあります。 これらの実行の管理について何か良いアイデアはありますか?モンテカルロ分析をする人にとってそれは非常に重要だと思いますか? 前もって感謝します!

3
SORがGauss-Seidelよりも高速であるような問題ですか?
Gauss-Seidelの代わりにSORを実行する価値があるかどうかを言う簡単な経験則はありますか?(そして、再帰パラメータを推定するための可能な方法)ωω\omega 私は単にマトリックスを見ることを意味しますか、またはマトリックスが表す特定の問題の知識? 私はこの質問の答えを読んでいました: 逐次過剰緩和(SOR)法を最適化するためのヒューリスティックはありますか? しかし、それは少し洗練されすぎています。マトリックス(またはそれが表す問題)を見ているだけで、スペクトル半径を推定する簡単なヒューリスティックがわかりません。 もっと単純なものが欲しい-SORがより速く収束する行列(問題)のほんの数例。 私はこの王の行列に対してSORで実験した: 恒等行列であり、及び sはそのようunifrom分布から乱数であります。最適ながパラメーターある程度依存すると考えていました。I C I J = C ∀ I 、J R I J | R i j | &lt; R ω C 、RA = I+ C+ Rあ=私+C+RA = I + C + R 私私IC私はj= cC私j=cC_{ij}=c ∀ I 、J∀私、j \forall i,jR私はjR私jR_{ij}|R私j| &lt; r|R私j|&lt;r|R_{ij}|<rωω\omegac 、rc、rc,r …

3
プロジェクトはオブジェクト指向なしで存続できますか?
特定のクラスの数値問題を解決する小さなMATLABパッケージを書いています。アルゴリズムには3つの段階があり、ユーザーは各段階で5つの選択肢があります。私が使用して全体の問題を実装しているの機能及び3スイッチケース(各アルゴリズムのステージに1つ)。それは正常に動作しますが、私はそれをより多くのこと(5つ以上の選択肢ともう1つのステージ)にして、Pythonの移植版(一部の人は興味がある)を作ることを検討しています。≈20≈20\approx 20 OOPフレームワークに変換する必要があるのか​​(まったく得意ではない)、または私が持っている手続きフレームワーク(得意)に固執する必要があるのか​​と思いました。私の手続き型コードでは、関数が2つのことを行わず、重複が最小限であることを確認しました(2つのコードセグメントが同じことを行うことはほとんどありません)。 ドメインに適していると思われる場合は、SOに移行してください。
9 matlab 

2
不均一メッシュ(1Dのみ)有限体積法でポアソン方程式を解くときの固有のエラー
私は最後の数日間このエラーをデバッグしようとしましたが、続行する方法について誰かがアドバイスを持っているかどうか疑問に思いました。 未知のものがセルの中心で定義され、セルの面でフラックスが定義されている不均一な有限体積メッシュ上のステップ電荷分布(静電/半導体物理学における一般的な問題)のポアソン方程式を解きます。 0=(ϕx)x+ρ(x)0=(ϕx)x+ρ(x) 0 = (\phi_x)_x + \rho(x) 電荷プロファイル(ソース項)は、 ρ(x)=⎧⎩⎨−1,1,0,if −1≤x≤0if 0≤x≤1otherwiseρ(x)={−1,if −1≤x≤01,if 0≤x≤10,otherwise \rho(x)= \begin{cases} -1,& \text{if } -1 \leq x \leq 0\\ 1,& \text{if } 0 \leq x \leq 1\\ 0, & \text{otherwise} \end{cases} 境界条件は、 ϕ(xL)=0∂ϕ∂x∣∣∣xR=0ϕ(xL)=0∂ϕ∂x|xR=0 \phi(x_L)=0 \\ \frac{\partial\phi}{\partial x}\bigg|_{x_R}=0 ドメインは、。[−10,10][−10,10][-10,10] 私は移流拡散反応方程式を解くために開発されたコードを使用しています(ここで自分のノートを参照して自分で書きましたhttp://danieljfarrell.github.io/FVM)。移流拡散反応方程式は、ポアソン方程式のより一般的なケースです。実際、移流速度をゼロに設定し、過渡項を削除することで、ポアソン方程式を復元できます。 このコードは、均一、非均一、ランダムグリッドのさまざまな状況でテストされており、常に、移流拡散拡散方程式の合理的なソリューション(http://danieljfarrell.github.io/FVM/examples.html)を生成します。 Ω8Ω8\Omega_8Ω9Ω9\Omega_9 この問題を引き起こしている可能性のあるアイデアは何ですか?離散化に関する詳細情報が役立つかどうか教えてください(この質問にあまり詳細を詰め込みたくありませんでした)。

1
「計算科学」に良いメーリングリストはありますか?
計算と科学のための非常に優れたメーリングリストやgoogleグループがあるかどうか疑問に思っています。 実際、私はPDEの並列計算と数値解にもっと興味があります。しかし、私はこの分野の人々が何をどのようにしているかを知りません。私は彼らの論文を読んで、この地域のロードマップを把握することしかできません。 ガイド情報を教えてください。ありがとう。

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