[ Foro de Python ]

Multiplicación polinomios

23-Dec-2021 23:19
Alba Vizuete
2 Respuestas

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 


 


24-Dec-2021 13:31
Invitado (damian)

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 ;-)


25-Dec-2021 22:10
Nacho Cabanes (+84)

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.)