タグ付けされた質問 「numerical-analysis」

連続問題の近似離散解を計算するアルゴリズムの構築と分析。標準的な例は、差分商による導関数の近似です。

17
Python用の高品質な非線形プログラミングソルバーはありますか?
解決すべきいくつかの挑戦的な非凸のグローバル最適化問題があります。現在、MATLABのOptimization Toolbox(特にfmincon()algorithm ='sqp'を使用)を使用していますが、これは非常に効果的です。ただし、私のコードのほとんどはPythonで作成されているため、Pythonでも最適化を行いたいと考えています。競合できるPythonバインディングを備えたNLPソルバーはありfmincon()ますか?ちがいない 非線形等式および不等式の制約を処理できる ユーザーがヤコビアンを提供する必要はありません。 グローバルな最適化を保証していなくても構いません(保証fmincon()しません)。私は、困難な問題や、それよりもわずかに遅い場合でも、ローカル最適にロバストに収束するものを探していfmincon()ます。 OpenOptで利用できるソルバーをいくつか試しましたが、MATLABのソルバーより劣っていfmincon/sqpます。 強調するために、私はすでに扱いやすい定式化と優れたソルバーを持っています。私の目標は、ワークフローをより合理化するために、単に言語を変更することです。 Geoffは、問題のいくつかの特性が関連している可能性があると指摘しています。彼らです: 10-400の決定変数 4〜100の多項式等式制約(1〜8の範囲の多項式次数) 決定変数の数の約2倍に等しい合理的な不等式制約の数 目的関数は決定変数の1つです 不等式制約のヤコビアンと同様に、等式制約のヤコビアンは密です。

3
並列ODEメソッドの最新技術とは何ですか?
現在、ODE統合のための並列メソッドを検討しています。さまざまなアプローチを説明する新しい文献や古い文献がたくさんありますが、最近の調査や一般的なトピックを説明する概要記事は見つかりませんでした。 Burrageによる本[1]がありますが、それはほぼ20年前であり、したがって、パラリアルアルゴリズムのようなより現代的なアイデアの多くをカバーしていません。 [1] K.バラージ、常微分方程式の並列法および逐次法、クラレンドンプレス、オックスフォード、1995



3

1
どのように数値コードをデバッグしますか、この振動エラーの原因は何ですか?
静かに多くの洞察を経験から得ることができます。これと似たようなものを以前に見たことがある人はいないかと思っていました。このプロットは、移流拡散方程式の初期条件(緑)、反復200(青)、反復400(赤)での解を示しています。 移流拡散方程式の解は、数回の反復後に爆発します。ペクレ数、およびCFL条件が満たされ、、方程式はそうする必要があり安定しています。数値コードにバグがあると予想しています。μ ≈ 0.07μ≈0.07\mu\approx0.07C≈ 0.0015C≈0.0015C\approx 0.0015 バックグラウンド。離散化は、移流と拡散の両方の用語の中心的な違いです。これは移流の1次であり、拡散の2次であると思います。これを有限体積アプローチ(初めて)を使用して実装しました。この方法では、セルの平均値からの線形補間によってセル面の係数(速度と拡散係数)の値が求められます。左右の表面にロビン境界条件を適用し、境界のフラックスをゼロに設定します。 数値コードをどのようにデバッグしますか?これまでにこのようなシーンはありますか?どこから探し始めるのが良いでしょうか? 更新 これは、移流拡散方程式の有限体積法の実装に関する個人的な「ラボブック」スタイルのメモです。http://danieljfarrell.github.io/FVM/ Pythonソースコードは、http://github.com/danieljfarrell/FVM.gitから入手できます。 更新 解決策はこれ以上簡単ではありません!私はちょうど拡散項でサインエラーを犯しました。それは奇妙です、私はこれを投稿していなかったと確信しています、私はエラーを見つけなかっただろう!数値コードをデバッグする方法についてのヒントを共有したい場合は、まだ興味があります。私には方法がありません、それは少しヒットとミスです、私は手がかりを得るために何かを試し続けますが、このプロセスには数週間かかる場合があります。 ××\times

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

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 私の誤解は何ですか?

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を呼び出します。

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
有限体積法を使用する場合、境界条件はどのように適用する必要がありますか?
前の質問から、この不均一な有限体積メッシュに境界条件を適用しようとしていますが、 ドメインのlhs(にロビン型の境界条件を適用したいので、x=xL)バツ=バツL)x=x_L) σL=(dux+au)∣∣∣x=xLσL=(dあなたはバツ+aあなたは)|バツ=バツL \sigma_L = \left( d u_x + a u \right) \bigg|_{x=x_L} ここで、は境界値です。はそれぞれ境界、移流、拡散で定義される係数です。の誘導体であり、境界で評価および、我々が解決される変数です。 A 、D 、U X = ∂ UσLσL\sigma_La,da、da, d UUux=∂u∂xあなたはバツ=∂あなたは∂バツu_x = \frac{\partial u}{\partial x}uあなたはuuあなたはu 可能なアプローチ 上記の有限体積メッシュにこの境界条件を実装する2つの方法を考えることができます。 ゴーストセルアプローチ。 ゴーストセルを含む有限差分としてをします。σ Lが = D U 1 - U 0uxあなたはバツu_xσL=du1−u0h−+au(xL)σL=dあなたは1−あなたは0h−+aあなたは(バツL) \sigma_L = d \frac{u_1 - u_0}{h_{-}} + a u(x_L) A.次に、ポイントおよびを使用した線形補間を使用して、中間値を見つけます。x 1 ...

