コード例 #1
0
def listeracines(a,b,delta,parentheses=False):
    '''renvoie racsimple,simplifie,formule_x1,x_1,formule_x2,x2'''
    '''avec x_1<x_2
       si parenthese=True, renvoie deux booleens
          parenthesex1=True signifie qu'il faut mettre des parenthese autour de x1
       On suppose delta >0
       simplrac est True si racine de delta se simplifie'''
    a=int(a)
    b=int(b)
    parenthesex1=parenthesex2=True #par défaut
    #simplrac=True
    strx1="\\dfrac{-%s-\\sqrt{%s}}{2\\times %s}"%(pTeX(b),TeX(delta),pTeX(a))
    strx2="\\dfrac{-%s+\\sqrt{%s}}{2\\times %s}"%(pTeX(b),TeX(delta),pTeX(a))
    ##on a strx1<strx2
    coeff,radicande=simplifie_racine(delta)

    #x1,x2 simplifiés ont une écriture fractionnaire donc
    parenthesex1=parenthesex2=False
    if coeff==1:#delta n'a pas de facteur carré, on ne peut rien simplifier
        rac_delta=radicalTeX(delta)
        simplrac=[False]
    else:
        if radicande==1:
            rac_delta=TeX(coeff)
        else:
            rac_delta=TeX(coeff)+radicalTeX(radicande)
        simplrac=[True,rac_delta]
    x1=RacineDegre2(-b,2*a,-1,delta)
    x2=RacineDegre2(-b,2*a,1,delta)
    if b==0:
        parenthesex1=(coeff*a>0)
        parenthesex2=(coeff*a<0)
    if a<0:
        strx1,strx2,x1,x2,parenthesex1,parenthesex2=strx2,strx1,x2,x1,parenthesex2,parenthesex1
    if parentheses:
        return simplrac,strx1,x1,strx2,x2,parenthesex1,parenthesex2
    else:
        return simplrac,strx1,x1,strx2,x2
コード例 #2
0
def redaction_racines(P,nomP,var,cor=[]):
    delta,simpl_delta,liste_racines,liste_str_racines=racines_degre2(P)
    ligne_delta=u"Je calcule $\\Delta=%s^2-4\\times %s\\times %s=%s$"%(pTeX(P[1]),pTeX(P[2]),pTeX(P[0]),TeX(delta))
    if simpl_delta[0]:
        ligne_delta+=" et $%s=%s$.\\par"%(radicalTeX(delta),simpl_delta[1])
    else:
        ligne_delta+=".\\par"
    cor.append(ligne_delta)
    if delta<0:
        cor.append("Comme $\\Delta <0$, $%s(%s)$ n'a pas de racines."%(nomP,var))
    elif delta==0:
        cor.append("Comme $\\Delta=0$, $%s(%s)$ a une seule racine $%s_0=%s=%s$.\\par"%(nomP,var,var,liste_str_racines[0],TeX(liste_racines[0])))
    else:#delta>0
        [x1,x2]=liste_racines
        cor.append("Comme $\\Delta>0$, $%s(%s)$ a deux racines :"%(nomP,var))
        if isinstance(x1,RacineDegre2):
            simplification1=simplification2=""
            x1,detail1=x1.simplifie(True)
            x2,detail2=x2.simplifie(True)
            max_len=max(len(detail1),len(detail2))
            cor.append("\\begin{align*}")
            cor.append("%s =&%s  &%s =&%s"%\
                       (liste_str_racines[0],liste_racines[0],liste_str_racines[1],liste_racines[1]))
            cor.append("\\\\")
            for i in range(0,max_len):
                if i <len(detail1):
                    cor.append("=&%s&"%(detail1[i]))
                else:
                    cor.append("&&")
                if i <len(detail2):
                    cor.append("=&%s"%(detail2[i]))
                else:
                    cor.append("& ")
                cor.append("\\\\")
            cor.pop(-1)
            cor.append("\\end{align*}")
            cor.append("Les racines de $%s$ sont $%s_1=%s$ et $%s_2=%s$.\\par"%(nomP,var,x1,var,x2))
        else:
            [strx1,strx2]=liste_str_racines
            cor.append("Les racines de $%s$ sont $%s_1=%s=%s$ et $%s_2=%s=%s$."%(nomP,var,strx1,x1,var,strx2,x2))

    return cor