Calcul des racines d’un polynôme par la méthode de bairstow code c++

lilapirt -  
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
j'ai un soucis dans mon programme pour calculer des racines d’un polynôme avec la méthode de bairstow en c++. J'essaie de le faire tourner sur visual studio mais il m'affiche trois erreures par rapport a l'indicateur NMAX:

#include <iostream>
#include <cmath>
#include <math.h>
using namespace std;

void eq_trinome(double p, double q, double *x1, double *y1, double *x2, double *y2)
{
double delta, pr, pi;
delta = p * p - 4 * q;
pr = -p / 2;
pi = sqrt(fabs(delta)) / 2;
if (delta >= 0)
{
  • x1 = pr + pi;
  • x2 = pr - pi;
  • y1 = 0;
  • y2 = 0;

}
else
{
  • x1 = pr;
  • x2 = pr;
  • y1 = pi;
  • y2 = -pi;

}
}


void eq_bairstow(int n, double a[NMAX], double reel[NMAX], double imaginaire[NMAX], double p0, double q0, double eps)
{
double b[NMAX], c[NMAX];
int i, j, k;
double p, q, d, dp, dq;
k = 1;
p = p0; q = q0;
b[0] = a[0]; c[0] = a[0];
do
{
do
{
b[1] = a[1] - p * b[0];
c[1] = b[1] - p * c[0];
for (i = 2; i <= n; i++)
b[i] = a[i] - p * b[i - 1] - q * b[i - 2];
for (j = 2; j <= n; j++)
c[j] = b[j] - p * c[j - 1] - q * c[j - 2];
d = c[n - 2] * c[n - 2] + (b[n - 1] - c[n - 1])*c[n - 3];
dp = (b[n - 1] * c[n - 2] - b[n] * c[n - 3]) / d;
dq = (b[n] * c[n - 2] + b[n - 1] * (b[n - 1] - c[n - 1])) / d;
p += dp;
q += dq;
} while ((fabs(dp) + fabs(dq)) / (fabs(p) + fabs(q))>eps);
/*
printf("%de facteur quadratique: p = %.5e q = %.5e\n",(k+1)/2,p,q);
printf("Reste: ");
for (i=0;i<=n-2;i++)
printf(" b%d = %.5e ",i,b[i]);
printf("\n");
  • /

eq_trinome(p, q, &reel[k], &imaginaire[k], &reel[k + 1], &imaginaire[k + 1]);
k += 2;
n -= 2;
for (i = 1; i <= n; i++)
a[i] = b[i];
} while (n>2);
if (n == 2)
{
p = b[1] / b[0];
q = b[2] / b[0];
eq_trinome(p, q, &reel[k], &imaginaire[k], &reel[k + 1], &imaginaire[k + 1]);
}
else
{
reel[k] = -b[1] / b[0];
imaginaire[k] = 0;
}
}


Configuration: Windows / Edge 17.17134

1 réponse

[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
Salut lilapirt,

Pour poster du code C++ sur le forum, tu dois cliquer sur la flèche basse à gauche du bouton image, et choisir "cpp" et ensuite copier ton code entre les balises de code, comme cela :

<code cpp>
ton code ici
</code>

sinon, le résultat est tout moche...

Sinon, pour ta question si tu as des messages d'erreur, il est utile d'indiquer quels sont ces messages (copier-coller sur le forum).

Habituellement, en C ou en C++ les identifiants en lettres CAPITALES sont utilisés pour désigner des constantes. Où est-ce que NMAX est défini dans ton code ?

Dal
0