問題タブ [numerical-methods]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
4339 参照

matlab - 非負の解を与えるように制約された遅延微分方程式 (DDE) 系を解く

MATLAB には、解が非負になるように制約するode45というパラメーターがあります。彼らは、このメソッドがどのように機能するか、そして y_i が負になるたびに y_i を 0 に設定することは一般的に機能しないため、愚かなことではないことについての論文を書きました。NonNegative

現在、MATLAB にはdde23遅延微分方程式を解くための機能もありNonNegativeますが、この積分器に相当するパラメーターはありません。

ode45残念ながら、私は既存のODE システムに遅延を追加する任務を負っていNonNegativeます。

どのように進めればよいですか?

編集:

これが役立つかどうかはわかりませんが...

私のシステムの DDE 部分は基本的に次のようになります。

ここでX(3 番目の式の大文字の変数) は の遅延バージョンですxx次に、との方程式にいくつかの項を追加して、この DDE システムを既存の (およびより大きな) ODE システムにリンクしz、結合したシステムをすべて統合します。

0 投票する
2 に答える
6152 参照

matlab - 過剰決定制約システムの解決

私はn実数変数を持っています(わからない、本当に気にしないでください)、それらを呼びましょうX[n]。私はm >> nそれらの間に関係もあります。それらR[m]を次の形式で呼びましょう。

X[i] = alpha*X[j]は、alphaゼロ以外の正の実数でiありj、別個のものですが、(i, j)ペアは必ずしも一意ではありません(つまり、異なるアルファ係数を持つ同じ変数間に2つの関係が存在する可能性があります)

私がやろうとしているのは、alpha最小二乗の意味で過剰決定系を解決する一連のパラメーターを見つけることです。理想的な解決策は、各方程式パラメーターとその選択された値の間の差の2乗和を最小化することですが、次の近似に満足しています。

m個の方程式をn個の未知数の過剰決定系に変換すると、疑似逆行列ベースの数値ソルバーは明白な解(すべてゼロ)を与えます。したがって、現在私が行っているのは、別の方程式をミックスに追加しx[0] = 1(実際には任意の定数で可能です)、ムーア・ペンローズ疑似逆行列を使用して、生成されたシステムを最小二乗の意味で解きます。(x[0] - 1)^2これはの合計との二乗和を最小化しようとしx[i] - alpha*x[j]ますが、これは私の問題に対する適切で数値的に安定した近似であることがわかります。次に例を示します。

オクターブ:

これにより、、、の値が得られます。これによりa、 次の(合理的な)関係が得られます。bc[0.99383; 0.51235; 0.19136]

したがって、今はこれをC / C ++ / Javaで実装する必要があり、次の質問があります。

問題を解決するためのより高速な方法はありますか、それとも過剰決定系を生成して疑似逆行列を計算することで正しい方向に進んでいますか?

