Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #María Civit y Daniel Bedialauneta
- """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
- el usuario inicialmente NO es cero"""
- """Duda: me gustaría saber si en vez de tener que hacerlo dentro de la función suma, podria hacer una función aparte
- 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
- en las funciones que se encargan de operar con las listas"""
- """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
- 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í"""
- """En eliminar ceros, no es necesaria la variable j"""
- def eliminar_ceros(pol3):
- j=pol3[-1]
- while j==0 and len(pol3)>1: #En este while quito los ceros del final, si los hay
- del pol3[-1] #En caso de que haya dos ceros al final, primero elimino el ultimo
- j=pol3[-1] #pero si lo quito, ahora la posición -1 le corresponde al anteúltimo
- return pol3 #entonces, no hace falta cambiarla posición -1 para seguir eliminando ceros
- #También hago que si todos los coeficientes son cero, no llegue a eliminar el último cero, el del término independiente
- #Lo hago diciendo en el while que si len(pol3)>1 se salga del while
- def suma(pol1,pol2):
- pol3=[] #Podría haber puesto aquí [0 for i in range(max(len(pol1),len(pol2)))]
- if len(pol1)>=len(pol2):
- for i in range(len(pol2)): #Pero teniendo aquí otro for i in range(max(len(pol1),len(pol2)))
- pol3.append(0)
- pol3[i]=pol1[i]+pol2[i]
- for i in range(len(pol2),len(pol1)):
- pol3.append(0)
- pol3[i]=pol1[i]
- else:
- for i in range(len(pol1)):
- pol3.append(0)
- pol3[i]=pol1[i]+pol2[i]
- for i in range(len(pol1),(len(pol2))):
- pol3.append(0)
- pol3[i]=pol2[i]
- pol3=eliminar_ceros(pol3)
- return pol3
- def resta(pol1,pol2):
- pol3=[]
- if len(pol1)>=len(pol2):
- for i in range(len(pol2)):
- pol3.append(0)
- pol3[i]=pol1[i]-pol2[i]
- for i in range(len(pol2),len(pol1)):
- pol3.append(0)
- pol3[i]=pol1[i]
- else:
- for i in range(len(pol1)):
- pol3.append(0)
- pol3[i]=pol1[i]-pol2[i]
- for i in range(len(pol1),(len(pol2))):
- pol3.append(0)
- pol3[i]=-pol2[i]
- pol3=eliminar_ceros(pol3)
- return pol3
- def producto(pol1,pol2):
- pol3=[0 for i in range(len(pol1)+len(pol2))]
- for i in range(len(pol1)):
- for j in range(len(pol2)):
- pol3[i+j]=pol3[i+j]+pol1[i]*pol2[j]
- pol3=eliminar_ceros(pol3)
- return pol3
- def division(pol1,pol2): #pol1=dividendo, pol2=divisor
- cociente=[]
- resto=[]
- if len(pol1)>=len(pol2):
- cociente=[0 for i in range(len(pol1)-len(pol2)+1)] #El cociente va a ser de grado=grado1-grado2
- termino=[0 for i in range(len(pol1)-len(pol2)+1)] #Va tomando el valor de cada sumando que obtenemos en el cociente
- product=[]
- a=0
- while len(pol1)>=len(cociente):
- termino[len(pol1)-len(pol2)]=pol1[-1]/pol2[-1]
- cociente[len(pol1)-len(pol2)]=termino[len(pol1)-len(pol2)]
- product=producto(termino,pol2) #Uso mi función producto
- termino[len(pol1)-len(pol2)]=0 #Para que los elementos de la lista termino sean ceros excepto el termino que estamos usando
- print(termino,a)
- pol1=resta(pol1,product) #Uso mi función resta
- a=a+1
- resto=pol1
- else:
- cociente=[0]
- resto=pol1
- return cociente,resto
- pol1=[-3,2,4,-2,3]
- pol2=[-1,-2,1]
- print(division(pol1,pol2))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement