3260 - Invers
De la Universitas MediaWiki
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
Exemplu 1
Intrare 1.34
Ieșire 0.35083179
Exemplu 2
Intrare 3
Ieșire Valoarea lui y nu respectă restricțiile.
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()