Euler vectoriel [TIPE]

Nn4v1

Euler vectoriel [TIPE]

Message par Nn4v1 » 22 juin 2016 12:29

Bonjour !
Dans le cadre de mon TIPE, je dois utiliser un Euler vectoriel pour avoir l'évolution de la hauteur d'eau dans un réservoir.

Voici le code que j'ai écrit (il renvoie quelque chose, mais ce n'est pas ce à quoi je m'attend. La courbe devrait avoir l'allure d'un oscillateur harmonique amorti, à cause des frottements...)

Code : Tout sélectionner

import numpy as np
import matplotlib.pyplot as plt
g=9.81
H=0.5
V0=np.sqrt(2*g*H)
L0=5
to=0.15
alpha=2.4678*10**(-3)

def fonction(t,Z):
    V=np.array([Z[1],((V0*L0)/to+g*(H-Z[0])-0.5*(alpha*Z[1]+V0*(1-t/to))**2)/(L0*alpha+Z[0])])
    return V




def Euler(Zini, h, Tmaxi, f ):
    n=int(Tmaxi/h)+1
    T=np.linspace(0, Tmaxi, n)
    M = np.zeros([n,2])
    M[0]=Zini
    for k in range(n-1):
        M[k+1]=M[k]+h*f(T[k], M[k])
    return M

#Test
M = Euler([0.1,0],0.001,10,fonction)

L=np.linspace(0,5,10001)
plt.plot(L, M[:,0])
plt.xlim(0,10)
plt.ylim(-50,100)
plt.show()



Si quelqu'un pouvait jeter un coup d’œil, ce serait sympa !

A+

Messages : 9679

Inscription : 30 juil. 2008 16:59

Profil de l'utilisateur : Élève de lycée

Re: Euler vectoriel [TIPE]

Message par fakbill » 23 juin 2016 15:46

Tu as debugé en testant sur des exemples simples et en regardant instruction par instruction la valeur des variables non?
Est ce que ton solveur marche sur un exemple simple?
oscillateur amorti? donc c'est du second degré? Tu as des vecteurs car tu as transformé ton équation du second degré en deux équations de degré un? si oui, es tu certain que ce passage a été fait correctement?

"def fonction" est une TRES mauvaise idée : c'est la fonction dans y´= f ?? Bref, on appelle pas une fonction "fonction" JAMAIS. On donne des noms explicites aux variables.
Pas prof.
Prépa, école, M2, thèse (optique/images) ->ingé dans le privé.

Répondre