[ Foro de Python ]
Necesito hacer un programa que multiplique dos polinomios de longitud cualquiera. Teniendo en cuenta que estos se multiplican de la manera normal, es decir, por ejemplo:
(x+1)*(x+1)=x^2+2x+1 (por ejemplo)
He conseguido hacer el código cuando ambas longitudes coinciden y miden 2 y 3, pero no sé como generalizarlo ni como hacerlo para cuando tengan distintas longitudes
p1= []
p2 = []
def mult(p1,p2):
i = 0
j = 0
len_p1=len(p1)
len_p2 = len(p2)
if len_p1==len_p2==2:
p3 = []
g = p1[0] * p2[0]
e = p1[1] * p2[0] + p1[0]*p2[1]
n = p1[1] * p2[1]
p3.append(g)
p3.append(e)
p3.append(n)
return p3
elif len_p1==len_p2==3:
p4 = []
q = p1[0]*p2[0]
w = p1[0]*p2[1] +p1[1]*p2[0]
r = p1[0]*p2[2] + p1[1]*p2[1] + p1[2]*p2[0]
t = p1[1]*p2[2] + p1[2]*p2[1]
u = p1[2]*p2[2]
p4.append(q)
p4.append(w)
p4.append(r)
p4.append(t)
p4.append(u)
return p4
hola alba
lo que has hecho realmente no te sirve, cada polinomio puede tener distinto número de términos y pueden ser de distinto grado:
tendrías que pedir al usuario que introduzca los términos del polinomio con :
? signo
? coeficiente
? variable
? y grado
para cada uno. estaría bien por ej en un diccionario para cada termino
a partir de ahí lo tendrás mucho más fácil
suerte ;-)
No entiendo tu planteamiento, Alba.
¿No sería de esperar que cada polinomio se indicara (por ejemplo) con una lista de coeficientes? Por ejemplo "x^2 - 2x + 1" podría representarse como [1, -2, 1].
Entonces, el resultado debería ser otra lista, cuyos elementos obtienes multiplicando coeficiente a coeficiente y sumando (un bucle "for", piensa cómo lo harías "a lápiz").
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)