Advertisement
elcocodrilotito

pract6 in dev

Dec 1st, 2016
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.50 KB | None | 0 0
  1. """IMPORTANTE: a lo largo de toda esta práctica asumo que el coeficiente de la x de mayor grado de los polinomios que nos da
  2. el usuario inicialmente NO es cero"""
  3.  
  4. """Duda: me gustaría saber si en vez de tener que hacerlo dentro de la función suma, podria hacer una función aparte
  5. que me expanda una lista, mediante la adición de ceros, hasta tener el mismo tamaño que la otra, para asi no tener que preocuparme de ello
  6. en las funciones que se encargan de operar con las listas"""
  7.  
  8. """En la suma (y resta no sé) al principio igual el resultado, po3 al pol mas grande y luego sumarle el pol más pequeño
  9. En el producto, la multiplicación hacerla de otra manera: multiplicar un monomio de un polinomio por el otro polinomio entero, y luego ese polinomio resultante sumárselo al resultado, y así"""
  10.  
  11. """En eliminar ceros, no es necesaria la variable j"""
  12.  
  13. def eliminar_ceros(pol3):
  14.     j=pol3[-1]
  15.     while j==0 and len(pol3)>1: #En este while quito los ceros del final, si los hay
  16.         del pol3[-1] #En caso de que haya dos ceros al final, primero elimino el ultimo
  17.         j=pol3[-1] #pero si lo quito, ahora la posición -1 le corresponde al anteúltimo
  18.     return pol3 #entonces, no hace falta cambiarla posición -1 para seguir eliminando ceros
  19.  
  20.     #También hago que si todos los coeficientes son cero, no llegue a eliminar el último cero, el del término independiente
  21.     #Lo hago diciendo en el while que si len(pol3)>1 se salga del while
  22.  
  23. def suma(pol1,pol2):
  24.     if len(pol1)>=len(pol2):
  25.         pol3=pol1
  26.         for i in range(len(pol2)):
  27.             pol3[i]=pol3[i]+pol2[i]
  28.     else:
  29.         pol3=pol2
  30.         for i in range(len(pol1)):
  31.             pol3[i]=pol3[i]+pol1[i]
  32.            
  33.     pol3=eliminar_ceros(pol3)      
  34.     return pol3
  35.  
  36. def resta(pol1,pol2):
  37.     pol3=[]
  38.     if len(pol1)>=len(pol2):
  39.         for i in range(len(pol2)):
  40.             pol3.append(0)
  41.             pol3[i]=pol1[i]-pol2[i]
  42.         for i in range(len(pol2),len(pol1)):
  43.             pol3.append(0)
  44.             pol3[i]=pol1[i]
  45.     else:
  46.         for i in range(len(pol1)):
  47.             pol3.append(0)
  48.             pol3[i]=pol1[i]-pol2[i]
  49.         for i in range(len(pol1),(len(pol2))):
  50.             pol3.append(0)
  51.             pol3[i]=-pol2[i]
  52.            
  53.     pol3=eliminar_ceros(pol3)
  54.     return pol3
  55.  
  56. def producto(pol1,pol2):
  57.     pol3=[0 for i in range(len(pol1)+len(pol2))]
  58.     for i in range(len(pol1)):
  59.         for j in range(len(pol2)):
  60.             pol3[i+j]=pol3[i+j]+pol1[i]*pol2[j]
  61.     pol3=eliminar_ceros(pol3)
  62.     return pol3
  63.  
  64. def division(pol1,pol2): #pol1=dividendo, pol2=divisor
  65.     cociente=[]
  66.     resto=[]
  67.     if len(pol1)>=len(pol2):
  68.         cociente=[0 for i in range(len(pol1)-len(pol2)+1)] #El cociente va a ser de grado=grado1-grado2
  69.         termino=[0 for i in range(len(pol1)-len(pol2)+1)] #Va tomando el valor de cada sumando que obtenemos en el cociente
  70.         product=[]
  71.         while len(pol1)>=len(cociente):
  72.             termino[len(pol1)-len(pol2)]=pol1[-1]/pol2[-1]
  73.             cociente[len(pol1)-len(pol2)]=termino[len(pol1)-len(pol2)]
  74.             product=producto(termino,pol2) #Uso mi función producto
  75.             termino[len(pol1)-len(pol2)]=0 #Para que los elementos de la lista termino sean ceros excepto el termino que estamos usando
  76.             pol1=resta(pol1,product) #Uso mi función resta
  77.         resto=pol1
  78.     else:
  79.         cociente=[0]
  80.         resto=pol1
  81.        
  82.     return cociente,resto
  83.        
  84. pol1=[1,2,1]
  85. pol2=[1,1]
  86. print(division(pol1,pol2))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement