Bonjour,
Voici le programme qui porte sur un matrice 4*4
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i, j, n=4, p=1, q=0;
float A[4][4], A_pj, A_qj, c=0.957092 , s=0.289784, t=0.302776;
A[0][0] = 1.;
A[0][1] = 1.;
A[0][2] = 0.;
A[0][3] = 0.;
A[1][0] = 1.;
A[1][1] = 4.;
A[1][2] = 1.;
A[1][3] = 0.;
A[2][0] = 0.;
A[2][1] = 1.;
A[2][2] = 4.;
A[2][3] = 1.;
A[3][0] = 0.;
A[3][1] = 0.;
A[3][2] = 1.;
A[3][3] = 4.;
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
printf("%f ",A[i][j]);
}
printf("\n");
}
for (j=0;j<n;j++)
{
if ((j!=p) && (j!=q))
{
A_pj = A[p][j];
A_qj = A[q][j];
A[p][j] = c*A_pj + s*A_qj;
A[q][j] = -s*A_pj + c*A_qj;
A[j][p] = A[p][j];
A[j][q] = A[q][j];
}
}
A[p][p] += t*A[p][q];
A[q][q] -= t*A[p][q];
A[p][q] = 0;
A[q][p] = 0;
printf("\n\n");
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
printf("%f ",A[i][j]);
}
printf("\n");
}
return 0;
}
Et en fait je dois réécrire ce programme mais uniquement sur une matrice triangulaire inférieure et je n'arrive pas du tout à faire la boucle.
Voici l'un de mes essais :
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i, j, n=4, p=1, q=0;
float A[4][4], A_pj, A_qj, c=0.957092 , s=0.289784, t=0.302776;
A[0][0] = 1.;
A[1][0] = 1.;
A[1][1] = 4.;
A[2][0] = 0.;
A[2][1] = 1.;
A[2][2] = 4.;
A[3][0] = 0.;
A[3][1] = 0.;
A[3][2] = 1.;
A[3][3] = 4.;
for (i=0;i<n;i++)
{
for (j=0;j<=i;j++)
{
printf("%f ",A[i][j]);
}
printf("\n");
}
for (j=0;j<n;j++)
{
A_pj = A[p][j];
A_qj = A[q][j];
if ((j<p) && (j!=q))
{
A[p][j] = c*A_pj + s*A_qj;
}
if (j>p)
{
A[j][p] = c*A_pj + s*A_qj;
}
if (j<q)
{
A[q][j] = -s*A_pj + c*A_qj;
}
if ((j>q) && (j!=p))
{
A[j][q] = -s*A_pj + c*A_qj;
}
}
A[p][p] += t*A[p][q];
A[q][q] -= t*A[p][q];
printf("\n\n");
for (i=0;i<n;i++)
{
for (j=0;j<=i;j++)
{
printf("%f ",A[i][j]);
}
printf("\n");
}
return 0;
}
Afficher la suite