私の現在のソリューションでは、特異値分解と3つの行列乗算が必要です。これは、5000または10000になる可能性があることを少し考慮していmます。疑似逆行列を計算するより高速な方法はありますか(実際には、最初の列のみが必要であり、行列のスパース性を考慮して、Bがゼロである場合の行列全体(最初の行を除く)(各行にはゼロ以外の値が2つ含まれ、一方は常に1で、もう一方は常に負です)

このためにどの数学ライブラリを使用することをお勧めしますか?LAPACKは大丈夫ですか?

数値的に安定していて漸近的に高速であるという条件で、他の提案も受け入れます(たとえばk*n^2k大きくなる可能性があります)。

0 投票する
2 に答える
105 参照

numpy - 曲線の最も滑らかな 15% を見つける

下のような曲線の最も滑らかな 15% を見つける最良の方法は何ですか?

曲線

開始と終了の x 座標を知る必要があります。微分関数を使用することを考えましたが、これにより微分が最小のポイントが得られます。これは、常に最も滑らかな 15% の一部である場合とそうでない場合があります。

私が見るべきアルゴリズムや提案はありますか?

0 投票する
4 に答える
14443 参照

java - GWT の小数点以下の桁数を制限していますか?

純粋なJavaでは、通常、小数点以下の桁数をdecimalCount特定の数値に制限するために、以下のような関数を使用しvalueます。ただし、GWT のドキュメントによると、「GWT は、日付および数値の書式設定クラス (java.text.DateFormat、java.text.DecimalFormat、java.text.NumberFormat、および java.TimeFormat など) の完全なエミュレーションを提供していません。」次の関数を GWT で動作させるにはどうすればよいでしょうか?

0 投票する
3 に答える
710 参照

algorithm - 多項式の最小不動点の効率的な計算

P(x)が問題の多項式を表すとします。Pの最小不動点(LFP)は、x = P(x)となるようなxの最小値です。多項式には実数の係数があります。一般にLFPが存在するという保証はありませんが、次数が奇数で3以上の場合に存在することが保証されます。次数が3の場合、効率的な解を知っています。x= P(x)したがって0 = P( x)-x。閉じた形式の3次公式があり、xの解法はやや自明であり、ハードコーディングできます。度2と1も同様に簡単です。任意の程度の優れたアルゴリズムを思い付くことができないように思われるため、私が問題を抱えているのはより複雑なケースです。

編集:

私は実際の固定小数点のみを考慮し、それらの中で最小のものを取ります。必ずしも絶対値が最小の固定点である必要はありません。

0 投票する
1 に答える
1938 参照

algorithm - カーネルを近似する可変半径ガウスぼかし

可変半径 (標準偏差) のガウスぼかしを書いています。つまり、画像の各ピクセルは異なるカーネルを使用して畳み込まれています。ガウスぼかしを計算するための標準的な手法はここでは機能しません: FFT、軸分離、繰り返されるボックスぼかし - それらはすべて、カーネルが画像全体で同じであると仮定しています。

今、私は次のスキームを使用してそれを近似しようとしています:

ガウス カーネル K(x,y) を、次のように、軸に沿った四角形 R kの集合 Nと係数 α kによって定義される区分定数関数 f(x,y) で近似します。

    f(x,y) = ∑<sub>k=1 N α k ·χ R k (x,y)

g(x,y) を画像とすると、

    ∬<sub>ℝ<sup>2 K(x,y)·g(x,y) dxdy ≈ ∬<sub>ℝ<sup>2 f(x,y)·g(x,y) dxdy = ∑< sub>k=1 N α k ·∬<sub>R k g(x,y) dxdy

RHS の積分は四角形の単純な積分であるため、画像全体の部分和を事前に計算することで一定時間で計算できます。

結果のアルゴリズムは O(W·H·N) で実行されます。ここで、W と H は画像の次元であり、N は (AFAIK) 近似の誤差に反比例します。

残りの部分は、適切な近似関数 f(x,y) を見つけることです。長方形の数 N (誤差を最小化) または誤差 (長方形の数を最小化) が与えられたときに、ガウス分布の最適な近似を見つける方法は?

0 投票する
6 に答える
9048 参照

c++ - 平均を計算するための数値的に最良の方法は何ですか

平均を計算するための最良の方法は何ですか?この質問では、平均を計算するためのどのアルゴリズムが数値的な意味で最適であるかを知りたいと思います。丸め誤差が最小である必要があり、オーバーフローやアンダーフローなどの影響を受けないようにする必要があります。

ありがとうございました。


追加情報:値の数がRAMに収まらない可能性があるため、増分アプローチが推奨されます(4 GBを超えるファイルでのいくつかの並列計算)。

0 投票する
2 に答える
2863 参照

algorithm - n^nの最初のk桁をすばやく判別する方法はありますか

私は、n ^ nとして表すことができる別の大きな数の最初のk(kは1〜5の間のどこでもかまいません)の数だけを知る必要があるプログラムを書いています。ここで、nは非常に大きな数です。

現在、私は実際にn ^ nを計算し、それを文字列として解析しています。もっと速い方法があるのだろうか。

0 投票する
2 に答える
14560 参照

c++ - 常微分方程式 (ODE) ソルバー用の C++ ライブラリはありますか?

より具体的には、ルンゲクッタとスティッフ方程式に基づく 8 次 Dormand-Prince 埋め込み法に興味があります。

Numerical Recipes 3 を使用していますが、ライブラリのコンパイルに問題が発生することがよくあります。代替案を知りたいです。

0 投票する
1 に答える
886 参照

c++ - ブーストと数値レシピ3コードの統合

nr3.hとboostライブラリの両方を使用すると、たくさんのエラーが発生します。

私はlibboost1.40とhttp://www.nr.com/(第3版)のコードでubuntu10.04を使用しています

try.cc:

コード「g++try.cc」をコンパイルすると、エラーが発生します。nr3.h行または<boost...>行のいずれかをコメントアウトすると、コードは正常にコンパイルされます。

ここにエラーがあります:

更新:nr.comフォーラム(http://www.nr.com/forum/showthread.php?t=2148)にも投稿しました。そして、問題はnr3.hがthrow()の定義マクロを作成したことであるという応答を受け取りました。何が堅牢なソリューションになるかはまだわかりません。