J'ai programmé une petite fonction sous le logiciel scilab qui permet via la FFT d'évaluer le produit de deux polynomes sous la forme P(x)=(x-2)^p*(x-3)^q (p, q entiers positif). Le problème, c'est que cela marche très bien pour p,q<6 mais après je commence à obtenir des erreurs sur les coefficients de mon polynome. Plus p et q sont grands et plus l'erreur est importante. Ceci est il du à une erreur machine? Sinon, d'ou cela peut il venir?
Par avance merci
Voici mon code :
function [r]=produit(p,q,rp,rq)
for i=0:p // calcul des coeffs du 1er polynome en utilisant la formule du binome de Newton
ap(i+1)=(factorial(p)/(factorial(i)*factorial(p-i)))*(-rp)^(p-i);
end;
for i=0:q // calcul des coeffs du 2ème polynome
aq(i+1)=(factorial(q)/(factorial(i)*factorial(q-i)))*(-rq)^(q-i);
end;
for i=p+1:p+q // complétion des vecteurs jusqu'au coefficient de degré max=p+q
ap(i+1)=0; // afin que les 2 vecteurs aient la même taille.
end;
for i=(q+1):(p+q)
aq(i+1)=0;
end;
//Calcul de la Transformée de Fourier de chaque vecteur
p1=fft(ap);
p2=fft(aq);
//Multiplication coefficients par coefficients
for i=0:(p+q)
c(i+1)=p1(i+1)*p2(i+1);
end;
// on effectue la transformée de fourier inverse du résultat
r=ifft(c);
endfunction