4
固定数のRHS評価のための最適なODEメソッド
実際には、IVPを数値的に解く実行時間 は多くの場合、右辺(RHS)の評価期間によって支配されます。したがって、他のすべての操作は即時であると仮定します(つまり、計算コストなし)。IVPを解決するための全体的な実行時間が制限されている場合、これはの評価回数制限に相当するいくつかの。X (T 0)= X 0 F F N ∈ Nバツ˙(t )= f(t 、x (t )) 以下のための T ∈ [ トン0、t1]x˙(t)=f(t,x(t)) for t∈[t0,t1] \dot{x}(t) = f(t, x(t)) \quad \text{ for } t \in [t_0, t_1] x (t0)= x0x(t0)=x0 x(t_0) = x_0 ffffffN∈ NN∈NN \in \mathbb{N} 最終値のみ関心があります。x (t1)x(t1)x(t_1) このような設定で最適なODEメソッドを選択するのに役立つ理論的および実用的な結果を探しています。 たとえば、場合、幅明示的な2つのオイラーステップまたはミッドポイント法を使用した幅 1つのステップを使用してIVPを解くことができます。どちらが望ましいかはすぐにはわかりません。大きい場合は、もちろん、マルチステップメソッド、反復ルンゲクッタスキームなどについても考えることができます。(t ...

1
Python関数で壊滅的なキャンセルを避ける方法は?
関数を数値的に実装するのに問題があります。入力値が大きい場合、結果は非常に大きな数倍と非常に小さな数であるという事実に悩まされます。壊滅的なキャンセルが正しい用語であるかどうかはわかりませんので、正しい場合は修正してください。何かがおかしくなっている証拠: 6の大きな入力に対して、振動と0.0の割り当てを回避するにはどうすればよいですか? 私の機能は次のとおりです。 import numpy as np def func(x): t = np.exp(-np.pi*x) return 1/t*(1-np.sqrt(1-t**2))

2
差分法のフォンノイマン安定性解析の代替
私は、結合された1次元多孔質弾性方程式(biotのモデル)の解決に取り組んでいます。 −(λ+2μ)∂2u∂x2+∂p∂x=0−(λ+2μ)∂2u∂x2+∂p∂x=0-(\lambda+ 2\mu) \frac{\partial^2 u}{\partial x^2} + \frac{\partial p}{\partial x} = 0 ドメイン上でΩ=(0、1)と境界条件: ∂∂t[ γp + ∂あなたは∂バツ] - κη[ ∂2p∂バツ2] =q(x 、t )∂∂t[γp+∂あなたは∂バツ]−κη[∂2p∂バツ2]=q(バツ、t)\frac{\partial}{\partial t} \left[ \gamma p + \frac{\partial u}{\partial x}\right] -\frac{\kappa}{\eta}\left[\frac{\partial^2 p}{\partial x^2}\right] =q(x,t)Ω = (0 、1 )Ω=(0、1)\Omega=(0,1) でのx=0とU=0、∂PP = 0 、(λ + 2 μ )∂あなたは∂バツ= − u0p=0、(λ+2μ)∂あなたは∂バツ=−あなたは0p=0, (\lambda ...

2
多くの変数の数値積分
ましょう及びFは(→ X):[ 0 、1 ] 、N → Cは、これらの変数関数です。x⃗ =(x1,x2,…,xn)∈[0,1]nx→=(x1,x2,…,xn)∈[0,1]n\vec{x} = (x_1, x_2, \dots, x_n) \in [0,1]^nf(x⃗ ):[0,1]n→Cf(x→):[0,1]n→Cf(\vec{x}): [0,1]^n \to \mathbb{C} この反復積分に再帰的なスキームはありますか? ∫[0,1]n∏dxif(x⃗ )∫[0,1]n∏dxif(x→)\int_{[0,1]^n} \prod dx_i \;f(\vec{x}) 場合及びIブレーク[ 0 、1 ] 100へのセグメントは、我々は10 20n=10n=10n = 10[0,1][0,1][0,1]1020102010^{20}まで追加するポイント。よりスマートな方法が必要です。 実際、統合したい機能は は、ユニタリグループのHaarメジャーです。 ∫U(n)f(A) dA=1n!∫[0,2π]n∏j<k∣∣eiθj−eiθk∣∣2⋅f(θ1,…,θn) dθ12π ⋯ dθn2π∫U(n)f(A) dA=1n!∫[0,2π]n∏j<k|eiθj−eiθk|2⋅f(θ1,…,θn) dθ12π ⋯ dθn2π\int_{U(n)} f(A) \ dA = \frac{1}{n!} ...

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