Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

ValueError: x and y must have same first dimension

+1 vote
import matplotlib.pyplot as plt
import numpy as np
import math

w=np.linspace(0,20,100)

def transfert(w):
    return ((92.2)**2)/(sqrt((-w**2+(92.2)**2)**2+(2*0.21*w)**2))

plt.plot(w,transfert)
plt.grid(True)
plt.legend(['w','|Xm|'],loc='lower right')
plt.savefig('fonction de transfert.pdf')
plt.show()

Pourquoi m'affiche t-il ce messsage d'erreur et comment le corriger ?

demandé 25-Fev-2015 par lestrange
edité 25-Fev-2015 par max

Quel message d'erreur ?

1 Réponse

+4 votes
 
Meilleure réponse

Il y a quelques erreurs dans ton code, voilà le code corrigé:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import matplotlib.pyplot as plt
import numpy as np

w = np.linspace(0,20,100)

def transfert(w):
    return ((92.2)**2)/(np.sqrt((-w**2+(92.2)**2)**2+(2*0.21*w)**2))

plt.plot(w,transfert(w))
plt.grid(True)
plt.legend(['w','|Xm|'],loc='lower right')
plt.savefig('fonction de transfert.pdf')
plt.show()
  1. Tu appelles la fonction sqrt() du module math alors que celle-ci
    n'est pas callable directement. Il faut donc appeler math.sqrt().
    Cela produit une erreur:

    TypeError: only length-1 arrays can be converted to Python scalars
    

    Le problème de ton approche est que la fonction math.sqrt() attend
    un nombre unique comme entrée. Puisque tu souhaites utiliser un
    array numpy avec plus d'un élément, il faut donc utiliser np.sqrt().

  2. Tu essayes de plot transfert(w), une fonction, mais tu appeles seulement transfert, comme ci celle-ci était une variable.
répondu 25-Fev-2015 par barnumbirr (2,750 points)
edité 25-Fev-2015 par barnumbirr
...