Deutsch   English   Français   Italiano  
<slrnt33un7.jcq1.lulu042@valentino.Rock-n-Roll.org>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!news.mixmin.net!aioe.org!jVhmzutVZU+CfOePwZZQrw.user.46.165.242.75.POSTED!not-for-mail
From: Lulu <lulu042@fry.fr.invalid>
Newsgroups: fr.comp.lang.python
Subject: Re: erreur matplotlib
Date: Wed, 16 Mar 2022 15:57:43 +0100
Organization: koitess?
Message-ID: <slrnt33un7.jcq1.lulu042@valentino.Rock-n-Roll.org>
References: <slrnt31o9a.660b.lulu042@valentino.Rock-n-Roll.org>
 <slrnt31ov9.68eh.lulu042@valentino.Rock-n-Roll.org>
 <87fsnjxa6g.fsf@universite-de-strasbourg.fr.invalid>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
Injection-Info: gioia.aioe.org; logging-data="11617"; posting-host="jVhmzutVZU+CfOePwZZQrw.user.gioia.aioe.org"; mail-complaints-to="abuse@aioe.org";
User-Agent: slrn/1.0.3 (Linux)
X-Notice: Filtered by postfilter v. 0.9.2
Bytes: 3606
Lines: 66

Le 15-03-2022, Alain Ketterlin <alain@universite-de-strasbourg.fr.invalid> a écrit :
>  Lulu <lulu042@fry.fr.invalid> writes:
>> Le 15-03-2022, Lulu <lulu042@fry.fr.invalid> a écrit :
>>>  Bonjour,
>>  
>>>  [...]
>>>  La ligne 37 de mon script cherche à tracer une constante : pour les
>>>  500 valeurs de t, x0 = 0.4 (et mon script fonctionne si je commente
>>>  cette ligne) :
>>>  plot(t , x0, linewidth = ze_line_width)
>>> 
>>>  avec :
>>>  x0 = u0(t)
>>> 
>>>  et :
>>>  def u0(t) : return 0.4
>>>  [...]
>>
>> Je viens d'avoir l'idée de remplacer la fonction u0(t) par une
>> fonction qui dépend de t, mais avec une si faible variation que
>> j'obtiens bien un trait horizontal à 0.4 :
>> def u0(t) : return 0.4 + np.sin( 0.01 * np.pi * f1 * t /100)
>>
>> Et ça marche !
>>
>> Mais je cherche à comprendre mon erreur : pourquoi n'est-il pas aussi
>> simple qu'attendu de tracer une fonction constante ?
> 
>  L'explication est dans le message d'erreur de ton précédent message :
> 
>  8<-----------8<---------8<----------8<----------8<----------8<----------8<
>  Traceback (most recent call last):
>  [...]
>  ValueError: x and y must have same first dimension, but have shapes (500,) and (1,)
>  8<-----------8<---------8<----------8<----------8<----------8<----------8<
> 
>  Ta fonction u0 (l'originale) ne crée pas un tableau, mais renvoie
>  simplement un flottant. Tes autres fonctions créent toutes des tableaux.
>  Par exemple :
> 
>> 13 def u1(t) : return np.sin( 2 * np.pi * f1 * t)
> 
>  renvoie bien un tableau. Tu as l'impression de faire une bête
>  multiplication scalaire "2*..." mais en fait tu fais
> 
>      (... un flottant ...) * t
> 
>  et comme t est un tableau, cela crée un nouveau tableau, dont chaque
>  élément est la valeur de l'élement correspondant de t multiplé par
>  (...). Merci la surcharge des opérateurs.
> 
>  Tes fonctions u0, u1 ... ne sont pas des fonctions qui calculent la
>  nouvelle valeur d'un élement de tableau, ce sont des fonctions qui
>  calculent de nouveaux tableaux.
> 
>  Sauf ta fonction u0 originale, qui renvoie un flottant. Ta
>  modification "marche" pour la même raison : ta (nouvelle) fonction u0
>  crée maintenant un tableau, parce qu'un des opérandes de ta formule
>  est un tableau. Tu obtiendrais le même résultat en créant directement
>  un tableau rempli avec la constante, avec numpy.full().

Ça m'apprendra a récupérer des scripts à droite ou à gauche sans
analyser leur fonctionnement : je n'avais même pas conscience de
manipuler des tableaux !!

Merci encore pour ton aide et pour numpy.full().
>  -- Alain.