Equació de segon grau

Dissenyeu les funcions següents i deseu-les al fitxer eq_2n_grau.py:

  1. solucions_eq_2n_grau() que rebi tres paràmetres a , b i c i retorni les dues arrels reals de la paràbola \(y=ax^2+bx+c\). Suposeu que la funció té exactament dues solucions reals.

    Per exemple:

    >>> a, b, c = 1, -4, 3
    >>> x1, x2 = solucions_eq_2n_grau(a, b, c)
    >>> a*x1**2+b*x1+c == 0
    True
    >>> a*x2**2+b*x2+c == 0
    True
    

    Nota

    Trobareu més jocs de proves al fitxer tests-solucions_eq_2n_grau.txt

  2. te_arrels_reals_eq_2n_grau() que donats tres paràmetres a, b i c, retorni True si l’equació de segon grau \(y=ax^2+bx+c\) té arrels reals o False en cas contrari.

    Per exemple:

    >>> a, b, c = 1, -4, 3
    >>> r = te_arrels_reals_eq_2n_grau(a, b, c)
    >>> r
    True
    
    >>> a, b, c = 2, -4, 3
    >>> r = te_arrels_reals_eq_2n_grau(a, b, c)
    >>> r
    False
    

    Nota

    Trobareu més jocs de proves al fitxer tests-te_arrels_reals_eq_2n_grau.txt

  3. es_arrel_eq_2n_grau() que rebi cinc paràmetres a, b, c, x i eps i retorni True si x és una arrel de l’equació de segon grau \(y=ax^2+bx+c\) o False en cas contrari. Les comparacions entre nombres reals s’han de fer amb la tolerància eps donada.

    Per exemple:

    >>> es_arrel_eq_2n_grau(3, -5, 1, 1.434, 1e-1)
    True
    >>> es_arrel_eq_2n_grau(3, -5, 1, 1.434, 1e-2)
    True
    >>> es_arrel_eq_2n_grau(3, -5, 1, 1.434, 1e-3)
    True
    >>> es_arrel_eq_2n_grau(3, -5, 1, 1.434, 1e-4)
    False
    

    Nota

    Trobareu més jocs de proves al fitxer tests-es_arrel_eq_2n_grau.txt

Solució

Disposeu d’una solució al fitxer eq_2n_grau.py.