def find_interval(mesh,x):
'''This function finds the interval containing x
according to the following rules,
mesh is an ordered list with n numbers
return 0 if x < mesh[0]
return n if mesh[n-1] < x
return k if mesh[k-1] <= x < mesh[k]
return n-1 if mesh[n-2] <= x <= mesh[n-1]
This function does a Linear search.
08/29/2012
'''
for n in range(len(mesh)):
for k in range(len(mesh)):
if x == mesh[n]:
print "Found x at index:"
return n
elif x<mesh[n]:
return 0
elif mesh[n-1]<x:
return n
elif mesh[n-2]<=x<=mesh[n-1]:
return n-1
elif mesh[k-1]<=x<mesh[k]:
return k
mesh = [0, 0.1, 0.25, 0.5, 0.6, 0.75, 0.9, 1]
print mesh
print find_interval(mesh, -1)
print find_interval(mesh, 0)
print find_interval(mesh, 0.1)
print find_interval(mesh, 0.8)
print find_interval(mesh, 0.9)
print find_interval(mesh, 1)
print find_interval(mesh, 1.01)
Output:
[0, 0.100000000000000, 0.250000000000000, 0.500000000000000,
0.600000000000000, 0.750000000000000, 0.900000000000000, 1]
0
Found x at index:
0
2
6
-1
-1
0
I don't think the output is correct. Can anyone help me fix it? Thanks.