Multiplication de deux polynomes en c

Résolu/Fermé
tazgaga Messages postés 9 Date d'inscription samedi 9 janvier 2010 Statut Membre Dernière intervention 10 janvier 2010 - 9 janv. 2010 à 22:25
tazgaga Messages postés 9 Date d'inscription samedi 9 janvier 2010 Statut Membre Dernière intervention 10 janvier 2010 - 10 janv. 2010 à 08:52
Bonjour,
voici le code de ma fonction qui multiplie deux polynomes ce pendant le résultat donne des coefficient innatendue (voir plus bas)je ne sais pas où est l'erreur
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define DMAX 50 /*degré maximal du polynôme*/
typedef float T_Vect [DMAX+1];
typedef struct {int D; T_Vect T;} T_Poly;

T_Poly multiplication (T_Poly P1,T_Poly P2)
{
T_Poly P3;
int I,J,K;
K=max(P1.D,P2.D);
P3.D= P1.D+P2.D;

for (I=0;I<P1.D+1;I++)
{
for (J=0;J<P2.D+1;J++)
{
P3.T[I+J]+=(P1.T[I]* P2.T[J]);
}
}
return(P3);
}
Par exemple
degrès du polynôme = 1
coeff de degrès (1)=1
coeff de degrès (0)=1
P(x)=(x^1 + x^0)
degrès du polynôme = 2
coeff de degrès (2)=2
coeff de degrès (1)=2
coeff de degrès (0)=2
M(x)=(2.000000x^3 + 4.000000x^2 + 2.135299x^1 + 1.999985x^0)

1 réponse

tazgaga Messages postés 9 Date d'inscription samedi 9 janvier 2010 Statut Membre Dernière intervention 10 janvier 2010 9
10 janv. 2010 à 08:52
T_Poly multiplication (T_Poly P1,T_Poly P2)
{
T_Poly P3;
int I,J;
P3.D= P1.D+P2.D;
for (I=0;I<=P3.D;I++)
{
P3.T[I]=0;
for (J=0;J<=I;J++)
{
P3.T[I]+=(P1.T[J]* P2.T[I-J]);
}
}
return(P3);
voilà je pense que ça marche mieux comme ça
10