Comment tracer une fonction définie avec def?
J'ai une fonction
np.sin(x / 2.) * np.exp(x / 4.) + 6. * np.exp(-x / 4.)
et je peux parcelle en utilisant le code suivant:
x = np.arange(-5, 15, 2)
y = np.sin(x / 2.) * np.exp(x / 4.) + 6. * np.exp(-x / 4.)
plt.plot(x, y)
plt.show()
mais si je définir la fonction de traçage ne fonctionne pas:
rr = np.arange(-5, 15, 2)
def y(o):
return np.sin(o / 2.) * np.exp(o / 4.) + 6. * np.exp(-o / 4.)
def h(b):
return int(y(b))
plt.plot(rr, h)
plt.show()
Pourquoi faut-il se produire, et comment pourrais-je changer le code pour tracer la fonction?
OriginalL'auteur Akmal Salikhov | 2016-04-22
Vous devez vous connecter pour publier un commentaire.
Essayez plutôt ceci:
OriginalL'auteur Hun
Réponse de Hun tient bon.
Toutefois, si vous êtes très précis à l'aide de deux définitions de fonction, alors essayez ceci:
Pour la réponse sur le pourquoi de votre code ne fonctionne pas, quand vous avez appelé la fonction "h", vous n'avez pas passer n'importe quel paramètre, d'où ce retour de la définition de la fonction ou de la mémoire de l'emplacement du pointeur de la fonction. Même si vous avez passé rr à h, h n'a pas été gérée de le convertir en un objet iterable.
int
, vous pouvez simplement remplacer le contenu deh(b)
avecreturn y(b).astype(np.int)
. Et si vous avez vraiment (pour quelque raison que ce soit) tient à garder une boucle, est beaucoup plus rapide si vous définissez tout d'abord le tableau d'ensemble quel=np.zeros_like(b, dtype=np.int)
; pour une grande taille deb
la création d'une liste vide et l'ajout de valeurs va être beaucoup plus lent (mais vraiment, une boucle est inutile: utiliser la puissance denumpy
et de ses opérations sur les tableaux!)OriginalL'auteur pmaniyan