ملف:Newton-Raphson method.gif

الملف الأصلي(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)

ترخيص


I, the copyright holder of this work, hereby publish it under the following license:

تاريخ الملف

اضغط على زمن/تاريخ لرؤية الملف كما بدا في هذا الزمن.

زمن/تاريخصورة مصغرةالأبعادمستخدمتعليق
حالي ★ مراجعة معتمدة
14:45، 11 نوفمبر 2023
تصغير للنسخة بتاريخ 14:45، 11 نوفمبر 20231٬920 × 1٬440 (1٫1 ميجابايت)Pastakhov (نقاش | مساهمات)Upload https://upload.wikimedia.org/wikipedia/commons/8/8c/Newton-Raphson_method.gif

لا يوجد صفحات تصل لهذه الصورة.