ملف:Newton-Raphson method.gif
حجم هذه المعاينة: 800 × 600 بكسل. البعد الآخر: 1٬920 × 1٬440 بكسل.
الملف الأصلي (1٬920 × 1٬440 بكسل حجم الملف: 1٫1 ميجابايت، نوع MIME: image/gif، ملفوف، 21 إطارا، 21ث)
ملاحظة: نظراً للقيود التقنية، فإن الصورة المصغرة لهذا الملف GIF عالي الدقة ستكون غير متحركة.
وصف قصير
⧼wm-license-information-description⧽ |
English: Newton-Raphson method to find a zero of f(x) = x2 - 2
|
⧼wm-license-information-date⧽ | 2022 |
⧼wm-license-information-source⧽ | ⧼Wm-license-own-work⧽ |
⧼wm-license-information-author⧽ | 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)
ترخيص
|
تاريخ الملف
اضغط على زمن/تاريخ لرؤية الملف كما بدا في هذا الزمن.
زمن/تاريخ | صورة مصغرة | الأبعاد | مستخدم | تعليق | |
---|---|---|---|---|---|
حالي | ★ مراجعة معتمدة 14:45، 11 نوفمبر 2023 | 1٬920 × 1٬440 (1٫1 ميجابايت) | Pastakhov (نقاش | مساهمات) | Upload https://upload.wikimedia.org/wikipedia/commons/8/8c/Newton-Raphson_method.gif |
لا يمكنك استبدال هذا الملف.
وصلات
لا يوجد صفحات تصل لهذه الصورة.