Advertisement
elcocodrilotito

pract6 FALTAN LOS COMENTARIOS

Nov 29th, 2016
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.96 KB | None | 0 0
  1. #María Civit y Daniel Bedialauneta
  2. """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
  3. el usuario inicialmente NO es cero"""
  4.  
  5. """Duda: me gustaría saber si en vez de tener que hacerlo dentro de la función suma, podria hacer una función aparte
  6. 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
  7. en las funciones que se encargan de operar con las listas"""
  8.  
  9. """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
  10. 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í"""
  11.  
  12. """En eliminar ceros, no es necesaria la variable j"""
  13.  
  14. def eliminar_ceros(pol3):
  15.     j=pol3[-1]
  16.     while j==0 and len(pol3)>1: #En este while quito los ceros del final, si los hay
  17.         del pol3[-1] #En caso de que haya dos ceros al final, primero elimino el ultimo
  18.         j=pol3[-1] #pero si lo quito, ahora la posición -1 le corresponde al anteúltimo
  19.     return pol3 #entonces, no hace falta cambiarla posición -1 para seguir eliminando ceros
  20.  
  21.     #También hago que si todos los coeficientes son cero, no llegue a eliminar el último cero, el del término independiente
  22.     #Lo hago diciendo en el while que si len(pol3)>1 se salga del while
  23.  
  24.  
  25. def suma(pol1,pol2):
  26.     pol3=[] #Podría haber puesto aquí [0 for i in range(max(len(pol1),len(pol2)))]
  27.     if len(pol1)>=len(pol2):
  28.         for i in range(len(pol2)): #Pero teniendo aquí otro for i in range(max(len(pol1),len(pol2)))
  29.             pol3.append(0)
  30.             pol3[i]=pol1[i]+pol2[i]
  31.         for i in range(len(pol2),len(pol1)):
  32.             pol3.append(0)
  33.             pol3[i]=pol1[i]
  34.     else:
  35.         for i in range(len(pol1)):
  36.             pol3.append(0)
  37.             pol3[i]=pol1[i]+pol2[i]
  38.         for i in range(len(pol1),(len(pol2))):
  39.             pol3.append(0)
  40.             pol3[i]=pol2[i]
  41.        
  42.     pol3=eliminar_ceros(pol3)
  43.     return pol3
  44.  
  45. def resta(pol1,pol2):
  46.     pol3=[]
  47.     if len(pol1)>=len(pol2):
  48.         for i in range(len(pol2)):
  49.             pol3.append(0)
  50.             pol3[i]=pol1[i]-pol2[i]
  51.         for i in range(len(pol2),len(pol1)):
  52.             pol3.append(0)
  53.             pol3[i]=pol1[i]
  54.     else:
  55.         for i in range(len(pol1)):
  56.             pol3.append(0)
  57.             pol3[i]=pol1[i]-pol2[i]
  58.         for i in range(len(pol1),(len(pol2))):
  59.             pol3.append(0)
  60.             pol3[i]=-pol2[i]
  61.            
  62.     pol3=eliminar_ceros(pol3)
  63.     return pol3
  64.  
  65. def producto(pol1,pol2):
  66.     pol3=[0 for i in range(len(pol1)+len(pol2))]
  67.     for i in range(len(pol1)):
  68.         for j in range(len(pol2)):
  69.             pol3[i+j]=pol3[i+j]+pol1[i]*pol2[j]
  70.     pol3=eliminar_ceros(pol3)
  71.     return pol3
  72.  
  73. def division(pol1,pol2): #pol1=dividendo, pol2=divisor
  74.     cociente=[]
  75.     resto=[]
  76.     if len(pol1)>=len(pol2):
  77.         cociente=[0 for i in range(len(pol1)-len(pol2)+1)] #El cociente va a ser de grado=grado1-grado2
  78.         termino=[0 for i in range(len(pol1)-len(pol2)+1)] #Va tomando el valor de cada sumando que obtenemos en el cociente
  79.         product=[]
  80.         a=0
  81.         while len(pol1)>=len(cociente):
  82.             termino[len(pol1)-len(pol2)]=pol1[-1]/pol2[-1]
  83.             cociente[len(pol1)-len(pol2)]=termino[len(pol1)-len(pol2)]
  84.             product=producto(termino,pol2) #Uso mi función producto
  85.             termino[len(pol1)-len(pol2)]=0 #Para que los elementos de la lista termino sean ceros excepto el termino que estamos usando
  86.             print(termino,a)
  87.             pol1=resta(pol1,product) #Uso mi función resta
  88.             a=a+1
  89.         resto=pol1
  90.     else:
  91.         cociente=[0]
  92.         resto=pol1
  93.        
  94.     return cociente,resto
  95.        
  96. pol1=[-3,2,4,-2,3]
  97. pol2=[-1,-2,1]
  98. print(division(pol1,pol2))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement