Ricerca sequenziale
x = 10
if(x < 1):
y = 0
else:
y = 1
passo = 0.1 * x
ER = 0.001 * x
while(True):
y += passo
y2 = y**2
print("%10f %10f %10f"
%(passo, y, y2))
if(abs(x - y2) < ER):
break
elif(y2 > x):
y -= passo
passo /= 10
1.000000 2.000000 4.000000
1.000000 3.000000 9.000000
1.000000 4.000000 16.000000
0.100000 3.100000 9.610000
0.100000 3.200000 10.240000
0.010000 3.110000 9.672100
0.010000 3.120000 9.734400
0.010000 3.130000 9.796900
0.010000 3.140000 9.859600
0.010000 3.150000 9.922500
0.010000 3.160000 9.985600
0.010000 3.170000 10.048900
0.001000 3.161000 9.991921
Ricerca binaria
x = 10
if(x < 1):
yMin = 0
yMax = 1
else:
yMin = 1
yMax = x
ER = 0.001 * x
while(True):
y = (yMin+yMax)/2
y2 = y**2
print("%10f %10f"
%(y, y2))
if(abs(x-y2) < ER):
break
elif(y2 < x):
yMin = y
elif(y2 > x):
yMax = y
5.500000 30.250000
3.250000 10.562500
2.125000 4.515625
2.687500 7.222656
2.968750 8.813477
3.109375 9.668213
3.179688 10.110413
3.144531 9.888077
3.162109 9.998936