import math def f(x): return x**2 - 3 * math.cos(1/x) def df(x): return 2*x - 3 * math.sin(1/x) / x**2 def bisezione(f, a, b): for i in range(10): x = (a + b)/2 sign = f(x)*f(a) if sign < 0: b = x elif sign > 0: a = x else: print x, f(x) return x print x, f(x) return x def regula_falsi(f, a, b): for i in range(10): x = a - f(a) * (a - b)/(f(a) - f(b)) sign = f(a)*f(x) if sign < 0: b = x elif sign > 0: a = x else: print x, f(x) return x print x, f(x) return x def corde(f, a, b): m = (f(a) - f(b))/(a - b) for i in range(10): x = a - f(a)/m sign = f(a)*f(x) if sign < 0: b = x elif sign > 0: a = x else: print x, f(x) return x print x, f(x) return x def secanti(f, a, b): for i in range(10): if f(a) == 0: break x = a - f(a) * (a - b)/(f(a) - f(b)) a = b b = x print a, f(a) return a def deriva(f, x0): x1 = x0 - 1e-9 df = (f(x0) - f(x1))/(x0 - x1) return df def newton(f, df, a, b): for i in range(10): x = a - f(a)/df(a) sign = f(a)*f(x) if sign < 0: b = x elif sign > 0: a = x else: print x, f(x) return x print x, f(x) return x """ print "Bisezione" bisezione(f, 0.1, 1.) print "Regula Falsi" regula_falsi(f, 0.1, 1.) print "Corde" corde(f, 1., 0.1) print "Secanti" secanti(f, 0.1, 1.) """ print "Newton" newton(f, df, 0.4, 1.) |
Ultima modifica 08/03/2004
Per ogni suggerimento/errore contattatemi liberamente: Matteo Bertini
This work is licensed under a Creative Commons License.