#!/usr/bin/python # -*- coding: utf-8 -*- """ Bosquejo de un programa para manipular polinomios Autor: Antonio Carrillo Ledesma """ class Poly: C = [] # Coeficientes del polinomio Dim = 0 # Guarda la dimension del arreglo de coeficientes def __init__(self, coef): """Cosntructor de la clase""" self.Dim = len(coef) self.C = [0 for i in range(self.Dim)] for i in range(self.Dim): 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""" n1, n2 = self.Dim, b.Dim Dim = max(n1,n2) C = [0 for i in range(Dim)] if n1 > n2: for i in range(n2): C[i] = self.C[i] + b.C[i] for i in range(n2, n1): C[i] = self.C[i] else: for i in range(n1): C[i] = self.C[i] + b.C[i] for i in range(n1, n2): C[i] = b.C[i] return Poly(C) def __mul__(self, b): """multiplica polinomios""" Dim = self.Dim + b.Dim C = [0 for i in range(Dim)] for i in range(self.Dim): for j in range(b.Dim): 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 - 1)] 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 + 1)] for i in range(self.Dim): 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))