• Lenguaje

    Python

  • Descripción

    Encuentra la solución de f(x) = f(x)=x³+2x²+10x-20 con el método de la secante

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# Este codigo esta programado para la version 2.7.12 en plataforma Linux.
#
# La sintaxis de python es variable en cada version, por lo que no se
# recomienda copiar este codigo ya que es muy probable que no funcione y
# tenga que hacerle ajustes.

import math, sys

ITERACIONES_MAXIMAS = 100
TOLERANCIA = 0

def f (x):
    return x*x*x + 2.0*x*x + 10.0*x - 20

n = 1
print (u'M\u00E9todo de la Secante para el c\u00E1lculo de la funci\u00F3n: f(x)=x\u00B3+2x\u00B2+10x-20\n'.encode('utf-8'))
x0 = float (input (u'Ingrese la aproximaci\u00F3n inicial x0: '.encode('utf-8')))
x1 = float (input (u'Ingrese la aproximaci\u00F3n inicial x1: '.encode('utf-8')))
print ('\n{0!s:20}{1!s:20}{2!s:20}'.format ('n', 'Xn', 'Error'))
print ('0                   ' + repr (x0))
err = sys.float_info.max
while err>TOLERANCIA and n<=ITERACIONES_MAXIMAS:
    err = math.fabs(x0-x1)
    print ('{0!r:20}{1!r:20}{2!r:20}'.format (n, x1, err))
    if err != 0:
        temp = x1
        x1 = x1 - (x1 - x0) * f(x1) / (f(x1) - f(x0))
        x0 = temp
    n += 1
print ('')
if n<ITERACIONES_MAXIMAS:
    print (u'La soluci\u00F3n es: '.encode('utf-8') + repr (x1))
else:
    print (u'No se encontr\u00F3 la ra\u00EDz: cambiar aproximaciones iniciales o aumentar ITERACIONES_MAXIMAS'.encode('utf-8'))