Ejemplo n.º 1
0
def test_unitaire_9(visible=False):
    print("*** fraction: test_unitaire_9 ***")

    a = po.polynome(mo.monome(ra.rationnel(2)))
    #	if visible: print(a)

    b = po.polynome(mo.monome(ra.rationnel(1)))
    #	if visible: print(b)

    c = po.polynome(mo.monome(ra.rationnel(3)))
    #	if visible: print(c)

    d = po.polynome(mo.monome(ra.rationnel(4)))
    #	if visible: print(d)

    f = frac.fraction(a, b)
    #	if visible: print(f)

    g = frac.fraction(c, d)
    #	if visible: print(g)

    r = (f + g) + (f - g) + (f * g) + (f / g)
    if visible: print(r)

    ok = (r == ra.rationnel(49, 6))
    return ok
Ejemplo n.º 2
0
def test_unitaire_8(visible=False):
    print("*** fraction: test_unitaire_8 ***")

    a = po.polynome(mo.monome(ra.rationnel(1), "a"))
    a = a.joindre(mo.monome(ra.rationnel(1), "b"))
    #	if visible: print(a)

    b = po.polynome(mo.monome(ra.rationnel(3)))
    #	if visible: print(b)

    c = po.polynome(mo.monome(ra.rationnel(5)))
    #	if visible: print(c)

    f = frac.fraction(a, b)
    if visible: print(f)

    g = frac.fraction(c, po.polynome_un())
    if visible: print(g)

    r = f**g
    if visible:
        print(r)
        print(r.joli())

    ok = (r.lire_num().valuation() == ra.rationnel(1, 243))
    return ok
Ejemplo n.º 3
0
	def __neg__(self):
		""" polynome oppose (inverse pour l'addition) """
		if self.__valide:
			p = polynome()
		
			for m in self.iterateur():
				t = mo.monome(-m.lire_coeff(), m.lire_indet(), m.est_valide())
				p = p.joindre(t)
					
			return p

		return polynome(mo.monome(), None, None, False)
Ejemplo n.º 4
0
def test_unitaire_2(visible =False):
	print("*** monome: test_unitaire_2 ***")
	
	lapin = monome.monome(rationnel.rationnel(5), "lapin")
	if visible: print(lapin)

	poulet = monome.monome(rationnel.rationnel(5), "poulet")
	if visible: print(poulet)

	poulet.fixer_coeff(rationnel.rationnel(4))
	
	ok = (lapin < poulet)
	return ok
Ejemplo n.º 5
0
def test_unitaire_3(visible =False):
	print("*** monome: test_unitaire_3 ***")
	
	xax = monome.monome(rationnel.rationnel(5), "xax")
	if visible: print(xax)

	axx = monome.monome(rationnel.rationnel(7), "axx")
	if visible:
		print(xax)
		print(repr(xax))

	ok = not (xax == axx) and \
		(axx.lire_indet() == xax.lire_indet())
	return ok
Ejemplo n.º 6
0
def test_unitaire_6(visible =False):
	print("*** monome: test_unitaire_6 ***")
	
	xaxax = monome.monome(rationnel.rationnel(5), "xaxax")
	if visible:
		print(xaxax)
		print(xaxax.joli())

	axxxx = monome.monome(rationnel.rationnel(7), "axxxx")
	if visible:
		print(axxxx)
		print(axxxx.joli())

	ok = not (xaxax == axxxx)
	return ok
Ejemplo n.º 7
0
	def joindre(self, k):
		""" ajouter un monome donne un nouveau polynome """
		if not k.est_valide:
			p = polynome()
			p.fixer_valide(False)
			return p
				
		if k.lire_coeff().est_zero():
			p = polynome()
			u = self.iterateur()
			for i in u:
				p.inserer(i)
			return p

		p = polynome()
		u = self.iterateur()
		trouve = False
		
		for i in u:
			if i.lire_indet() == k.lire_indet():
				trouve = True
				c = i.lire_coeff() + k.lire_coeff()
				if not c.est_zero():
					p.inserer(mo.monome(c, k.lire_indet()))
			else:
				p.inserer(i)
				
		if not trouve:
			p.inserer(k)
			
		return p
	def __pow__(self, autre):
		""" exponentiation """
		if isinstance(autre, int):
			autre = fraction(po.polynome(mo.monome(ra.rationnel(autre))), \
				po.polynome_un())
		
		if isinstance(autre, fraction):
			if (self.__valide) and (autre.__valide):
				a = self.__num
				b = self.__denom
		
				p = autre.__num
				q = autre.__denom

				pv = p.valuation().lire_num().lire_valeur()
				qv = q.valuation()
				
				if (p.degre() == 0) and (q.degre() == 0):
				
					if pv < 0:
						a, b = b, a
						p = -p
						
					if not qv.est_un():
						return fraction(po.polynome_err(), po.polynome_un())
						
					return fraction(a**p, b**p)
		
		return fraction(po.polynome_err(), po.polynome_un())
