< Zpět na seznam úloh

Z7 Hloupá odmocnina

var names = ["x", "leve", "prave"]
var mainFunction = "odmocni"
var datasets = [
  {argv: [16, 0, 10], out: 4},
  {argv: [17, 0, 10], out: 4.123105625617661},
  {argv: [0.2, 0, 1], out: 0.4472135954999579},
  {argv: [1000, 10, 100], out: 31.622776601683793},
  {argv: [123456, 1, 2], out: 2},
]

Vašim úkolem je napsat funkci odmocnina(y, leve, prave), která odhaduje druhou odmocninu zadaného čísla někde v intervalu leve a prave.

V Pythonu to jde vyřešit na jeden řádek (jako v ukázkovém kódu), ale váš program nesmí výsledek přímo spočítat. Místo toho má postupovat takhle:

Jestli je výsledek už "dost blízko", poznáte snadno funkcí abs pro absolutní hodnotu, například abs(x**2 - y) < 0.001.

Můžete případně využít toho, že odmocnina je křivka prohnutá nahoru, abyste se k výsledku dostali dřív: hodnota x nemusí být přesně v polovině. Když ji zvolíte třeba v 45% nebo v 60% mezi leve a prave, tak program poběží rychleji nebo pomaleji.

Jsou mnohem lepší způsoby, jak odmocňovat. Tenhle je ale výživný z hlediska programování a nepotřebuje žádné matematické triky.

def odmocni(y, leve, prave):
  return y ** 0.5

print(odmocni(16, 0, 10))
print(odmocni(17, 0, 10))
print(odmocni(0.2, 0, 1))
print(odmocni(1000, 10, 100))
print(odmocni(123456, 1, 2))