< Zpět na seznam úloh

13 Kořeny kvadratické rovnice

var datasets = [
  {argv: [1, 0, -1], out: [-1, 1]},
  {argv: [1, -2, 1], out: 1},
  {argv: [1, 0, 1], out: null},
  {argv: [0, 1, 1], out: -1},
  {argv: [0, 0, 1], out: null},
  {argv: [1, 6, -391], out: [-23, 17]},
]
var names = ['a', 'b', 'c'];

Dostáváme kvadratickou rovnici ve tvaru a * x**2 + b * x * c == 0 a máme najít všechna její řešení.

Program dostane parametry a, b, c. Pokud rovnice platí pro dva různé kořeny x, má vrátit oba, v pořadí od menšího k většímu. Pokud je kořen jeden (neboli, jsou oba kořeny stejné), má vrátit jen jedno číslo. Jinak má vrátit hodnotu None.

from math import sqrt
def main(a, b, c):
  d = b**2 - 4*a*c
  return (-b - sqrt(d)) / (2 * a), (-b + sqrt(d)) / (2 * a)

Rada: řešení kvadratické rovnice samo o sobě asi není žádná chytrost. Zajímavé je, že váš program může vrátit dvě hodnoty oddělené čárkou. A taky je zajímavé, že umocňování se píše jako **.