Ejemplo n.º 9
0
def test_unitaire_5(visible =False):
	print("*** monome: test_unitaire_5 ***")
	
	a = monome.monome(rationnel.rationnel(1), "?x")
	if visible: print(a)
	
	ok = True
	return ok
def fraction_depuis_lettre(lettre):
	""" construire une fraction rationnelle depuis une lettre """
	if lettre in string.ascii_letters:
		p = po.polynome()
		p = p.joindre(mo.monome(ra.rationnel(1), str(lettre)))
		return fraction(p, po.polynome_un())
	
	return fraction_err()
Ejemplo n.º 11
0
def test_unitaire_10(visible=False):
    print("*** fraction: test_unitaire_10 ***")

    a = po.polynome(mo.monome(ra.rationnel(1), "a"))
    a = a.joindre(mo.monome(ra.rationnel(1), "b"))
    #	if visible: print(a)

    b = po.polynome(mo.monome(ra.rationnel(3)))
    #	if visible: print(b)

    f = frac.fraction(a, b)
    if visible: print(f)

    r = f**5
    if visible: print(r)

    ok = (r.lire_denom().valuation().lire_num().lire_valeur() == 243)
    return ok
Ejemplo n.º 12
0
def test_unitaire_2(visible=False):
    print("*** fraction: test_unitaire_2 ***")

    a = po.polynome(mo.monome(ra.rationnel(1), "a"))
    b = po.polynome(mo.monome(ra.rationnel(1), "b"))

    c = po.polynome(mo.monome(ra.rationnel(1), "c"))
    d = po.polynome(mo.monome(ra.rationnel(1), "d"))

    f = frac.fraction(a, b)
    g = frac.fraction(c, d)

    r = f + g
    if visible:
        print(r)
        print(r.joli())

    ok = r.est_valide()
    return ok
Ejemplo n.º 13
0
	def __init__(self, monome =mo.monome(), gauche =None, droite =None, valide =True):
		""" - """
		if valide:
			self.__monome = monome
		else:
			self.__monome = None
			
		self.__valide = valide and monome.est_valide()
		self.__gauche = gauche
		self.__droite = droite
Ejemplo n.º 14
0
def test_unitaire_0(visible =False):
	print("*** monome: test_unitaire_0 ***")
	
	t = monome.monome()
	if visible:
		print(t)
		print(repr(t))
	
	ok = True
	return ok
Ejemplo n.º 15
0
def test_unitaire_4(visible =False):
	print("*** monome: test_unitaire_4 ***")
	
	mauvais = monome.monome(rationnel.rationnel(7, -1), "MAUVAIS=", False)
	if visible:
		print(mauvais)
		print(repr(mauvais))

	ok = (not mauvais.est_valide())
	return ok
Ejemplo n.º 16
0
def test_unitaire_12(visible=False):
    print("*** fraction: test_unitaire_12 ***")

    a = po.polynome(mo.monome(ra.rationnel(3)))
    if visible: print(a)

    b = po.polynome(mo.monome(ra.rationnel(19)))
    if visible: print(b)

    b = b.joindre(mo.monome(ra.rationnel(1)))
    if visible: print(b)

    b = b.joindre(mo.monome(ra.rationnel(-20)))
    if visible: print(b)

    f = frac.fraction(a, b)
    if visible: print(f)

    ok = (not f.est_valide())
    return ok
Ejemplo n.º 17
0
	def __pow__(self, autre):
		""" exponentiation """
		if isinstance(autre, int):
			autre = polynome(mo.monome(ra.rationnel(autre)))
		
		if isinstance(autre, polynome):
			if (self.__valide) and (autre.__valide):
				v = autre.valuation()

				if self.est_polynome_nul() and v.lire_num().est_zero():
					return polynome(mo.monome(), None, None, False)
			
				n = v.lire_num().lire_valeur()
				
				if (self.degre() != 0) and (n < 0):
					return polynome(mo.monome(), None, None, False)
					
				return self.__exponentiation(n)

		return polynome(mo.monome(), None, None, False)
Ejemplo n.º 18
0
def test_unitaire_3(visible=False):
    print("*** fraction: test_unitaire_3 ***")

    a = po.polynome(mo.monome(ra.rationnel(1), "a"))

    #
    # on provoque volontairement une erreur
    #
    b = po.polynome(mo.monome(ra.rationnel(1), "b", False))

    c = po.polynome(mo.monome(ra.rationnel(1), "c"))
    d = po.polynome(mo.monome(ra.rationnel(1), "d"))

    f = frac.fraction(a, b)
    g = frac.fraction(c, d)

    r = f + g
    if visible: print(r)

    ok = not r.est_valide()
    return ok
