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

Calcul scientifique Python Discussion :

[Python 3.7] Algorythme du simplexe/Problème de dimension de matrice


Sujet :

Calcul scientifique Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Mars 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Andorre

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2019
    Messages : 2
    Par défaut [Python 3.7] Algorythme du simplexe/Problème de dimension de matrice
    Bonjour,

    je développe un programme de compression de données.

    J'ai un problème de dimension de ma matrice V (en rouge).

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
      
    #Nombre de lignes
    nrows=test.nrows
    
    #Création du tableau avec les indices
    b=[0]*(nrows-1)
    
    #Remplir le tableau
    for i in range (1, nrows-1):
        b[i-1]=float(test.cell_value(i,2))
    #print("b = ", b)
    
    
    N=100 #Nombre de coordonnées
    s=10 #"sparsité" : nombre max de coordonnées non nulles
    n_features = nrows-1 #nombre de points
    
    #Echelle
    x1 = np.linspace(-1,1,n_features)
    
    idx = np.nonzero(b) #liste contenant les indices des coordonnées non nulles de a
    
    def f(a,x) :
        res=0
        for i in range (N) :
            res+=a[i]*x**i
        return(res)
    
    ## Matrice alétoire
    
    #nombre de mesures m nécessaire
    m = np.int(s*np.log(N/s))  
    m = int(m)
    
    #matrice A aléatoire
    def gen_mat(m,N):
        A = np.zeros((m,N))
        for i in range(m):
            for j in range(N):
                A[i][j] = np.random.randn()
    
        return A
    
    A = gen_mat(m,len(x1))
    #print("A = " ,A)
    
    ##matrice V pseudo Vandermonde
    V=np.zeros((n_features, N))  #Dimenssion de la matrice
    
    k=(np.pi*2)/len(x1)#intervalle
    
    for i in range (len(x1)) :
        V[i][0]=1
    
        for j in range (1,N) :
            cos = np.cos(i*j*k)
            sin = np.sin(i*j*k)
            V[i][2*j-1]= cos
            V[i][2*j]= sin
    Réponse renvoyer par le programme :

    Nom : Résultat erreur.JPG
Affichages : 404
Taille : 11,9 Ko

    1) Je n'arrive pas à visualiser et à comprendre le problème ?
    2) Auriez vous une idée pour modifier les dimensions de la matrice V au moment de sa création ?

    Cordialement,

    Vilcawd

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 064
    Par défaut
    Apparemment, on arrive un moment à demander l'indice 100, alors que ton indice maxi serait 99 (100 éléments).

    C'est donc un dépassement d'index.

    Cependant l'erreur est incomplète, la partie de code ne représente pas le problème, car il manque diverses valeurs de variables comme surtout nrows qui me semble indispensable à connaître.

    Ne pas hésiter à utiliser print pour vérifier la valeur de cette variable afin d'avoir un indice de la valeur où ça dysfonctionne.

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Mars 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Andorre

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2019
    Messages : 2
    Par défaut
    Citation Envoyé par fred1599 Voir le message
    Apparemment, on arrive un moment à demander l'indice 100, alors que ton indice maxi serait 99 (100 éléments).

    C'est donc un dépassement d'index.

    Cependant l'erreur est incomplète, la partie de code ne représente pas le problème, car il manque diverses valeurs de variables comme surtout nrows qui me semble indispensable à connaître.

    Ne pas hésiter à utiliser print pour vérifier la valeur de cette variable afin d'avoir un indice de la valeur où ça dysfonctionne.
    Bonjour,

    Les données que j'utilise sont issus d'un fichier excel.

    La variable nrows correspond au total du nombre de ligne contenant des données.

    Nom : Résultat erreur.JPG
Affichages : 673
Taille : 73,1 Ko

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 753
    Par défaut
    Salut,

    Citation Envoyé par Vilcawd Voir le message
    La variable nrows correspond au total du nombre de ligne contenant des données.
    L'instruction qui plante est V[i][2*j]= sin et IndexError indique que les valeurs de i ou de j sont trop grandes.
    Faire print (V.shape), print(i), print(j),... et réfléchir aux "bornes" de vos indices de boucle est quelque chose qu'on ne fera pas à votre place.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. [Python 2.x]Numpy problème de dimension d'array
    Par unic0 dans le forum Calcul scientifique
    Réponses: 2
    Dernier message: 30/04/2015, 14h36
  2. [Débutant] Problème de dimensions de matrice
    Par Piwhy dans le forum MATLAB
    Réponses: 4
    Dernier message: 06/08/2012, 16h20
  3. Problème de dimension de matrice après extrapolation
    Par mathylde dans le forum MATLAB
    Réponses: 4
    Dernier message: 11/07/2008, 16h33
  4. Réponses: 2
    Dernier message: 24/01/2008, 16h08
  5. [GridBagLayout] Problème de dimension pour un JScrollPane
    Par cmoa59 dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 26/07/2005, 11h58

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