Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- """
- Created on Sun Apr 26 19:02:24 2015
- @author: felipe
- """
- #metodo de newton
- from math import *
- from decimal import Decimal
- from sympy import diff
- x = Symbol('x')
- def error_abs(x, r):
- return abs(x-r)
- def col1(ei, ej):
- return ei / ej
- def col2(ei, ej):
- factor = Decimal((1 + sqrt(5)) / 2)
- return ei / (ej**factor)
- def col3(ei, ej):
- return ei / (ej**2)
- def tabla(lista):
- tabla=[]
- for i in range(0,len(lista)-1):
- fila = []
- fila.append(col1(lista[i],lista[i+1]))
- fila.append(col2(lista[i],lista[i+1]))
- fila.append(col3(lista[i],lista[i+1]))
- tabla.append[fila]
- print '[columna 1] , [columna 2] , [columna 3]'
- for i in tabla:
- print i
- def fsd(x):
- return Decimal(eval(ecuacion))
- def f1d(x):
- return Decimal(eval(primera_derivada))
- def newton(ini,ecuacion,n):
- primera_derivada = str(diff(ecuacion, x))
- i=0
- l=[]
- while i<n:
- N = ini - (fsd(ini)/f1d(ini))
- l.append(error_abs((float(ini - (fsd(ini)/f1d(ini)))), RAIZ))
- ini = N
- i += 1
- print 'El valor de la raiz aproximada es: ',N
- tabla(l)
- #Metodo Secante
- def secante(ini0,ini1,n,ecuacion):
- i=0
- N=0
- l=[]
- while i<n:
- N = Decimal(ini1 - (fsd(ini1)*(ini1 - ini0)/(fsd(ini1)-fsd(ini0))))
- #l.append(float((ini1 - (f(ini1)*(ini1 - ini0)/(f(ini1)-f(ini0))))))
- r = error_abs(float((ini1 - (f(ini1)*(ini1 - ini0)/(f(ini1)-f(ini0))))),RAIZ)
- l.append(r)
- ini0 = Decimal(ini1)
- ini1 = Decimal(N)
- i += 1
- print 'El valor de la raiz aproximada es: ',N
- tabla(l)
- #Metodo biseccion
- def biseccion(aValor,bValor,tolerancia,ecuacion):
- cValor = 0
- i=0
- l=[]
- while Decimal(((bValor-aValor)/2)) > tolerancia:
- cValor = Decimal((aValor + bValor)/2)
- fc = f(cValor)
- r = error_abs(float(cValor,RAIZ))
- l.append(float(cValor))
- print"%.4f %.4f (%.4f * %.8f) %.4f" % (aValor, bValor, f(aValor), cValor, fc)
- if(float(fc) == 0.0):
- c=cValor
- print "La raíz buscada es: %.8f" %cValor
- break
- i = i +1
- if (Decimal(f(aValor)*fc) < 0):
- bValor = cValor
- c = cValor
- print "multiplicacion menor que 0"
- else:
- aValor = cValor
- c = cValor
- print "multiplicacion mayor que 0"
- print "Valor de la raiz ", Decimal(cValor)
- #Metodo punto fijo
- def puntofiyi(ini,ecuacion,n):
- i=0
- N=0
- l=[]
- while i<n:
- N = fsd(ini)
- l.append(float(error_abs((fsd(ini)),RAIZ)))
- ini = N
- i+=1
- print 'El valor de la raiz aproximada es: ',N
- tabla(l)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement