def poly_racines_fractionnaires(rac_min,rac_max,denom1,X): '''renvoie un polynome de degré2 à racines fractionnaires ''' '''les racines sont comprises entre rac_min et rac_max''' '''denom1 majore le dénominateur des racines''' while 1: #pour éviter P=77x^2 a2=2*randrange(2)-1 #a2=-1 ou 1 p2facteur=[randint(1,denom1)*X-randint(rac_min,rac_max)for i in range(2)] pol2=a2*p2facteur[0]*p2facteur[1] if pol2[1]!=0 and pol2[0]!=0: break pol2=pol2.simplifie() simplifie=abs(pgcd(pgcd(int(pol2[0]),int(pol2[1])),int(pol2[2]))) pol2= pol2/simplifie return pol2.simplifie()
def simplifie(self,detail=False): liste_detail=[] coeff,radicande=simplifie_racine(self.radicande) numerateur=self.numerateur if self.radicande!=0: if self.coeff==1: det_coeff="+ " elif self.coeff==-1: det_coeff="- " else: det_coeff="%s\\times "%(self.coeff) if coeff!=1 or radicande==1: det_coeff+=str(coeff) else: det_coeff="0" if radicande==1: #det_coeff="%s\\times%s"%(tTeX(self.coeff),coeff) liste_detail.append("\\dfrac{%s %s}{%s}"%\ (self.numerateur,det_coeff ,self.denominateur)) radicande=0 numerateur=self.numerateur+(self.coeff)*int(coeff) coeff=0 if coeff!=1: liste_detail.append(str(RacineDegre2(numerateur, self.denominateur, det_coeff, radicande))) coeff=(self.coeff)*int(coeff) simplifie=pgcd(pgcd(coeff,numerateur),self.denominateur) numerateur=numerateur//simplifie coeff=coeff//simplifie denominateur=self.denominateur//simplifie if simplifie!=1: if radicande!=0 or denominateur!=1: det_numerateur="%s_{\\times %s}"%(numerateur,pTeX(simplifie)) det_denominateur="%s_{\\times %s}"%(denominateur,pTeX(simplifie)) det_coeff="%s_{\\times %s}"%(coeff,pTeX(simplifie)) liste_detail.append(str(RacineDegre2(det_numerateur,det_denominateur,det_coeff,radicande))) liste_detail.append(str(RacineDegre2(numerateur,denominateur,coeff,radicande))) if detail: return RacineDegre2(numerateur,denominateur,coeff,radicande),liste_detail return RacineDegre2(numerateur,denominateur,coeff,radicande)