#!/usr/bin/python # -*- coding: utf-8 -*- """ Bosquejo de un programa para manipular polinomios Autor: Antonio Carrillo Ledesma """ class Poly: C = [] # Coeficientes del polinomio Dim = 10 # Guarda la dimension del arreglo de coeficientes def __init__(self, coef): """Cosntructor de la clase""" self.C = [0 for i in range(self.Dim)] for i in range(len(coef)): self.C[i] = coef[i] def __str__(self): """Visualiza el polinomio""" r = "" for i in range(self.Dim): if self.C[i] != 0: r += " + " + str(self.C[i]) if i == 0: continue r += "X^" + str(i) return r def visualiza(self): """Visualiza el polinomio""" print(self) def grado(self): """Grado del polinomio""" for i in range(self.Dim - 1, 0, -1): if self.C[i] != 0.0: return i return 0 def __add__(self, b): """suma polinomios""" C = [0 for i in range(self.Dim)] for i in range(self.Dim): C[i] = self.C[i] + b.C[i] return Poly(C) def __mul__(self, b): """multiplica polinomios""" C = [0 for i in range(self.Dim)] for i in range(self.Dim // 2): for j in range(self.Dim // 2): C[i + j] += self.C[i] * b.C[j] return Poly(C) def deriva(self): """Deriva el polinomio""" C = [0 for i in range(self.Dim)] for i in range(1, self.Dim): C[i - 1] = self.C[i] * i return Poly(C) def integra(self): """Integra el polinomio""" C = [0 for i in range(self.Dim)] for i in range(self.Dim - 1): C[i + 1] = self.C[i] / (i + 1) return Poly(C) def evalua(self, x): """Evalua el polinomio""" r = 0 P = 1 for i in range(self.Dim): r += self.C[i] * P P *= x return r """ Prueba de las clases """ if __name__ == "__main__": print("\n\nENTERO") a = Poly([1, 2, 3]) a.visualiza() b = Poly([4, 5]) b.visualiza() print("Suma") c = Poly([0]) c = a + b c.visualiza() print("Multiplicación") d = Poly([0]) d = a * b d.visualiza() print("Derivada") a.visualiza() d = Poly([0]) d = a.deriva() d.visualiza() print("Integral") d.visualiza() e = Poly([0]) e = d.integra() e.visualiza() print("evalua") a.visualiza() print(a.evalua(10)) print("\n\nDOUBLE") a = Poly([1.0, 2.0, 3.0]) a.visualiza() b = Poly([4.0, 3.0]) b.visualiza() print("Suma") c = Poly([0.0]) c = a + b c.visualiza() print("Multiplicación") d = Poly([0.0]) d = a * b d.visualiza() print("Derivada") a.visualiza() d = Poly([0]) d = a.deriva() d.visualiza() print("Integral") d.visualiza() e = Poly([0]) e = d.integra() e.visualiza() print("evalua") a.visualiza() print(a.evalua(10.0)) print("\n\nComplejos") a = Poly([1.0 + 1.0j, 2.0 + 2.0j, 3.0 + 3.0j]) a.visualiza() b = Poly([4.0 + 1.0j, 5.0 + 2.0j]) b.visualiza() print("Suma") c = Poly([0.0j]) c = a + b c.visualiza() print("Multiplicación") d = Poly([0.0j]) d = a * b d.visualiza() print("Derivada") a.visualiza() d = Poly([0]) d = a.deriva() d.visualiza() print("Integral") d.visualiza() e = Poly([0]) e = d.integra() e.visualiza() print("evalua") a.visualiza() print(a.evalua(10 + 0j)) import fractions print("\n\nFracciones") f1 = fractions.Fraction(1, 3) f2 = fractions.Fraction(2, 3) f3 = fractions.Fraction(3, 3) f4 = fractions.Fraction(0, 1) a = Poly([f1, f2, f3]) a.visualiza() b = Poly([f2, f3]) b.visualiza() print("Suma") c = Poly([f4]) c = a + b c.visualiza() print("Multiplicación") d = Poly([f4]) d = a * b d.visualiza() print("Derivada") a.visualiza() d = Poly([0]) d = a.deriva() d.visualiza() print("Integral") d.visualiza() e = Poly([0]) e = d.integra() e.visualiza() print("evalua en ", f3) a.visualiza() print(a.evalua(f3)) import fractions print("\n\nComplejos Fraccionarios") f1 = fractions.Fraction(1, 3) f2 = fractions.Fraction(2, 3) f3 = fractions.Fraction(3, 3) f4 = fractions.Fraction(0, 1) c1 = complex(f1, f2) c2 = complex(f3, f2) c3 = complex(f1, f3) c4 = complex(f4, f4) a = Poly([c1, c2, c3]) a.visualiza() b = Poly([c2, c3]) b.visualiza() print("Suma") c = Poly([c4]) c = a + b c.visualiza() print("Multiplicación") d = Poly([c4]) d = a * b d.visualiza() print("Derivada") a.visualiza() d = Poly([0]) d = a.deriva() d.visualiza() print("Integral") d.visualiza() e = Poly([0]) e = d.integra() e.visualiza() print("evalua en ", c3) a.visualiza() print(a.evalua(c3))