Problème boucle matrice triangulaire inférieure

Fermé
Utilisateur anonyme - 26 mars 2014 à 11:31
 Utilisateur anonyme - 26 mars 2014 à 11:32
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;
}




1 réponse

Utilisateur anonyme
26 mars 2014 à 11:32
Si quelqu'un veut bien m'aider !
Merci !
0