Problème méthode d'Euler Python
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

Problème méthode d'Euler Python



  1. #1
    invite07039c21

    Problème méthode d'Euler Python


    ------

    Bonjour,

    Je rencontre un problème dans la programmation du programme de résolution d'une équation différentielle par la méthode d'Euler.
    L'interpréteur Pyzo m'annonce un problème de type mais je n'arrive pas à le résoudre.

    "Traceback (most recent call last):
    File "C:\Users\Benjamin\Desktop\MP\ Equadiff 2.0.py", line 2126, in <module>
    Lt.append(euler(h,z0)) #on constitue la liste des temps de sortie du bateau
    File "C:\Users\Benjamin\Desktop\MP\ Equadiff 2.0.py", line 2114, in euler
    V.append(f(V[i],T[i])*h+V[i]) #on calcule v en t[i]+h
    File "C:\Users\Benjamin\Desktop\MP\ Equadiff 2.0.py", line 2101, in f
    return((-0.5*pe*(v**2)*S*Cx+0.5*Czv*pa* (Vv**2)*Sv-a)/m) #pour la vitesse
    TypeError: can't multiply sequence by non-int of type 'float'"

    Merci de votre aide

    -----
    Fichiers attachés Fichiers attachés

  2. #2
    Jack
    Modérateur

    Re : Problème méthode d'Euler Python

    Il est nettement préférable de publier le code plutôt que de le fournir en pièce jointe si sa taille est raisonnable, ce qui est le cas ici.

    Code:
    import numpy as npglobal pe,pa,S,Vv,Sv,m,g,l,L,h,z0
    pe=float(998)
    pa=1.25
    S=1.50*0.40
    Czv=0,8974
    Vv=10.3
    Sv=float(210)
    m=float(1800)
    g=9.81
    l=0.50
    L=13.45
    h=0.10
    z0=-20.0
    a=float(1580)
    
    
    def f(v,t):
        return((-0.5*pe*(v**2)*S*Cx+0.5*Czv*pa*(Vv**2)*Sv-a)/m) #pour la vitesse
    
    
    def g(z,t):                                                    #pour la dérivé seconde de z
        return((0.5*pe*(v**2)*S*Cz*+2*pe*l*L*z*g-m*g)/m)             
    
    
    def euler(h,z0):
        V=[0]
        T=[0]
        Z=[z0]
        Zd=[0] # dérivée première de z
        i=0
        while Z[i]<0:
            T.append(T[i]+h)
            V.append(f(V[i],T[i])*h+V[i])        #on calcule v en t[i]+h
            Zd.append(g(Z[i],T[i])*h+Zd[i])     #on calcule la dérivée de z en t[i]+h
            Z.append(Zd[i]*h+Z[i])              #on calcule z en t[i]+h
            i+=1
        return(t0)
    
    
    Lt=[]
    Result=[]
    
    
    for i in range(len(C)): #C est le tableau numpy des [Cz,Cx] choisis pour l'étude
        Cz=C[i][0]
        Cx=C[i][1]
        Lt.append(euler(h,z0))              #on constitue la liste des temps de sortie du bateau
    
    
    tmin=min(Lt)
    
    
    for k in range(Lt):              #on récupère les couples [Cz,Cx] offrant la meilleur réponse en terme de rapidité
        if Lt[i]==tmin:
            Result.append(C[k])
            
    print(Result)

  3. #3
    invite6486d7bd

    Re : Problème méthode d'Euler Python

    Il n'y aurait pas un problème avec Czv ?
    Czv=0,8974
    une virgule à la place d'un point (je ne connais pas python, c'est donc un avis indicatif)

  4. #4
    CM63

    Re : Problème méthode d'Euler Python

    Tu as raison , c'est ça l'erreur. Si on met une virgule à la place du point décimal, il n'y a pas d'erreur de syntaxe, Python crée un "tuple" de deux nombres entiers à partir des parties entieres et fractionnaires du nombre qu'on a cru écrire:

    Code:
    >>> c=0,34
    >>> c
    (0, 34)
    >>> c.__class__
    <type 'tuple'>

  5. A voir en vidéo sur Futura

Discussions similaires

  1. [scilab] problème méthode euler
    Par invite3195f5cf dans le forum Programmation et langages, Algorithmique
    Réponses: 0
    Dernier message: 11/01/2017, 18h06
  2. Résolution problème Méthode d'Euler
    Par invite3e8f0b95 dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 03/04/2014, 14h15
  3. Méthode d'Euler
    Par invite1c8d7747 dans le forum Mathématiques du collège et du lycée
    Réponses: 4
    Dernier message: 25/10/2011, 19h33
  4. Méthode Euler
    Par invite035473bd dans le forum Mathématiques du collège et du lycée
    Réponses: 1
    Dernier message: 25/10/2010, 11h19
  5. méthode d' euler
    Par invite67d4b0e0 dans le forum Mathématiques du supérieur
    Réponses: 7
    Dernier message: 07/12/2004, 20h24