Método numericos
Enviado por Bryan Ortiz • 2 de Septiembre de 2019 • Tutorial • 719 Palabras (3 Páginas) • 103 Visitas
Método de bisección
[pic 1]
Inicialmente el método se encuentra en un valor inferior en el intervalo para después acercarse y converger al punto, sin embargo, se puede ver que el método esta ondeado en torno al valor de la raíz y tarda en estabilizarse.
Método de la secante
[pic 2]
El método inicia con un valor cerca al límite superior, el método obtiene un valor erróneo para la raíz, una vez iniciado el procedimiento, el método converge rápidamente al valor de la raíz.
Método de Newton
[pic 3]
este método inicia con un valor cercano al límite superior antes de converger, sin embargo, su convergencia ocurre con menor rapidez y tarda en estabilizarse para el margen de error requerido.
Método de punto fijo
[pic 4]
este método no da un resultado correcto, la aplicación del método muestra que la raíz es -0.040659288315758844, lo cual es incorrecto.
Al comparar los métodos, podemos observar que el método más eficiente es el método de la secante pues en este necesitamos menos iteraciones para llegar a un margen de precisión deseado.
BISECCION
import matplotlib.pyplot as plt
def f(x):
y=230*x**4+18*x**3+9*x**2-211*x-9
return y
a=0
b=1
tol=1E-14
n0=500
i=1
fa=f(a)
fb=f(b)
p_array = []
while i<=n0:
p=a+(b-a)/2
p_array.append(p)
fp=f(p)
if fp==0 or (b-a)/2
print("La raiz es ",p)
break
i=i+1
if fa*fp>0:
a=p
fa=fp
else:
b=p
fb=fp
if i>=n0:
print("El metodo no converge ")
plt.axis([-1, i, 0.4, 1])
plt.plot(p_array, 'r--')
plt.show()
SECANTE
import matplotlib.pyplot as plt
def Secante(x0,x1,tol,N,f):
print(0,x0,x1)
i=1
while i<=n0:
x= x1 - (x1-x0)*f(x1)/(f(x1)-f(x0))
p_array.append(x)
print(i,x)
if abs(x-x1)
return x
i=i + 1
x0=x1 # redefinir x0
x1=x #redefinir x1
print('El metodo fracaso despues de %d iteraciones' %n0)
f=lambda x: 230*x**4+18*x**3+9*x**2-211*x-9
x0=2
x1=1
tol=1E-14
n0=500
p_array = []
x=Secante(x0,x1,tol,n0,f)
print()
print('La raiz es: ',x)
plt.axis([0, 10, 0.9, 1])
plt.plot(p_array, 'r--')
plt.show()
NEWTON
import matplotlib.pyplot as plt
p_array = []
def Newton(f, dfdx, x, eps):
f_value = f(x)
contador = 0
while abs(f_value) > eps and contador < 500:
...