見出し画像

📏ニュートン法の仕様

ニュートン法(またはニュートン-ラフソン法)は、非線形方程式を数値的に解くための反復法です。

ニュートン法は特に効率的であり、適切な初期値から始めると、通常は速く収束します。


ということは、線形的な解法を非線形方程式に対して繰り返すことで、近似解を求められると理解していいですか?

はい、その理解で正確です。ニュートン法は、非線形方程式に対して線形的な解法を繰り返し適用することによって近似解を求める手法です。ここでの「線形的な解法」とは、各反復で非線形方程式を線形近似して解くことを意味します。

以下に、一般的なニュートン法の疑似コードを示します。

この疑似コードでは、f(x) が解きたい方程式で、f′(x) はその導関数です。目的は、f(x)=0 となる x の値を見つけることです。

入力: f(x), f'(x)   // 解きたい方程式とその導関数
      x0            // 初期推測値
      ε             // 許容誤差(収束条件)
      最大反復回数 N

手順:
1: 初期化: x = x0
2: for i = 1 to N do
3:     y = f(x)        // 現在の点での関数の値
4:     y' = f'(x)      // 現在の点での導関数の値
5:     if |y'| == 0 then
6:         出力: "導関数が0になるため失敗"
7:         終了
8:     end if
9:     x_new = x - y / y' // 次の推測値を計算
10:    if |x_new - x| < ε then // 収束判定
11:        出力: x_new // 解が見つかった
12:        終了
13:    end if
14:    x = x_new // 更新
15: end for
16: 出力: "収束しなかった"

ニュートン法(アイザック・ニュートンとジョセフ・ラフソンにちなんでニュートン・ラフソン法とも呼ばれる)は、実数値関数の根(またはゼロ)に対してより良い近似値を順次生成する根探索アルゴリズムである。

このアルゴリズムはハウスホルダー法のクラスで最初のものであり、ハレー法に引き継がれる。また、この方法は複素関数や連立方程式に拡張することができる。

とりあえず9のルートは3だな、それを割り算でやってみよう

https://editor.p5js.org/setapolo/sketches/loq0nqFmh

数値解析の分野において、ニュートン法(ニュートンほう、英: Newton's method)またはニュートン・ラフソン法(英: Newton-Raphson method)は、方程式系を数値計算によって解くための反復法による求根アルゴリズムの1つである

きゅ、求根すか

ニュートンはこの方法を多項式にのみ適用し、最初のルート推定から始まり、一連の誤差補正を抽出した。彼は各補正を用いて残りの誤差を考慮して多項式を書き換え、高次項を無視して新しい補正のために解いた。彼はこの方法を導関数と明示的に結びつけたり、一般的な公式を提示したりはしなかった。ニュートンはこの方法を数値問題と代数問題の両方に適用し、後者の場合にはテイラー級数を生成した。

平方根を計算するニュートン法の特殊な例は古代から知られており、しばしばバビロニア法と呼ばれている。

こ、これならできる気がする

キャプチャ

なんとなくテイラー展開ぽい展開を見せている。石板はこー

画像3
キャプチャ

とりあえずエクセルで割り出してみた、ソースも簡単に作れそうだ。

とりあえず平文で式を書くと

(1+2)/2=1.5
2/1.5 =1.3333..
(1.5+1.3333..)/2 = 1.41666...

こうやって見てみると除算を逆にするあたりベイズと関係がある気もしてくる。なんにせよこれであっているならループで求められるし、ループなら変数に値が保存できるプログラムのほうが便利で、これを道具化したくなる人の気持ちもわかる。

そのまま答えをみんな知っている9とかだとどうなるか

(1+9)/2=5
9/5=1.8
(1.8+5)/2 = 3.4

だんだんと3に近づいてくるので安心する。式はカッコイイ物をどこかで見つけてくるとして、手ごろなのでp5.jsで実装する。

よくわからないことが多いのでまだ配列を使わず変数もなるべくだぶらないようにして書いてみる

キャプチャ

ニュートン法と級数との関連性について考えると、ニュートン法の収束の解析や一般化において、テイラー級数展開が使用されることが多いです。具体的には、関数の局所的な振る舞いを理解するために、テイラー級数を用いて関数を近似することができます。

ニュートン法を簡単に試すことができるライブラリやツールはいくつか存在します。以下はその例です:

  1. SciPy (Python):

    • SciPyの`optimize`モジュールには、ニュートン法を実装した`newton`関数が含まれています。

  2. MATLAB:

    • MATLABでは、Optimization Toolboxを使用して`fzero`関数を使うことでニュートン法を試すことができます。ただし、`fzero`はニュートン法を含む複数の方法で根を見つける機能を持っています。

  3. Julia:

    • Juliaの`Roots`パッケージには、ニュートン法を実装した`newton`関数が含まれています。


ニュートン法(またはニュートン・ラフソン法)は級数展開そのものではありませんが、テイラー級数の考え方を利用して非線形方程式を解くための数値的な方法です
ニュートン法の基本的なアイディアは、関数f(x) の任意の点 x0​ での接線を利用して、その関数が0となる点(つまり f(x)=0 となる点)を求めることです。接線とx軸との交点は、次の近似値 x1​ として利用され、このプロセスが繰り返されることで、解に収束していきます。
この更新式の導出には、テイラー級数の最初の1つまたは2つの項を使用することで、関数 f(x) を近似することが関与しています。しかし、ニュートン法そのものは級数展開全体を使っているわけではありません
要点としては、ニュートン法はテイラー級数の考え方を背景に持ちつつ、関数のゼロ点(根)を効率的に見つけるための数値的手法として開発されたものです。


Refine the abstract Expressionist style portrait of a person resembling Isaac Newton by incorporating more linear and geometric black lines that evoke the methodical aspects of Newton's method. The portrait should integrate straight, precise lines to symbolize the mathematical and logical nature of Newton's work, while maintaining the expressive pastel background. This version should blend the abstraction of Expressionism with the clarity and order of linear geometric forms, creating a unique visual that connects the artistic and scientific elements.

お願い致します