Ejemplo n.º 19
0
def test_unitaire_4(visible=False):
    print("*** fraction: test_unitaire_4 ***")

    a = po.polynome(mo.monome(ra.rationnel(1), "x"))
    a = a.joindre(mo.monome(ra.rationnel(1)))
    #	if visible: print(a)

    b = po.polynome(mo.monome(ra.rationnel(1), "x"))
    b = b.joindre(mo.monome(ra.rationnel(3)))
    #	if visible: print(b)

    c = po.polynome(mo.monome(ra.rationnel(-1), "xx"))
    #	if visible: print(c)

    d = po.polynome(mo.monome(ra.rationnel(1)))
    #	if visible: print(d)

    f = frac.fraction(a, b)
    if visible: print(f)

    g = frac.fraction(c, d)
    if visible: print(g)

    r = f + g
    if visible: print(r)

    ok = r.est_valide()
    return ok
	def reduire(self):
		""" reduction des coefficients """
		if self.__valide:
			n = self.__num.ppcm_denominateurs()
			m = self.__denom.ppcm_denominateurs()
			d = ent.pgcd_entiers(n, m)
			r = ra.rationnel((m * n) // d)

			p = po.polynome()
			for k in self.__num.liste_decroissante_monomes():
				c = k.lire_coeff()
				c *= r
				s = k.lire_indet()
				p = p.joindre(mo.monome(c, s))

			q = po.polynome()
			for k in self.__denom.liste_decroissante_monomes():
				c = k.lire_coeff()
				c *= r
				s = k.lire_indet()
				q = q.joindre(mo.monome(c, s))

			if q.degre() == 0:
				n = q.valuation().lire_num().lire_valeur()
				m = q.valuation().lire_denom().lire_valeur()
				r = ra.rationnel(m, n)
				t = po.polynome()
				for k in p.liste_decroissante_monomes():
					c = k.lire_coeff()
					c *= r
					s = k.lire_indet()
					t = t.joindre(mo.monome(c, s))
				p = t
				q = po.polynome_un()

			self.__num = p
			self.__denom = q

			self.simplifier_coefficients()
Ejemplo n.º 21
0
	def __mul__(self, autre):
		""" produit de deux polynomes """
		if isinstance(autre, polynome):
			if (self.__valide) and (autre.__valide):
				p = polynome()
		
				for m in self.iterateur():
					m_coeff = m.lire_coeff()
					m_indet = m.lire_indet()
			
					for n in autre.iterateur():
						n_coeff = n.lire_coeff()
						n_indet = n.lire_indet()
				
						i = utile.reduction(m_indet + n_indet)
						
						k = mo.monome(m_coeff * n_coeff, i)
						p = p.joindre(k)

				return p

		return polynome(mo.monome(), None, None, False)
Ejemplo n.º 22
0
def test_unitaire_1(visible =False):
	print("*** monome: test_unitaire_1 ***")
		
	t = monome.monome(rationnel.rationnel(5, -10), "lapin")
	if visible: print(t)

	t.fixer_coeff(rationnel.rationnel(4))
	if visible: print(t)
	
	t.fixer_coeff(rationnel.rationnel(-4))
	if visible: print(t)
	
	ok = True
	return ok
Ejemplo n.º 23
0
	def __exponentiation(self, n):
		""" exponentiation (exposant entier naturel) """
		p = polynome()

		a = self
		p = p.joindre(mo.monome(ra.rationnel(1)))
		
		while n > 0:
			if n % 2 == 1:
				p *= a
			n //= 2
			a *= a
			
		return p
Ejemplo n.º 24
0
	def __add__(self, autre):
		""" addition """
		if isinstance(autre, polynome):
			if (self.__valide) and (autre.__valide):
				p = polynome()
		
				for m in self.iterateur():
					p = p.joindre(m)
			
				for m in autre.iterateur():
					p = p.joindre(m)
		
				return p

		return polynome(mo.monome(), None, None, False)
	def simplifier_coefficients(self):
		""" simplifier les coefficients (numerateur et denominateur) """
		if self.__valide:
			n = self.__num.pgcd_numerateurs()
			m = self.__denom.pgcd_numerateurs()
			d = ent.pgcd_entiers(n, m)
			r = ra.rationnel(d)

			p = po.polynome()
			for k in self.__num.liste_decroissante_monomes():
				c = k.lire_coeff()
				c /= r
				s = k.lire_indet()
				p = p.joindre(mo.monome(c, s))

			q = po.polynome()
			for k in self.__denom.liste_decroissante_monomes():
				c = k.lire_coeff()
				c /= r
				s = k.lire_indet()
				q = q.joindre(mo.monome(c, s))

			self.__num = p
			self.__denom = q
def fraction_un():
	""" fraction unite """
	return fraction(po.polynome().joindre(mo.monome(ra.rationnel(1))))
def fraction_depuis_naturel(n):
	""" construire une fraction rationnelle depuis un entier naturel """
	p = po.polynome()
	p = p.joindre(mo.monome(ra.rationnel(n)))
	return fraction(p, po.polynome_un())
Ejemplo n.º 28
0
def polynome_un():
	""" polynome unite """
	return polynome().joindre(mo.monome(ra.rationnel(1)))