def exo_racines_degre2(parametre):
    '''exercice recherche de racines second degré'''

    question = ""
    exo=[]
    cor=[]
    #intervalle pour les racines entières ou fractionnaire
    rac_min=-10
    rac_max=10
    #denominateur maximmum pour les racines fractionnaires
    denom_max=denom1=12
    #Valeurs absolues maximales des coefficients d'un polynôme quelconque
    abs_a=1
    abs_b=10
    abs_c=10
    #X est le polynome P=x pour faciliter la construction des polynômes,
    inconnues=['x','y','z','t']
    nom_poly=['P','Q','R','S']

    exo.append(u"Résoudre les équations suivantes :")
    cor.append(u"Résoudre les équations suivantes :")
    exo.append("\\begin{enumerate}")
    cor.append("\\begin{enumerate}")


    #Racines entières
    nomP='P'
    var=inconnues[randrange(4)]
    X=Polynome({1:1},var)
    P=poly_racines_entieres(rac_min,rac_max,X)

    exo.append("\\item $%s=0$\\par"%(P(var)))
    cor.append("\\item $%s=0$\\par"%(P(var)))
    cor=redaction_racines(P,nomP,var,cor)

    #Racines fractionnaires
    nomP='P'
    var=inconnues[randrange(4)]
    X=Polynome({1:1},var)
    P=poly_racines_fractionnaires(rac_min,rac_max,denom_max,X)

    exo.append("\\item $%s=0$\\par"%(P(var)))
    cor.append("\\item $%s=0$\\par"%(P(var)))
    cor=redaction_racines(P,nomP,var,cor)

    #Racines quelconques
    nomP='P'
    var=inconnues[randrange(4)]
    X=Polynome({1:1},var)
    P=poly_racines_quelconques(abs_a,abs_b,abs_c,X)

    exo.append("\\item $%s=0$\\par"%(P(var)))
    cor.append("\\item $%s=0$\\par"%(P(var)))
    redaction_racines(P,nomP,var,cor)

    exo.append("\\end{enumerate}")
    cor.append("\\end{enumerate}")
    return exo,cor,question
def exo_tableau_de_signe(parametre):
    #intervalle pour les racines entières ou fractionnaire
    rac_min=-10
    rac_max=10
    #denominateur maximmum pour les racines fractionnaires
    denom_max=denom1=12
    #Valeurs absolues maximales des coefficients d'un polynôme quelconque
    abs_a=1
    abs_b=10
    abs_c=10
    #X est le polynome P=x pour faciliter la construction des polynômes, TODO : changer  l'inconnue
    inconnues=['x','y','z','t']
    nom_poly=['P','Q','R','S']
    borneinf=-5#float("-inf")
    bornesup=5#float("inf")
    var="x"
    X=Polynome({1:1},var=var)
    Poly=[poly_racines_entieres(rac_min,rac_max,X),
          poly_racines_fractionnaires(rac_min,rac_max,denom1,X),
          poly_racines_quelconques(abs_a,abs_b,abs_c,X)]
    intervalles=[[0,5],[-5,5],[float("-inf"),float("inf")]]
    
    question = ""
    exo=["\\begin{enumerate}"]
    cor=["\\begin{enumerate}"]
    nomP="P"
    for i in range(len(Poly)):
        P=Poly[i]
        borneinf,bornesup=intervalles[i]
        if borneinf==float("-inf") and bornesup==float("inf"):
            TeXintervalle="\\mathbb R"
        else:
            if borneinf!=float("-inf"):
                TeXintervalle="["
            else:
                TeXintervalle="]"
            TeXintervalle+="%s~;~%s"%(TeX(borneinf),TeX(bornesup))
            if bornesup==float("inf"):
                TeXintervalle+="["
            else:
                TeXintervalle+="]"
        exo.append(u"\\item Étudier le signe du polynôme $%s=%s$ sur $I=%s$." % (nomP,P,TeXintervalle))
        cor.append(u"\\item Étudier le signe du polynôme $%s=%s$ sur $I=%s$.\\par" % (nomP,P,TeXintervalle))

        delta,simplrac,racines,str_racines,factorisation=factorisation_degre2(P,factorisation=False)
        redaction_racines(P,nomP,var,cor)
        tableau_de_signe(P,nomP,delta,racines,cor,borneinf,bornesup,detail=False)
    exo.append("\\end{enumerate}")
    cor.append("\\end{enumerate}")
    return exo,cor,question
def exo_factorisation_degre2(parametre):
    '''exercice recherche de racines second degré'''

    question = ""
    exo=[]
    cor=[]
    #intervalle pour les racines entières ou fractionnaire
    rac_min=-10
    rac_max=10

    #X est le polynome P(x)=x pour faciliter la construction des polynômes,
    inconnues=['x','y','z','t']
    nom_poly=['P','Q','R','S']

    exo.append(u"Factoriser les polynômes suivants :")
    #cor=[]u"Factoriser les polynômes suivants :"]
    exo.append("\\begin{enumerate}")
    cor.append("\\begin{enumerate}")

####identites remarquables

    nomP=nom_poly[randrange(4)]
    var=inconnues[randrange(4)]
    X=Polynome({1:1},var)
    P,sgns=poly_id_remarquables(rac_min,rac_max,X)#sgns=-2,0 ou 2
    exo.append(u"\\item Factoriser  $%s(%s)=%s$ à l'aide d'une identité remarquable."% (nomP,var,P(var)))
    cor.append("\\item Factoriser $%s(%s)=%s$"% (nomP,var,P(var)))

    factorisation,racines=factorise_identites_remarquables(P,sgns,var,racines=True)

    factorise="$$%s"% P
    for i in range(len(factorisation)):
        factorise+="="+factorisation[i]
    cor.append(factorise+"$$")

####Racines entières
    nomP=nom_poly[randrange(4)]
    var=inconnues[randrange(4)]
    X=Polynome({1:1},var)
    P=poly_racines_entieres(rac_min,rac_max,X)

    exo.append("\\item $%s(%s)=%s$"%(nomP,var,P(var)))
    cor.append("\\item Factoriser $%s(%s)=%s$\\par"%(nomP,var,P(var)))
    exo,cor=redaction_factorisation(P,nomP,exo,cor)

####Racines fractionnaires
    nomP=nom_poly[randrange(4)]
    var=inconnues[randrange(4)]
    X=Polynome({1:1},var)
    #denominateur maximmum pour les racines fractionnaires
    denom_max=12
    P=poly_racines_fractionnaires(rac_min,rac_max,denom_max,X)

    exo.append("\\item $%s(%s)=%s$"%(nomP,var,P(var)))
    cor.append("\\item Factoriser $%s(%s)=%s$\\par"%(nomP,var,P(var)))
    exo,cor=redaction_factorisation(P,nomP,exo,cor)


####Racines quelconques
    nomP=nom_poly[randrange(4)]
    var=inconnues[randrange(4)]
    X=Polynome({1:1},var)
    #Valeurs absolues maximales des coefficients d'un polynôme quelconque
    abs_a=1
    abs_b=10
    abs_c=10
    P=poly_racines_quelconques(abs_a,abs_b,abs_c,X)

    exo.append("\\item $%s(%s)=%s$"%(nomP,var,P(var)))
    cor.append("\\item Factoriser $%s(%s)=%s$\\par"%(nomP,var,P(var)))
    exo,cor=redaction_factorisation(P,nomP,exo,cor)

    exo.append("\\end{enumerate}")
    cor.append("\\end{enumerate}")
    return exo,cor,question