IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Calcul des valeurs propres par la décomposition QR de Householder


Sujet :

C

  1. #1
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 23
    Points : 3
    Points
    3
    Par défaut Calcul des valeurs propres par la décomposition QR de Householder
    bonjour;

    j'ai Cherché sur wikipedia la décomposition QR selon la méthode de Householder et je l'ai implémenté avec mon type de matrice.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    typedef float E;
     
    typedef struct matrix { 
    	E * mat; 	
    	int nb_rows,nb_columns;	
    	}StrMatrix, *Matrix;
    puis j'ai utilisé cette décomposition pour trouver les valeurs propres d’une matrice.

    mon programme compile, et s'exécute mais mon problème et que la matrice que je saisi ne s'affiche pas et pourtant ma fonction "printMatrix(M)" me semble bien écrite.
    et par la suite, toutes les fonctions qui viennent après ma fonction affiche dans mon "main.c" ne s'affichent pas aussi.

    j'ai besoin de votre aide svp, car je doit avancer et il me reste à afficher les valeur propres de ma matrice puis le grand travail est de faire un affichage des ittérations avec gnuplot.

    dans l'attente d'une réponse je vous remercie.


    je ne comprends pas d'ou vient l'erreur
    Fichiers attachés Fichiers attachés

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 209
    Points
    23 209
    Par défaut
    Juste une question, si tu veux stocker des float dans une matrice à deux dimensions, pourquoi ne pas utiliser un E **Ainsi tu pourrais accéder à chacun de tes éléments comme ceci maMatrice[i][j];
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        int n,i,j, p, q;
    	E v;
        Matrix M=newMatrix(n,n);
        //Matrix V=newMatrix(n,1);
        Matrix Q=newMatrix(n,n);
        Matrix R=newMatrix(n,n);
    n n'est pas initialisé il a donc une valeur indéterminée.

  3. #3
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 23
    Points : 3
    Points
    3
    Par défaut
    la structure nous a été imposée.
    je n'avais pas le choix

    ce n'est pas le "n" qui pose pb, car n représente la taille de la matrice qui sera saisi par l'utilisateur (par moi).

  4. #4
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 209
    Points
    23 209
    Par défaut
    Si tu as des questions à poser, poses-les plutôt ici que par mp.

    En effet, par mp tu poses la question à une seule personne alors qu'ici tu poses la question à tous tes lecteurs.

    Pour retourner plusieurs matrices, tu as trois choix :
    - Tu retournes une structure contenant plusieurs matrices
    - Tu retournes un tableau de pointeur de matrices que tu aura alloué au préalable. La dernière valeur valant NULL pour marquer la fin du tableau.
    - Tu passes en paramètre des pointeurs de pointeurs de matrices afin de pouvoir écrire sur l'adresse de la matrice sur le pointeur de matrice.

  5. #5
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    L'indexation est fausse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        for(i=1;i<=n;i++){
            for(j=1;j<=n;j++){
                // printf("            Ligne","i : 1, : " );
                printf("inserez mat(%d,%d):",i,j);
                scanf("%f", &v);
                setElt(M, i, j, v);
     
            }
    setElt() fonctionne avec des indices basés sur 0, pas sur 1 -> on écrit en dehors de la zone allouée.
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  6. #6
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 23
    Points : 3
    Points
    3
    Par défaut
    Merci merci diogene, Oui c'est exactement ça le pb.
    J'ai passé un temps fou à trouver la solution.
    Je ne l'aurai jamais trouvé toute seule.
    Encore merci.

  7. #7
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 23
    Points : 3
    Points
    3
    Par défaut
    bonjour,

    le bp d'affichage de la matrice s'est résolu, grace à votre réponse diogene.

    j'ai d'autres pbs:

    1-la fonction "ProduitScalaire" me donne un résultat faux, elle donne toujours comme résultat : n=la taille de la matrice saisie. pourquoi ?

    2-pourquoi la fonction "VecteurHouseholder" me donne comme résultat "le vecteur null".

    3-la fonction "TransformationHouseholder" ne marche pas, j'ai un message de "Segmentation fault: 11". comment résoudre ça ?

    4- après je ne sais meme pas si les fonctions "DécompositionQR" et "IterationQR" fonctionnent et les autres aussi ?

    5- comment résoudre ça "sh: gnuplot: command not found", sachant que j'ai un mac os x version 10.7.3

    ci-joint le nouveau code
    Fichiers attachés Fichiers attachés

  8. #8
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    A vue de nez,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    E ProduitScalaire(Matrix A, Matrix B)       // A et B sont des vecteurs
    {
    ....
        for(i=0;i<n;i++){
            somme = somme + getElt(A, i, 1) * getElt(B, i, 1);
    Ne serait ce pas la même erreur que précédemment et ne devrait-on pas avoir somme = somme + getElt(A, i, 0) * getElt(B, i, 0);?

    Même chose dans VecteurHouseholder()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            setElt(V,i,1,0);
                setElt(V, i, 1, getElt(A, i, j));
                setElt(V, k, 1, getElt(V, k, 1) + signe(getElt(V, k, 1)) * Norme(V));
    Dans cette fonction, la double boucle sur i est normale ? Je ne sais pas ce qu'est censé faire cette fonction, mais elle est certainement fausse : à la sortie de la boucle interne i==n et la boucle externe repart avec i==n+1 en dehors de V
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        for(i=0;i<k-1;i++)
        {
            setElt(V,i,1,0);
            for(i=k;i<n;i++)
            {
                setElt(V, i, 1, getElt(A, i, j));
                setElt(V, k, 1, getElt(V, k, 1) + signe(getElt(V, k, 1)) * Norme(V));
            }
        }
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  9. #9
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 23
    Points : 3
    Points
    3
    Par défaut
    Mon pb n'est pas résolu, pourquoi c'est marqué résolu sur le forum...????

    j'ai modifié la fonction "produit scalaire" comme vous me l'avez expliqué

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    E ProduitScalaire(Matrix A, Matrix B)       // A et B sont des vecteurs
    {
        int i;
        E PS;
        int n=A->nb_rows=B->nb_rows;
        E somme=0.0;
        for(i=0;i<n;i++)
            somme = somme + getElt(A, i, 0) * getElt(B, i, 0);
     
        PS = somme;
        return PS;
    }

    mais le pb persiste toujours, le résultat est toujours n=la taille de la matrice.

    ma fonction est bien écrite alors d'ou vient le pb???

  10. #10
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 209
    Points
    23 209
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     int n=A->nb_rows=B->nb_rows;
    Dans ce cas là A->nb_rows = B->nb_rows et n = B_nb_rows.
    Si A a plus de colonnes que B, je doute que le résultat de ta fonction soit juste.

  11. #11
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 23
    Points : 3
    Points
    3
    Par défaut
    vous m'avez mené sur le bon chemin.
    au début j'ai remplacé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     int n=A->nb_rows=B->nb_rows;
    par

    et biensur ça n'a pas marché !!!

    puis j'ai vu que c'est ce petit "n" qui pose ce grand pb !!!

    alors j'ai changé les paramètres de ma fonction, en incluant ce "n":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    E ProduitScalaire(int n, Matrix A, Matrix B)       // A et B sont des vecteurs
    {
        int i;
        E PS=0;
        for(i=0;i<n;i++)
            PS = PS + getElt(A, i, 0) * getElt(B, i, 0);
        return PS;
    }
    et ça marche très bien.

  12. #12
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    et ça marche très bien.
    C'est très mauvais signe. Il y a quelque part une salade avec les champs sur le nombre de lignes/colonnes des matrices qui sont incorrects
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  13. #13
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 23
    Points : 3
    Points
    3
    Par défaut
    j'ai la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Matrix VecteurHouseholder(int n, Matrix A, int k, int j)
    {
        int i;
        Matrix V;
        for(i=0;i<k-1;i++)
            {
                setElt(V,i,0,0);
                for(i=k;i<n;i++)
                {
                    setElt(V, i, 0, getElt(A, i, j));
                    setElt(V, k, 0, getElt(V, k, 0) + signe(getElt(V, k, 0)) * Norme(n, V));
                }
            }    
        return V;
    }
    elle Calcule le vecteur v(k,A(j)), ou A(j) est la j-ieme colonne de A.
    le principe de cette fonction:
    Pour k ∈ {1,...,n} et pour x∈ Rn (tel que x=A(j)), on note v = v(k,x) ∈ Rn le vecteur défini par:

    0 si 1 ≤ i < k
    vi= xk+signe(xk)*m si i=k
    xi si k < i ≤ n

    m= norme(x)


    dans mon main.c j'ai écris ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    printf("Matrice VecteurHouseholder:\n\n");
    	Matrix V=VecteurHouseholder(n, A, k, j);
    	printMatrix(V);
    	deleteMatrix(V);
    à l'éxecution j'ai ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Matrice VecteurHouseholder:
     
    Segmentation fault: 11
    est ce que ma fonction est mal écrite ?
    ou bien est ce que dans mon main.c je ne doit pas l'écrire comme je l'avais écris ? est ce que je dois donner des valeurs à mon "k" et "j" ? si oui quelles valeurs je dois saisir ?
    Fichiers attachés Fichiers attachés

  14. #14
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 209
    Points
    23 209
    Par défaut
    Citation Envoyé par Neckara Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     int n=A->nb_rows=B->nb_rows;
    Dans ce cas là A->nb_rows = B->nb_rows et n = B_nb_rows.
    Si A a plus de colonnes que B, je doute que le résultat de ta fonction soit juste.

    Je pense avoir dit une petite bêtise il me semble que c'est équivalant à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    n = A->nb_rows
    //puis
    n = B->nb_rows
    C'est pour cela qu'on essaye d'utiliser le moins possible les affectation du type :
    C'est peu lisible et sujet à quelques erreurs^^

  15. #15
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 23
    Points : 3
    Points
    3
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C'est très mauvais signe. Il y a quelque part une salade avec les champs sur le nombre de lignes/colonnes des matrices qui sont incorrects
    je ne comprends pas vraiment ce que vous voulez dire ?

    j'ai executé mon prog avec une taille de matrice carré "n" que je saisie et qu'est différente à chaque exécution, alors le produit scalaire de deux vecteurs était tjrs correcte. donc je crois que la fonction est bien écrite.

    vous pouvez le tester.

    mais mnt ce qui me pose pb c'est la fonction "vecteurhouseholder" comme je viens de tt expliquer dans mon dernier message?
    je ne trouve pas la réponse à ce pb.
    Fichiers attachés Fichiers attachés

  16. #16
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     n=A->nb_rows=B->nb_rows;
    Non, c'est équivalent à n=(A->nb_rows=B->nb_rows);Ce qui fait que c'est équivalent à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    A->nb_rows = B->nb_rows 
    //puis
    n = A->nb_rows
    Ce qui peut avoir son importance selon le type des 3 variables
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  17. #17
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    je ne comprends pas vraiment ce que vous voulez dire ?

    j'ai executé mon prog avec une taille de matrice carré "n" que je saisie et qu'est différente à chaque exécution, alors le produit scalaire de deux vecteurs était tjrs correcte. donc je crois que la fonction est bien écrite.
    Oui, la fonction semble juste mais ,
    - La seule chose changée est que tu passes n comme paramètre, donc la fonction reçoit une valeur calculée ailleurs et du coup ça marche.
    - J'en déduis que cette valeur était différente de celle de B->nb_rows puisqu'avec cette dernière ça ne marche pas.

    La question est : Pourquoi la valeur de B->nb_rows est-elle fausse ?
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  18. #18
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 23
    Points : 3
    Points
    3
    Par défaut
    je comprends mnt.
    vraiment, c'est du plaisir de communiquer avec des gens comme vous.
    j'espère avoir votre niveau un jour...

  19. #19
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Au sujet de Matrix VecteurHouseholder(int n, Matrix A, int k, int j)

    1- Matrix V;
    Tu ne peux pas instancié une matrice de cette façon : tu dois utiliser ta fonction newMatrix()

    2- Le code que tu proposes ne correspond pas au calcul. Je vois plutôt quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        for(i=0; i<k ;i++)setElt(V,i,0,0); // inutile si newMatrix initialise à 0
        for(i=k; i<n;i++) setElt(V, i, 0, getElt(A, i, j));
        setElt(V, k, 0, getElt(V, k, 0) + signe(getElt(V, k, 0)) * Norme(n, V))
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  20. #20
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 23
    Points : 3
    Points
    3
    Par défaut
    j'ai modifié la fonction "vecteurhouseholder" comme vous me l'avez expliqué alors je n'ai plus le message :
    mais plutôt ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Matrice VecteurHouseholder:
     
          La matrice est null

    alors j'ai réecris la fonction autrement, en incluant V en paramètre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void VecteurHouseholder(int n, Matrix A, int k, int j, Matrix V)
    {
        int i;
        for(i=0;i<k-1;i++)
            setElt(V,i,0,0);
        for(i=k;i<n;i++)
            setElt(V, i, 0, getElt(A, i, j));
        setElt(V, k, 0, getElt(V, k, 0) + signe(getElt(V, k, 0)) * Norme(n, V));
    }
    et j'ai la meme réponse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Matrice VecteurHouseholder:
     
          La matrice est null

    normalement mon vecteur ne doit pas etre null.

    est ce que je doit écrire ça dans mon main.c ou bien je dois donner des valeurs à "k" et "j", si oui quelle valeur je doit mettre ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    printf("Matrice VecteurHouseholder:\n\n");
    	VecteurHouseholder(n, A, k, j, V);
    	printMatrix(V);
    	deleteMatrix(V);
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [Python 3.X] [Scipy] Calcul des valeurs propres - eig
    Par Invité dans le forum Calcul scientifique
    Réponses: 2
    Dernier message: 11/06/2015, 15h30
  2. Calcul des valeurs et vecteurs propres de l'ACP
    Par amine31000 dans le forum Algorithmes et structures de données
    Réponses: 13
    Dernier message: 08/08/2012, 20h52
  3. Calcul rapide des valeurs propres d'une matrice creuse
    Par gsagnol dans le forum Mathématiques
    Réponses: 3
    Dernier message: 22/12/2007, 00h37
  4. Calcul de valeurs propres
    Par Andrey dans le forum Pascal
    Réponses: 6
    Dernier message: 12/02/2007, 00h20
  5. [Debutant]calcul de valeurs propres, givens-householder
    Par malbarre dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 18/08/2005, 17h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo