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 :

petit soucis pour rajouter une droite d'intersectionà une courbe


Sujet :

Calcul scientifique Python

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut petit soucis pour rajouter une droite d'intersectionà une courbe
    Bonjour, je me permets de vous demander un petit peu d'aide sur une problème qui m'use les neurones depuis quelques jours.
    Je suis encore débutant et ne maîtrise pas totalement le module pylab pour les graphes en python.
    J'essaie d'effectuer un éxo dans lequel on me demande de tracer la courbe suivante pour les valeurs  ξ=0.2,0.6 et 0.8:
    s(t)=exp(-ξ*2*pi*t)*[cos(2pi*sqrt(1-ξ^2)*t) +(ξ/sqrt(1-ξ^2))*sin(2pi*sqrt(1-ξ^2)*t)] (désolé pour cette présentation mais je ne sais pas afficher l'équation autrement...)
    J'arrive à obtenir les trois courbes demandées par contre, lorsqu'on me demande ensuite de tracer en plus sur le même graphe les droites d'intersection avec les courbes
    s(t)=+0.005 et s(t)=-0.005 le programme ne marche pas et le terminal me renvoie un problème de dimension("x and y must have same first dimension").
    Voici mon programme :
    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
    import numpy as np
    import pylab as pl
     
     
    def s(x,t):
        a=np.sqrt(1-x**2)    
        b=2*np.pi*a*t
        c=x/a
        return np.exp(-x*2*np.pi*t)*(np.cos(b)+c*np.sin(b))
     
    t=np.arange(0,4,0.001)
    pl.plot(t,s(0.2,t),t,s(0.6,t),t,s(0.8,t))
    pl.plot(t,0.005,t,-0.005)  #c'est lorsque je rajoute cette ligne que le terminal me renvoie l'erreur#
     
    pl.xlabel('t')
    pl.ylabel('s(t)')
    pl.title('s(t) pour differentes valeures de x')
    pl.legend(('x=0.2','x=0.6','x=0.8'),'upper right')
    pl.show()

    Merci d'avance pour vos aides et conseils.....

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Dans ta ligne: pl.plot(t,0.005, ...' t est un numpy.ndarray et 0.005 un float, c'est la raison du message d'erreur.

    Si je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    pl.plot(t, s(0.005,t), t, s(-0.005,t))
    j'obtiens le graphe, et les deux derniers tracés semblent moyens aux intersections des trois courbes.

    J'ignore évidemment si c'est le résultat attendu.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Oui, en effet, si j'essaie votre code j'obtiens une courbe mais pas exactement celle que je voulais.
    En fait, j'aurais aime rajouté en plus des 3 prèmieres courbes les deux droites d'équations y=0.005 et y=-0.005 le but étant de pouvoir mieux mettre en évidence la partie ou la valeur absolue de s(t)<0.005 mais je n'arrive vraiment pas à trouver de quelle façon le faire.

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 388
    Points : 692
    Points
    692
    Par défaut
    Salut.
    Quelque chose comme ça alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        t = np.arange( 0, 4, 0.001)
        pl.plot( t, s(0.2,t), t, s(0.6,t), t, s(0.8,t) )
     
        v = 0.005*np.ones(len(t))
        pl.plot( t, v, t, -v )
        pl.ylim([-0.006, 0.006])

Discussions similaires

  1. Petit soucis pour insérer une image dans un userform uniquement
    Par panda78 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 27/07/2012, 11h50
  2. petit soucis pour l'installation de mon ventirad
    Par arfy dans le forum Composants
    Réponses: 12
    Dernier message: 03/11/2005, 22h55
  3. petits soucis pour trouver un fichier autoexec.bat
    Par lestat69 dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 20/10/2005, 14h11
  4. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24
  5. Petit soucis pour se connecter à l'adsl
    Par Blowih dans le forum Réseau
    Réponses: 4
    Dernier message: 28/07/2004, 00h16

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