xxxxxxxxxx
def f(x):
return x*x-2
def dicho(n):
a = 0
b = 10
for i in range(0,n):
c = (a+b)/2.0
if f(c) < 0:
a = c
else:
b = c
return [a,b]
print(dicho(10))
print(dicho(20))
print(dicho(25))
print(dicho(30))
print(dicho(40))
print(dicho(43))
xxxxxxxxxx
def f(x):
return x*x-2
def t(x):
return x**5-x-1
def dicho(g,a,b,n):
for i in range(0,n):
c = (a+b)/2.0
if g(a)*g(c) > 0:
a = c
else:
b = c
return [a,b]
print(dicho(f,0,10,50))
print(dicho(t,0,10,50))
xxxxxxxxxx
def f(x):
return x*x-2
def secante(n):
a = 0
b = 10
for i in range(0,n):
c = a-f(a)*(b-a)*1.0/(f(b)-f(a))
if f(c) < 0:
a = c
else:
b = c
return c
print(secante(10))
print(secante(20))
print(secante(30))
print(secante(40))
print(secante(94))
print(secante(95))
xxxxxxxxxx
def f(x):
return x*x-2
def t(x):
return x**3-2
def secante(f,a,b,n):
for i in range(0,n):
c = a-f(a)*(b-a)*1.0/(f(b)-f(a))
if f(c)*f(a) < 0:
a = c
else:
b = c
return c
print(secante(f,0,10,50))
print(secante(t,0,2,200))
xxxxxxxxxx
def f(x):
return x*x-2
def newton(n):
a = 2
for i in range(0,n):
a = -1.0*f(a)/(2*a)+a
return a
print(newton(2))
print(newton(3))
print(newton(4))
print(newton(5))
xxxxxxxxxx
def f(x):
return x*x-2
def t(x):
return x**5-x-1
def deriv(f,a):
e = 10**(-9)
return (f(a+e)-f(a))/e
def newton(f,a,n):
s = a
for i in range(0,n):
s = -f(s)/deriv(f,s)+s
return s
print(newton(f,2,5))
print(newton(t,2,10))