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
def quest_variation_degre3(borneinf=float("-inf"),bornesup=float("+inf")): '''Question qui propose l'étude du sens de variation d'un polynôme de degré 3''' Intervalle=[borneinf,bornesup] if borneinf==float("-inf") and bornesup==float("+inf"): TeX_intervalle="\\mathbb R" else: TeX_intervalle="\\left[%s~;~%s\\right]"%(TeX(borneinf),TeX(bornesup)) #intervalle pour les racines entières ou fractionnaire a=3*randint(1,3) rac_min=-9 rac_max=9 #denominateur maximmum pour les racines fractionnaires denom_max=denom1=12 #Valeurs absolues maximales des coefficients d'un polynôme quelconque abs_a=6 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'] var="x" X=Polynome({1:1},var=var) nomP=["f","g","h","k","p","q"][randrange(6)] Pprime=poly_racines_entieres(rac_min,rac_max,X,a1=a) P=Pprime.primitive()+randint(-abs_c,abs_c) P=P.simplifie() exo=[u"\\item Étudier le sens de variations de $%s$ définie par $%s(x)=%s$ sur $%s$." % (nomP,nomP,P(var),TeX_intervalle)] cor=[u"\\item Étudier le sens de variations de $%s$ définie par $%s(x)=%s$ sur $%s$." % (nomP,nomP,P(var),TeX_intervalle)] cor.append("\\par $%s'(x)=%s$\\\\" % (nomP,Pprime(var))) cor.append(u"Je dois étudier le signe de $%s'(%s)$ qui est un polynôme du second degré.\\par"%(nomP,var)) delta,simplrac,racines,str_racines,factorisation=factorisation_degre2(Pprime,factorisation=False) #cor=redaction_factorisation(Pprime,nomP+"'",exo=[],cor=cor)[1] #cor.pop(-5) redaction_racines(Pprime,nomP+"'",var,cor) str_signe,str_valeurs,signes,ligne_valeurs=tableau_de_signe(Pprime,nomP+"'",delta,racines,cor,borneinf,bornesup,detail=True) #cor.append(tab_signe) if (delta<=0 and P[3]<0): cor+=u"Donc la fonction polynômiale $%s$ est décroissante sur $%s$." %(nomP,TeX_intervalle) elif (delta<=0 and P[3]>0): cor.append(u"Donc la fonction polynômiale $%s$ est croissante sur $%s$."%(nomP,TeX_intervalle)) else: cor.append("On obtient ainsi le tableau de variation de $%s$."%nomP) [x1,x2]=racines #macro=[["txb","txh"],["fm","fd"]] var_de_P="\\tx{%s}& \\%s{\\rnode{neu0}{%s}}&&"%(nomP,["txb","txh"]["-"==signes[0]],TeX(P(ligne_valeurs[0]))) compteur=0 for i in range(0,len(signes)-1): if signes[i]=='+': if 0 and signes[i+1]=="+": var_de_P+="&&" else: compteur+=1 var_de_P+="\\txh{\\rnode{neu%s}{%s}}&&"%(compteur,TeX(P(ligne_valeurs[i+1]))) else: if 0 and signes[i+1]=="-": var_de_P+="&&" else: compteur+=1 var_de_P+="\\txb{\\rnode{neu%s}{%s}}&&"%(compteur,TeX(P(ligne_valeurs[i+1]))) compteur+=1 if signes[-1]=="+": var_de_P+="\\txh{\\rnode{neu%s}{%s}}\\cr"%(compteur,TeX(P(ligne_valeurs[-1]))) else: var_de_P+="\\txb{\\rnode{neu%s}{%s}}\\cr"%(compteur,TeX(P(ligne_valeurs[-1]))) cor.append("$$ \\tabvar{\n %s\n %s\n %s}$$"%\ (str_valeurs,str_signe,var_de_P)) for i in range(1,compteur+1): cor.append("\\ncline[nodesep=0.15,linewidth=0.5pt]{->}{neu%s}{neu%s}"%(i-1,i)) if borneinf==float("-inf"): cor.append(u"$$\\lim_{%s\\to %s} %s= \\lim_{%s\\to %s} %s%s^3=%s $$ "%(var,"-\\infty",P,var,"-\\infty",P[3],var,TeX(P(float("-inf"))))) if bornesup==float("+inf"): cor.append(u"$$\\lim_{%s\\to %s} %s= \\lim_{%s\\to %s} %s%s^3=%s $$ "%(var,"+\\infty",P,var,"+\\infty",P[3],var,TeX(P(float("inf"))))) return exo,cor