3260 - Invers
Cerința
Veșnicul Gigel vrea să dea la Facultatea de Informatică din Iași pentru că e #ceaMaiTare. De asta s-a apucat de probleme pe pbinfo și a dat peste următoarea problema ce i-a plăcut atât de mult încât vă provoacă și pe voi să o rezolvați:
Se dă funcția și o valoare . Știind că funcția este strict crescătoare pe intervalul , se cere să se gasească pentru ce avem că (aproximare cu 8 zecimale).
Date de intrare
Se citește de la tastatura valoarea .
Date de ieșire
0<= x <1 afișat cu o aproximare de 8 zecimale precise.
Restricții și precizări
- pentru orice 0<=y<2.7 vom avea ca 0<=x<1
Exemplul 1
Intrare:
1.34
Ieșire:
0.35083179
Exemplul 2
Intrare
3
Ieșire
Valoarea lui y nu respectă restricțiile.<syntaxhighlight lang="python3" line="1">
import math
def f(x):
return math.sin(x) + math.sin(2*x) + x
def verifica_restrictie(y):
return 0 <= y <= 2.7
def aproximare_bisectie(y):
epsilon = 1e-8 # Precizia dorită a, b = 0, 1 # Intervalul [0, 1)
while b - a > epsilon: mid = (a + b) / 2 if f(mid) < y: a = mid else: b = mid
return (a + b) / 2
def main():
y = float(input("Introduceți valoarea y: ")) if verifica_restrictie(y): rezultat = aproximare_bisectie(y) print(f"{rezultat:.8f}") else: print("Valoarea lui y nu respectă restricțiile.")
if __name__ == "__main__":
main()
</syntaxhighlight>