Ficheiro:Metodo de Newton anime.gif

Metodo_de_Newton_anime.gif(300 × 300 píxeles; tamaño do ficheiro: 31 kB; tipo MIME: image/gif, en bucle, 7 fotogramas, 14 s)

Resumo

Descrición
Português: Animação da interpretação geométrica do método de Newton.
English: Animation of the geometric interpretation of the Newton's method.
Data
Orixe Obra propia
Autoría Picknick

Código fonte

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

'''
Este trabalho está licenciado sob a Licença Creative Commons Atribuição-CompartilhaIgual 3.0 Não Adaptada. Para ver uma cópia desta licença, visite https://creativecommons.org/licenses/by-sa/3.0/ ou envie uma carta para Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.

Author: Picknick - 08/2016
'''

import numpy as np
import scipy as sci
from scipy import optimize
import matplotlib.pyplot as plt
import matplotlib.animation as animation

#canvas
fig = plt.figure(figsize=(3,3), dpi=300, linewidth=0.0, facecolor="white")
#axes definitions
ax = plt.subplot(1,1,1)
ax.set_xlim(-1,3)
ax.set_ylim(-5,30)

ax.set_xticks([])
ax.set_yticks([])

ax.set_frame_on(False)

a = 0.25
b = 2.5

def fun(x):
    return (x+0.5)**3-1

def dfun(x):
    return 3*(x+0.5)**2

def rtan(x,x0):
    return dfun(x0)*(x-x0) + fun(x0)

x = np.array([0.,0.,0.])
x[0] = 2.15
x[1] = x[0] - fun(x[0])/dfun(x[0])
x[2] = x[1] - fun(x[1])/dfun(x[1])

def init():
    global ax
    ax.cla()

    ax.set_xlim(-1,3)
    ax.set_ylim(-5,30)

    ax.set_xticks([])
    ax.set_yticks([])

    ax.set_frame_on(False)

    ax.arrow(-1, 0, 4, 0, length_includes_head=True, facecolor='black', head_length=0.1, head_width=0.5)
    ax.text(2.75,-3.5,r"$x$")

    ax.arrow(0, -2, 0, 31, length_includes_head=True, facecolor='black', head_length=0.5, head_width=0.1)
    ax.text(-0.25, 26, r"$y$")

    xx = np.linspace (a, b)
    ax.plot(xx, fun(xx), lw=1.5)

    xstar = sci.optimize.fsolve(fun,a)
    ax.plot ([xstar, xstar], [0, 0], 'ro', markersize=3)
    ax.text (xstar - 0.25, 0.5, r"$x\!^{*}$")

def update(i):
    global ax, x
    print(i)
    if (i == 0):
        a = x[0]
        ax.plot ([0, a], [fun(a), fun(a)], color='gray', linestyle='dashed')
        ax.plot ([a, a], [fun(a), 0], color='gray', linestyle='dashed')
        ax.plot (a, fun(a), 'ko', markersize=3)
        ax.plot ([a, a], [-0.5, 0.5], color='black')
        ax.plot ([-0.1, 0.1], [fun(a), fun(a)], color='black')
        ax.text (-1, fun(a)-0.1, r"$f(x^{(1)})$")
        ax.text (a - 0.25, -3.5, r"$x^{(1)}$")
        
    if (i == 1):
        xx = np.linspace(x[0]-0.9,x[0]+0.4)
        ax.plot(xx,rtan(xx,x[0]),color="gray",lw=0.75)

    if (i == 2):
        ax.plot ([x[1], x[1]], [-0.5, 0.5], color='black')
        
    if (i == 3):
        a = x[1]
        ax.plot ([0, a], [fun(a), fun(a)], color='gray', linestyle='dashed')
        ax.plot ([a, a], [fun(a), 0], color='gray', linestyle='dashed')
        ax.plot (a, fun(a), 'ko', markersize=3)
        ax.plot ([-0.1, 0.1], [fun(a), fun(a)], color='black')
        ax.text (-1, fun(a)-0.1, r"$f(x^{(2)})$")
        ax.text (a - 0.25, -3.5, r"$x^{(2)}$")
        
    if (i == 4):
        xx = np.linspace(x[1]-0.6,x[1]+0.7)
        ax.plot(xx,rtan(xx,x[1]),color="gray",lw=0.75)
        
    if (i == 5):
        ax.plot ([x[2], x[2]], [-0.5, 0.5], color='black')

    if (i == 6):
        a = x[2]
        ax.plot ([a, a], [-0.5, 0.5], color='black')
        ax.text (a - 0.25, -3.5, r"$x^{(3)}$")

anime = animation.FuncAnimation(fig, update, np.arange(7), interval=2000, repeat=True, init_func=init, repeat_delay=1000)
anime.save('metodo_de_Newton_anime.gif', writer='imagemagick')

Licenza

Eu, como posuidor dos dereitos de autor desta obra, pola presente publícoa baixo a seguinte licenza:
w:gl:Creative Commons
recoñecemento compartir igual
Este ficheiro está licenciado baixo a licenza Creative Commons recoñecemento compartir igual 4.0 internacional.
Vostede é libre de:
  • compartir – copiar, distribuír e difundir a obra
  • facer obras derivadas – adaptar a obra
Baixo as seguintes condicións:
  • recoñecemento – Debe indicar a debida atribución de autoría, fornecer unha ligazón á licenza e indicar se se realizaron cambios. Pode facer isto de calquera forma razoable, mais non nunha forma que indique que quen posúe a licenza apoia ou subscribe o seu uso da obra.
  • compartir igual – Se altera, transforma ou amplía este contido, debe publicar as súas contribucións baixo a mesma licenza ou outra compatible á orixinal.

Pés de foto

Engada unha explicación dunha liña do representa este ficheiro

Elementos retratados neste ficheiro

representa a

Historial do ficheiro

Prema nunha data/hora para ver o ficheiro tal e como estaba nese momento.

Data/HoraMiniaturaDimensiónsUsuarioComentario
actual2 de setembro de 2016 ás 00:32Miniatura da versión ás 00:32 do 2 de setembro de 2016300 × 300 (31 kB)PicknickUser created page with UploadWizard

A seguinte páxina usa este ficheiro:

Uso global do ficheiro

Os seguintes wikis empregan esta imaxe: