3. Zones d’ajust (2,5 punts)¶
Es vol estudiar en quins punts enters una funció f queda prou ben
ajustada al valor d’entrada. Per fer-ho, donada una funció f i una tolerància tol, definim la puntuació d’un punt x com:
Donat un centre c, definim la zona al voltant del centre c com el conjunt d’enters que estan a l’interval \([c-5,c+5]\). Per exemple, la zona al voltant del centre 4 estaria formada pels enters -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
Dissenya la funció següent desa-la al fitxer
zones.py.- analitza_zona(f, c, tol)¶
Analitza la zona al voltant del centre c per trobar quants valors tenen puntuació estrictament positiva i quina és la puntuació més alta.
- Paràmetres:
- Tipus de retorn:
- Retorna:
una tupla formada per dos elements:
el nombre de punts dins la zona al voltant de c amb puntuació estrictament positiva i calculada amb tolerància tol y per la funció f.
la puntuació més alta entre tots els punts de la zona analitzada arrodonida a dos decimals.
Els següents doctests mostren exemples del que ha de fer la funció:
>>> def f(x): ... return 2*x/3 >>> analitza_zona(f, 2, 0.8) (5, 0.8) >>> analitza_zona(f, -6, 0.8) (2, 0.47)
Disposes de més tests al fitxer
test-analitza-zona.txtDissenya la funció següent desa-la al fitxer
zones.py.- busca_zona(f, c, tol, min_accept)¶
Busca la primera zona que tingui com a mínim min_accept punts amb puntuació estrictament positiva.
La cerca analitza zones centrades al voltant dels centres \(c, c + 1, c + 2 \dots\) fins que troba una amb com a mínim min_accept punts que compleixin la condició anterior.
- Paràmetres:
- Tipus de retorn:
- Retorna:
una tupla de dos elements formada per:
el centre de la primera zona trobada amb un mínim de min_accept punts amb puntuació estrictament positiva
la millor puntuació entre els punts d’aquesta zona
Es pot suposar que sempre existeix una zona amb almenys min_accept punts acceptables.
Aquesta funció ha de cridar la funció
analitza_zona().Els següents doctests mostren exemples del que ha de fer la funció:
>>> def f(x): ... return 2 * x / 3 # centre -6, tolerància 0.8, mínim 5 punts puntuació > 0 >>> busca_zona(f, -6, 0.8, 5) (-3, 0.8) # centre -10, tolerància 1.5, mínim 2 punts puntuació > 0 >>> busca_zona(f,-10,1.5,2) (-8, 0.5)
Disposes de més tests al fitxer
test-busca-zona.txt.Disposes de solucions al fitxer
zones.py.