Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[C++] - Multiplicar monomios

Estas en el tema de [C++] - Multiplicar monomios en el foro de C/C++ en Foros del Web. Hola, muy buenas. Estoy haciendo un programa en C++ que calcula el polinomio de interpolación de Lagrange y me encuentro con la situación de que ...
  #1 (permalink)  
Antiguo 22/02/2010, 16:32
 
Fecha de Ingreso: enero-2010
Mensajes: 21
Antigüedad: 14 años, 3 meses
Puntos: 0
[C++] - Multiplicar monomios

Hola, muy buenas.

Estoy haciendo un programa en C++ que calcula el polinomio de interpolación de Lagrange y me encuentro con la situación de que tengo que multiplicar monomios, después de darle muchísimas vueltas al asunto no he sacado nada en claro.

(x-a)*(x-b)*(x-c)...

La idea sería un función:

Código C++:
Ver original
  1. void monomio(int n, long double x[], long double D[])
  2. {
  3.       ...
  4. }

Donde n es el número de monomios a multiplicar y coincide con el grado del polinomio resultante, x[] es un array de reales que contiene los coeficientes que acompañan a x- (a,b,c,...) y D[] sería el array en el que se guardarían los coeficientes del polinomio resultado:
D[0]^n + D[1]^n-1 +...

Sinceramente no sé como hacerlo y he intentado en vano muchas cosas.
Si alguien puede hecharme una mano lo agradecería enormemente.

Un saludo.
  #2 (permalink)  
Antiguo 24/02/2010, 09:18
Avatar de genuine_carlosV2  
Fecha de Ingreso: noviembre-2008
Ubicación: 127.0.0.1
Mensajes: 296
Antigüedad: 15 años, 5 meses
Puntos: 6
Respuesta: [C++] - Multiplicar monomios

Buenas,

Lo quería programar pero no tengo tiempo, te comento lo que haría:
Un monomio se compone, como bien sabes de una variable y un número. En esencia, multiplicar estas dos cosas hace:
1) La variable: Aumenta el grado del monomio
2) El número: Aumenta el coeficiente del monomio

Entonces, para programar algo así, yo empezaría con un array donde colocaría el primer monomio (si quieres al inicio del array, al inicio, sino, al final. Lo único que cambia de hacerlo de una manera u otra es el orden de lectura).
Por ejemplo, si quieres multiplicar (x-2)·(x+3)·(x-4), empieza con un array así:
Código:
+---+---+---+---+
|-2 | 1 | 0 | 0 |
+---+---+---+---+
  I   1   2   3
Como ves, eso corresponde al primer monomio (donde I coresponde al término independiente y 1, 2 y 3 al grado de la x).

Ahora, para multiplicarlo por el siguiente monomio, tan solo tienes que añadirle las multiplicaciones oportunas (puedes hacer una copia del array para tener los coeficiente a mano). Mira, te pongo las operaciones:
Código:
  +---+---+---+---+
  |-2 | 1 | 0 | 0 | ( x - 2 )
  +---+---+---+---+
        · ( x + 3 )
-------------------
  +---+---+---+---+
  |-6 | 3 | 0 | 0 | ( x - 2 ) · 3
  +---+---+---+---+
  +---+---+---+---+
+ | 0 |-2 | 1 | 0 | ( x - 2 ) · x
  +---+---+---+---+
-------------------
  +---+---+---+---+
  |-6 | 1 | 1 | 0 | ( x - 2 ) · ( x + 3 )
  +---+---+---+---+
        · ( x - 4 )
-------------------
  +---+---+---+---+
  |24 |-4 |-4 | 0 | ( x - 2 ) · ( x + 3 ) · -4
  +---+---+---+---+
  +---+---+---+---+
  | 0 |-6 | 1 | 1 | ( x - 2 ) · ( x + 3 ) · x
  +---+---+---+---+
-------------------
  +---+---+---+---+
  |24 |-10|-3 | 1 | ( x - 2 ) · ( x + 3 ) · ( x - 4 ) = x³-3x²-10x+24
  +---+---+---+---+
Se entiende? Es muy sencillo.

P.D.: No hace falta que cree dos arrays para cada operación, si te lo montas un poco bien, puedes ir añadiendo los valores dinámicamente.

Un saludo, suerte y ya me dirás que tal te fué
__________________
Carlos

Recoger datos es solo el primer paso hacia la sabiduría. Pero compartir información es el primer paso hacia la comunidad. - IBM

Etiquetas: multiplicar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:16.