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

MATLAB Discussion :

Comment calculer résidu quadratique? [Débutant]


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2010
    Messages : 38
    Points : 23
    Points
    23
    Par défaut Comment calculer résidu quadratique?
    Salut
    j'essaye d'écrire une fonction pour calculer le résidu qudratique d'une courbe elliptique, elle fonctionne mais pas comme je veut
    tel que je veux seulement afficher les nombre entier pas réel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function  ResiduQuadratic
    p = input('P =  ');
    for x = 0:1:p
          z = sqrt(mod(x^3+x+4, p)); 
          if isinteger(z)
           disp(z);
          else fprintf('pas de solution');
          end
    end
    end
    je comme cette exemple
    > y := sqrt( (x&^3 + x + 4) mod 19);
    Yielded these results:

    > x :=0;
    y := 2 --> y = +2 (mod 19) = 2 or 17 (mod 19)
    > x :=1;
    y := 6^1/2 --> no solution
    > x:=2;
    y := 141/2 --> no solution
    > x :=3;
    y := 15^1/2 --> no solution
    > x :=4;
    y := 15^1/2 --> no solution
    > x :=5;
    y := 1 --> y = +1 (mod 19) = 1 or 18 (mod 19)
    > x :=6;
    y := 17^1/2 --> no solution
    > x :=7;
    y := 23^1/2 --> no solution
    > x :=8;
    y := 11^1/2 --> no solution
    > x :=9;
    y := 1 --> y = +1 (mod 19) = 1 or 18 (mod 19)
    > x :=10;
    y := 7^1/2 --> no solution
    > x :=11;
    y := 4 --> y = +4(mod 19) = 4 or 15(mod 19)
    > x :=12;
    y := 15^1/2 --> no solution
    > x :=13;
    y := 10^1/2 --> no solution
    > x :=14;
    y := 7^1/2 --> no solution
    > x :=15;
    y := 23^1/2 --> no solution
    > x :=16;
    y := 2 31/2 --> no solution
    > x :=17;
    y := 13/2 --> no solution
    > x :=18;
    y := 21/2 --> no solution
    > x :=19;
    y := 2 --> y = +2 (mod 19) = 2 or 17 (mod 19)
    x = Inf:
    y = Inf

    The points of this curve are:
    (0, 2), (0, 17), (5, 1), (5, 18), (9, 1), (9, 18), (11, 4), (11, 15), (19, 2), (19, 17) and
    (Inf, Inf)

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Attention, la fonction ISINTEGER vérifie seulement si ta variable est de type uintxx et intxx.
    Une façon de faire ce que tu veux en utilisant la fonction MOD

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2010
    Messages : 38
    Points : 23
    Points
    23
    Par défaut
    merci pour la rapidité de votre réponse
    ça marche mais maintenant avec les nouveaux paramètres, il affiche des érreurs
    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
    16
    17
     
    function  residuQuadratic
    p = input('P =  ');
    for x = 0:p
          z = (mod(x^3+x+6, p)); 
           phiEuler = z^(p-1)/2;
           if mod(phiEuler,p) == 1
             z1 = mod(z,p);
          if ~mod(z1,1)
           z2 = p -z1;
          fprintf ('point (%d , %d) et (%d ,%d)',x,z1,x,z2);
          fprintf('\n');
          end
           end
    end
    fprintf('\n');
    end
    ou est l'erreur?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Quelles erreurs obtiens-tu?

    PS: pense à l'indentation du code: Ctrl+A, Ctrl+I sur l'éditeur de MATLAB

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2010
    Messages : 38
    Points : 23
    Points
    23
    Par défaut
    c'est ça le problème, il n'y a pas des erreurs mais dans l’exécution il n'affiche aussi rien de tous

  6. #6
    Invité
    Invité(e)
    Par défaut
    C'est ta ligne if mod(phiEuler,p) == 1 qui n'est jamais vraie...
    Qu'est-elle censée faire?
    Ne serai-ce pas plutôt if mod(phiEuler,p)?

  7. #7
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2010
    Messages : 38
    Points : 23
    Points
    23
    Par défaut
    Bonjour
    Merci infiniment pour votre aide
    Voici le code qui calcule les résidus quadratiques d'un courbe elliptique
    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
    16
    17
    function  residuQuadratic
    p = input('P =  ');
    for x = 0:p-1
        z = (mod(x^3+x+6, p));
        phiEuler = z^(p-1)/2;
        if mod(phiEuler,p) ~= -1 
            RQ = mod(z,p);
           for i = 0 : 1: p-1
               if isequal(RQ,mod(i^2,p))
                z1 = i;
     
                fprintf ('point (%d , %d) et ',x,z1);
               end  
           end
            fprintf('\n');
        end
    end

  8. #8
    Invité
    Invité(e)
    Par défaut
    Quelques remarques:
    • La sortie de ta fonction MOD étant toujours positive, le test if mod(phiEuler,p) ~= -1 ne me semble pas très adapté. Que veux-tu faire exactement avec cette condition?
    • RQ et mod(i^2,p) étant de simples scalaires, l'utilisation de la fonction ISEQUAL est inutile ici: if RQ == mod(i^2,p)

  9. #9
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2010
    Messages : 38
    Points : 23
    Points
    23
    Par défaut
    Bonjour
    encore une fois merci
    donc j'utilise cette condition pour verifier si cette point un résidu qudratique ou non
    le résidu qudratique est
    tu a par exemple y^2 = q mod(p)
    SI q = 1 -->résidu quadratique
    SI q = -1 --> non

  10. #10
    Invité
    Invité(e)
    Par défaut
    Attention, il faut que tu fasses la distinction entre le signe égal '=' et celui de la congruence '≡'.
    Comme je te l'ai dit, ta fonction MOD ne retournera jamais -1. Tu peux faire le test avec le dernier exemple donné ici dans Wikipédia qui te renvera 16 et non -1. Une façon de faire serai alors de tester si c'est égal ou non à p-1.

  11. #11
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2010
    Messages : 38
    Points : 23
    Points
    23
    Par défaut
    Merci
    Parfiat

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment calculer la taille d'une base de données ?
    Par say dans le forum Décisions SGBD
    Réponses: 8
    Dernier message: 01/04/2011, 16h48
  2. comment calcule t-on une médiane ?
    Par rossy dans le forum Access
    Réponses: 3
    Dernier message: 25/04/2007, 10h21
  3. [Matrices] Comment calculer le Déterminant d'une matrice 4x4
    Par cyber_N dans le forum Algorithmes et structures de données
    Réponses: 70
    Dernier message: 19/08/2005, 15h47
  4. comment calculer le temps d'execution
    Par passion_info dans le forum C++Builder
    Réponses: 1
    Dernier message: 09/06/2005, 09h13
  5. Réponses: 2
    Dernier message: 05/01/2005, 14h36

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