Metodo De Steffensen
Enviado por seleneygf • 23 de Septiembre de 2014 • 325 Palabras (2 Páginas) • 659 Visitas
#! /usr/bin/env python
#-*- coding: utf-8 -*-
# Autor: Dolores GarcíaKarla Rubí
# Metodo: Steffensen
print '\t************** Metodo de Steffenson ***************\n'
import numpy as np
import matplotlib.pyplot as plt
from math import *
from sympy import *
iInicial = float(raw_input("Introduce el intervalo inicial: "))
iFinal = float(raw_input("Introduce el intervalo final: "))
x = np.linspace(iInicial, iFinal,500)
fx = input("Introduce una funcion donde x es la variable independiente: ")
plt.xlabel('x')
plt.ylabel('y')
plt.title('Polinomio')
plt.plot(x, fx, 'g.')
plt.show()
#.....Graficamos f(x) para ver los puntos que estan cerca de la raiz
funintroducida = str(raw_input('\n Función f(x): '))
fnx = 'def function(x): \n' + ' return ' + funintroducida
exec fnx #La función exec le dice al intérprete que haga una llamada a si mismo y ejecute el contenido de la cadena pasada como argumento.
#.....Damos la tolerancia
tolerancia = float(raw_input('\n Tolerancia: '))
while tolerancia>=1 or tolerancia<0:
tolerancia = float(raw_input('Tolerancia: '))
#.....Introduzco g(x)
x = Symbol('x')
gx = str(raw_input('\n Función g(x) para derivar y probar el TPF: '))
fgx = 'def functiong(x): \n' + ' return ' + gx
exec fgx
#.....Damos un punto inicial cerca de la raiz y checamos el Teorema de punto fijo(segunda condición)
xi = float(raw_input("\n Punto inicial: "))
def derivada(xi):
deri = diff(gx, x)
deriEvaluada = deri.evalf(subs={x:xi})
return deriEvaluada
print "\n Derivada evaluada en el punto inicial: " , derivada(xi)
#if abs(derivada(pInicial))>=1:
# print 'Corrige la g(x) pues la que diste no cumple el Teorema de punto fijo'
# break
#.....Verificado lo anterior comenzamos con las iteraciones
punto,itera = 10.0,0
gx = input('\n De nuevo escribe la función g(x) para evaluarla en los puntos dados: ') #Hay q escribirla bien :S si (x+1)**(1/3.0)
def y():
y= gx.evalf(subs={x:xi})
return y
def z():
z= gx.evalf(subs={x:y0})
return z
cuenta = 0
print '{0}\t{1}\t{2}\t{3}\t{4}'.format('Iteracion','xi ','yi ','zi ','Xi+1 ', 'Error abs ')
while (abs(xi-punto)
...