問題タブ [newtons-method]

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 投票する
2 に答える
1210 参照

c++ - 数値レシピ:C++で関数newtの引数として関数を渡す方法

私の質問は数値レシピに関連しています。最小化する関数のベクトルを計算するグローバル関数があります

クラス関数の実行で、Numerical Recipes関数newtを呼び出そうとしました。これは、次のように関数vecfuncを読み取ります。

関数newtは次のように宣言されます

次のコンパイラエラーが発生するのはなぜですか?

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

math - 多入力多出力関数のガウスニュートン最小化

行列形式の入出力関数が与えられた場合:

p1−p6ガウス・ニュートン法を使用して最小二乗誤差を最小化したい。100個の測定値があるとします。私の質問は、残余ベクトルの計算とサイズについてです。

r i =出力− f(入力、パラメーター)

err = Sum(r i 2

最小化されたエラーでパラメータを計算するために、次のようになります。

p i + 1 = pi +Δ

Δ=(J T * J)-1 * J T * r i

それぞれのサイズは次のようになります。

入力ベクトル(x):100x2

出力ベクトル(y):100x2

resuidual(r):100x2

ジャコビアン(J):100x6

パラメータ(pi):6x1(6つのパラメータ)

ご覧のとおり、Δのサイズは6x2になりp_i+1 ますが、これはと一致していないようです。残余ベクトルの計算プロセスは正しいですか?はいの場合、パラメータのベクトルをどのように計算できますか?そうでない場合、正しい答えは何ですか?

もう1つは、Jパラメーター行列に関する計算方法(Jacobian)です。

どうもありがとう。

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

java - 平方根を見つける際にニュートン法を実装するアルゴリズムの複雑さ

ニュートン法を使用してユーザー定義の数値の平方根を計算するJavaプログラムを作成しました。アルゴの主な操作は次のようになります。

私は今、アルゴリズムの複雑さ(宿題です)を見つけようとしています。ここから、ニュートン法の時間計算量はO(log(n)* F(x))であることを読みました。

ただし、上記のコードスニペットから、時間計算量は次のように解釈されました。

ここで何が間違っているのかわかりませんが、wikiの説明を読んだ後でも、大きなOSの格差を理解できないようです。

また、「アルゴリズムの複雑さ」は「時間の複雑さ」と同義であると思います。そうするのは正しいですか?

私は初心者の学生であり、バックグラウンドに値するいくつかの「タッチアンドゴー」プログラミングモジュールを持っているので、このパラドックスを説明するのに助けていただければ幸いです。

前もって感謝します :)

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

matlab - 二分法(数値解析)

すべてのルートが見つかるまでに何回の再帰が行われますか? また、どれがルーツですか?


これが私のコードです:

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

c++ - Newton Raphson ハイブリッド アルゴリズムが解に達しない

問題の簡単な説明: 多項式のルート検索にニュートン ラフソン アルゴリズムを使用していますが、場合によっては機能しません。なぜ?

「C++ の数値レシピ」から、ニュートン ラフソン ハイブリッド アルゴリズムを採用しました。これは、ニューラフソンが適切に収束しない場合 (微分値が低い場合、または収束速度が速くない場合) に二等分します。

いくつかの多項式でアルゴリズムをチェックしたところ、うまくいきました。現在、所有しているソフトウェア内でテストを行っていますが、特定の多項式で常にエラーが発生します。私の問題は、他の多くの多項式がそうするのに、なぜこの多項式が結果に達しないのか分からないことです。多項式のアルゴリズムを改善したいので、どれが収束しない理由であるかを知る必要があるため、適切に処理できます。

次に、エラーのあるアルゴリズムと多項式について提供できるすべての情報を投稿します。

多項式:

それは一次導関数です:

プロット: ここに画像の説明を入力

ルーツ (Matlab による):

アルゴリズム:

アルゴリズムは、次の変数で呼び出されます。

問題は、アルゴリズムが最大反復回数を超え、 aproximumly のルートにエラーがあることです0.15

したがって、私の直接的で省略された質問は次のとおりです。多くの(少なくとも1000)他の非常に類似した多項式が正確なエラーに達しないのはなぜですか(1e-10の精度と少数の反復で!)

質問が難しく、直接的な答えがないことは承知していますが、数日間この問題に悩まされており、解決方法がわかりません。私の質問を読んでくれてありがとう。

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

c++ - ニュートン法はNaNを返します

ニュートン法の単純な再帰バージョンを作成しました。

たとえば、関数を呼び出すとFindRoot(sin, 4)NaNが返されます。すべてのステップの後にの値を出力して関数をチェックしましたがx0、最後の反復ですべてが正常に機能しているようです。何らかの理由で、関数は実際に必要な回数よりももう一度自分自身を呼び出し、おそらく0/0最後のを計算するときのようなものを作成しcorrます。

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

matlab - matlab の Newton Raphson コードに一連の推定値を追加する方法は?

私のコードは機能しますが、さらに 2 つのことを追加する必要があります。

  • output- 初期推定値 x0 を含む一連の推定値を含むベクトル、
  • 入力最大反復回数

    /li>
0 投票する
2 に答える
1517 参照

java - Javaでの数値解法

次のように、Javaで線形代数的解法の数値解法のある種の実装を組み込むことを検討しています。

5x + 4 = 2x + 3

理想的には、解析をできるだけ少なくし、従来の「人間的な」ソリューションの方法(つまり、同類項を組み合わせるなど)の使用を避けたいと思います。私はニュートン法を調べて、解を近似するためにxの値を差し込んでいます。

しかし、私はそれを機能させるのに苦労しています。

これを行うための最良の一般的な方法と、コード(できればJava)でどのように行うべきかを知っている人はいますか?

追加

Netwonの方法では、近似が許容可能な精度になるまで繰り返します。式は次のようになります。

x1 = x0-(f(x0)/(f'(x0))

ここで、x1は反復におけるxの次の値であり、x0は現在の値です(または最初の反復の場合は推測を開始します)。

fプライムとは何ですか?f(x0)が現在のx推定の関数であるとすると、f'(x0)はどのような式を表しますか?

明確化

これは、単に数学を行う方法ではなく、この数学の評価をどのようにプログラムするかという問題です。

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

python - pandas/python で newton-raphson を高速化する

私は現在、〜85GB(〜6億行)の非常に大きなデータセットを反復処理しており、単純にnewton-raphsonを使用して新しいパラメーターを計算しています。現在、私のコードは非常に遅いですが、スピードアップする方法についてのヒントはありますか? BSCallClass と BSPutClass のメソッドはクローズド フォームであるため、高速化するものは何もありません。ありがとう。

編集:

好奇心旺盛な人のために、scipy の提案と multiprocessing モジュールを使用して、このプロセス全体を大幅に高速化しました。

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

c++ - Newton Raphson with SSE2 - 誰かこの 3 行について説明してくれませんか

このドキュメントを読んでいます: http://software.intel.com/en-us/articles/interactive-ray-tracing

そして、次の 3 行のコードに出くわしました。

SIMD バージョンはすでにかなり高速ですが、さらに改善することができます。Intel は、高速な 1/sqrt(x) 関数を SSE2 命令セットに追加しました。唯一の欠点は、その精度が限られていることです。精度が必要なので、Newton-Rhapson を使用して精度を上げます。

このコードは、'half' (0.5f の 4 倍) という名前の __m128 変数と変数 'three' (3.0f の 4 倍) の存在を前提としています。

Newton Raphson を使用して関数のゼロを計算する方法と、それを使用して数値の平方根を計算する方法は知っていますが、このコードがそれをどのように実行するかはわかりません。

誰か説明してくれませんか?