ファイル:Newton-Raphson method.gif

ページのコンテンツが他言語でサポートされていません。

元のファイル(1,920 × 1,440 ピクセル、ファイルサイズ: 1.1メガバイト、MIME タイプ: image/gif、ループします、21 フレーム、21秒)

概要

解説
English: Newton-Raphson method to find a zero of f(x) = x2 - 2
日付
原典 投稿者自身による著作物
作者 ARAKI Satoru
import numpy as np
import matplotlib.pyplot as plt
import imageio

plt.rcParams['text.usetex'] = True
plt.rcParams['xtick.direction'] = 'in'
plt.rcParams['ytick.direction'] = 'in'

a = 1.0
b = 3.0
f = lambda x: x**2 - 2.0
xs = np.arange(a, b, step=0.01)
ys = f(xs)

# Newton-Raphson method
N = 6
F = lambda x: x - (x**2 - 2.0)/(2.0*x)
x = [ 2.0 ]
for n in range(1, N + 1):
    x.append(F(x[n - 1]))
y = [ f(xn) for xn in x ]

T = 4*N
alpha = 0.3
blue = 'tab:blue'
orange = 'tab:orange'

for t in range(T - 3):
    n = t//4

    # graph y = x^2 - 2
    plt.plot(xs, ys, color=blue)
    plt.xlim(1.35, 2.05)
    plt.ylim(-0.2, 2.2)
    plt.xlabel(r'$x$')
    plt.ylabel(r'$y$')
    plt.title(r'Newton-Raphson method to find a zero of $f(x) = x^2 - 2$')

    # line y = 0
    plt.plot(xs, 0*ys, color=blue)

    # main animation
    for m in range(n + 1):
        # points x^(n)
        plt.plot(x[m], 0.0, 'o', color=orange, alpha=alpha)

    for m in range(n):
        # vertical line segments + points f(x^(n)) + tangent line segments
        plt.plot([ x[m], x[m] ], [ 0, y[m] ], color=orange, alpha=alpha)
        plt.plot(x[m], y[m], 'o', color=orange, alpha=alpha)
        plt.plot([ x[m + 1], x[m] ], [ 0, y[m] ], color=orange, alpha=alpha)

    if t % 4 == 0:
        # point x^(n) + text label
        plt.plot(x[n], 0.0, 'o', color=orange)
        plt.text(x[n] - 0.01, -0.15, r'$x^{(' + f'{n}' + r')}$')

    elif t % 4 == 1:
        # vertical line segment
        plt.plot([ x[n], x[n] ], [ 0, y[n] ], color=orange)

    elif t % 4 == 2:
        # point f(x^(n)) + text label (+ vertical line segment)
        plt.plot(x[n], y[n], 'o', color=orange)
        plt.text(x[n] - 0.04, y[n] + 0.1, r'$f(x^{(' + f'{n}' + r')})$')
        plt.plot([ x[n], x[n] ], [ 0, y[n] ], color=orange, alpha=alpha)

    elif t % 4 == 3:
        # tangent line segment (+ point f(x^(n)) + vertical line segment)
        plt.plot([ x[n + 1], x[n] ], [ 0, y[n] ], color=orange)
        plt.plot(x[n], y[n], 'o', color=orange, alpha=alpha)
        plt.plot([ x[n], x[n] ], [ 0, y[n] ], color=orange, alpha=alpha)

    # numerical results
    plt.text(1.407, 1.8, r'$\sqrt{2} = 1.414213562373095$')
    for m in range(n + 1):
        plt.text(1.400, 1.7 - 0.1*m, r'$x^{(' + f'{m}' + r')} = ' + f'{round(x[m], 15)}'.ljust(2 + 15, '0') + r'$')

    plt.savefig(f'{t}.png', dpi=300)
    plt.close()

filenames = [ f'{t}.png' for t in range(T - 3) ]
with imageio.get_writer('newton_raphson_method.gif', mode='I', fps=1) as writer:
    for filename in filenames:
        image = imageio.imread(filename)
        writer.append_data(image)

ライセンス

この作品の著作権者である私は、この作品を以下のライセンスで提供します。
w:ja:クリエイティブ・コモンズ
表示 継承
このファイルはクリエイティブ・コモンズ 表示-継承 4.0 国際ライセンスのもとに利用を許諾されています。
あなたは以下の条件に従う場合に限り、自由に
  • 共有 – 本作品を複製、頒布、展示、実演できます。
  • 再構成 – 二次的著作物を作成できます。
あなたの従うべき条件は以下の通りです。
  • 表示 – あなたは適切なクレジットを表示し、ライセンスへのリンクを提供し、変更があったらその旨を示さなければなりません。これらは合理的であればどのような方法で行っても構いませんが、許諾者があなたやあなたの利用行為を支持していると示唆するような方法は除きます。
  • 継承 – もしあなたがこの作品をリミックスしたり、改変したり、加工した場合には、あなたはあなたの貢献部分を元の作品とこれと同一または互換性があるライセンスの下に頒布しなければなりません。

キャプション

このファイルの内容を1行で記述してください

このファイルに描写されている項目

題材

29 1 2022

ファイルの履歴

過去の版のファイルを表示するには、その版の日時をクリックしてください。

日付と時刻サムネイル寸法利用者コメント
現在の版2022年1月29日 (土) 15:302022年1月29日 (土) 15:30時点における版のサムネイル1,920 × 1,440 (1.1メガバイト)ARAKI SatoruUploaded own work with UploadWizard

以下の​ 2 ページがこのファイルを使用しています:

グローバルなファイル使用状況

以下に挙げる他のウィキがこの画像を使っています: