Advertisement
Guest User

Untitled

a guest
Apr 27th, 2015
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.56 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Sun Apr 26 19:02:24 2015
  4.  
  5. @author: felipe
  6. """
  7.  
  8. #metodo de newton
  9.  
  10. from math import *
  11. from decimal import Decimal
  12. from sympy import diff
  13. x = Symbol('x')
  14.  
  15. def error_abs(x, r):
  16. return abs(x-r)
  17.  
  18. def col1(ei, ej):
  19. return ei / ej
  20.  
  21. def col2(ei, ej):
  22. factor = Decimal((1 + sqrt(5)) / 2)
  23. return ei / (ej**factor)
  24.  
  25. def col3(ei, ej):
  26. return ei / (ej**2)
  27.  
  28. def tabla(lista):
  29. tabla=[]
  30. for i in range(0,len(lista)-1):
  31. fila = []
  32. fila.append(col1(lista[i],lista[i+1]))
  33. fila.append(col2(lista[i],lista[i+1]))
  34. fila.append(col3(lista[i],lista[i+1]))
  35. tabla.append[fila]
  36. print '[columna 1] , [columna 2] , [columna 3]'
  37. for i in tabla:
  38. print i
  39.  
  40. def fsd(x):
  41. return Decimal(eval(ecuacion))
  42.  
  43. def f1d(x):
  44. return Decimal(eval(primera_derivada))
  45.  
  46. def newton(ini,ecuacion,n):
  47.  
  48. primera_derivada = str(diff(ecuacion, x))
  49. i=0
  50. l=[]
  51. while i<n:
  52. N = ini - (fsd(ini)/f1d(ini))
  53. l.append(error_abs((float(ini - (fsd(ini)/f1d(ini)))), RAIZ))
  54. ini = N
  55. i += 1
  56. print 'El valor de la raiz aproximada es: ',N
  57. tabla(l)
  58.  
  59. #Metodo Secante
  60.  
  61. def secante(ini0,ini1,n,ecuacion):
  62. i=0
  63. N=0
  64. l=[]
  65. while i<n:
  66. N = Decimal(ini1 - (fsd(ini1)*(ini1 - ini0)/(fsd(ini1)-fsd(ini0))))
  67. #l.append(float((ini1 - (f(ini1)*(ini1 - ini0)/(f(ini1)-f(ini0))))))
  68. r = error_abs(float((ini1 - (f(ini1)*(ini1 - ini0)/(f(ini1)-f(ini0))))),RAIZ)
  69. l.append(r)
  70. ini0 = Decimal(ini1)
  71. ini1 = Decimal(N)
  72. i += 1
  73.  
  74. print 'El valor de la raiz aproximada es: ',N
  75. tabla(l)
  76.  
  77. #Metodo biseccion
  78.  
  79. def biseccion(aValor,bValor,tolerancia,ecuacion):
  80. cValor = 0
  81. i=0
  82. l=[]
  83. while Decimal(((bValor-aValor)/2)) > tolerancia:
  84. cValor = Decimal((aValor + bValor)/2)
  85. fc = f(cValor)
  86. r = error_abs(float(cValor,RAIZ))
  87. l.append(float(cValor))
  88. print"%.4f %.4f (%.4f * %.8f) %.4f" % (aValor, bValor, f(aValor), cValor, fc)
  89. if(float(fc) == 0.0):
  90. c=cValor
  91. print "La raíz buscada es: %.8f" %cValor
  92. break
  93. i = i +1
  94. if (Decimal(f(aValor)*fc) < 0):
  95. bValor = cValor
  96. c = cValor
  97. print "multiplicacion menor que 0"
  98. else:
  99. aValor = cValor
  100. c = cValor
  101. print "multiplicacion mayor que 0"
  102. print "Valor de la raiz ", Decimal(cValor)
  103.  
  104. #Metodo punto fijo
  105.  
  106. def puntofiyi(ini,ecuacion,n):
  107.  
  108. i=0
  109. N=0
  110. l=[]
  111. while i<n:
  112. N = fsd(ini)
  113. l.append(float(error_abs((fsd(ini)),RAIZ)))
  114. ini = N
  115. i+=1
  116. print 'El valor de la raiz aproximada es: ',N
  117. tabla(l)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement