File:Newton-Raphson method.gif
出典:ウィキメディア・コモンズ (Wikimedia Commons)
ナビゲーションに移動
検索に移動
このプレビューのサイズ: 800 × 600 ピクセル。 その他の解像度: 320 × 240 ピクセル | 640 × 480 ピクセル | 1,024 × 768 ピクセル | 1,280 × 960 ピクセル | 1,920 × 1,440 ピクセル。
元のファイル (1,920 × 1,440 ピクセル、ファイルサイズ: 1.1メガバイト、MIME タイプ: image/gif、ループします、21 フレーム、21秒)
ファイル情報
構造化データ
キャプション
概要
[編集]解説Newton-Raphson method.gif |
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)
ライセンス
[編集]この作品の著作権者である私は、この作品を以下のライセンスで提供します。
このファイルはクリエイティブ・コモンズ 表示-継承 4.0 国際ライセンスのもとに利用を許諾されています。
- あなたは以下の条件に従う場合に限り、自由に
- 共有 – 本作品を複製、頒布、展示、実演できます。
- 再構成 – 二次的著作物を作成できます。
- あなたの従うべき条件は以下の通りです。
- 表示 – あなたは適切なクレジットを表示し、ライセンスへのリンクを提供し、変更があったらその旨を示さなければなりません。これらは合理的であればどのような方法で行っても構いませんが、許諾者があなたやあなたの利用行為を支持していると示唆するような方法は除きます。
- 継承 – もしあなたがこの作品をリミックスしたり、改変したり、加工した場合には、あなたはあなたの貢献部分を元の作品とこれと同一または互換性があるライセンスの下に頒布しなければなりません。
ファイルの履歴
過去の版のファイルを表示するには、その版の日時をクリックしてください。
日付と時刻 | サムネイル | 寸法 | 利用者 | コメント | |
---|---|---|---|---|---|
現在の版 | 2022年1月29日 (土) 15:30 | 1,920 × 1,440 (1.1メガバイト) | ARAKI Satoru (トーク | 投稿記録) | Uploaded own work with UploadWizard |
このファイルは上書きできません。
ファイルの使用状況
以下のページがこのファイルを使用しています:
グローバルなファイル使用状況
以下に挙げる他のウィキがこの画像を使っています:
- ja.wikipedia.org での使用状況
- sv.wikipedia.org での使用状況
- www.wikidata.org での使用状況