CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

DM simulation numérique

[iamthedoctor]
[iamthedoctor]
Niveau 10
28 février 2018 à 20:15:19

J'ai un DM à rendre et dedans j'ai une partie 'simulation numérique" mais je sais pas comment faire

J'ai un mouvement qui est régit par un système d'ED :
dVx/dt = w*Vy(t)
dVy/dt = -w*Vx(t)

(Vx et Vy sont des vitesses selon des directions Ux et Uy et w est une constante)

Et je dois effectuer une simulation numérique pour obtenir Vx(t), Vy(t), x(t), y(t) pour certains points mais comment faire ? J'ai bien régressi mais je trouve pas l'option et sur python ça doit être chiant à coder alors qu'il existe surement déjà des options pour ça ?

PTSI-PT
PTSI-PT
Niveau 32
28 février 2018 à 20:23:11

Approxime dVx/dt et dVy/dt en utilisant la formule du taux d'accroissement, puis en injectant dans tes 2 équations tu vas trouver 2 relations de récurrence entre tes fonctions aux temps t et t+dt, tu exprime tes fonctions au temps t+dt en fonction de tes fonctions au temps t, connaissant ta fonction au temps t0 tu peux connaitre une approximations de tes fonctions aux instants de la forme t0+k*dt

[iamthedoctor]
[iamthedoctor]
Niveau 10
28 février 2018 à 20:24:54

Le 28 février 2018 à 20:23:11 PTSI-PT a écrit :
Approxime dVx/dt et dVy/dt en utilisant la formule du taux d'accroissement, puis en injectant dans tes 2 équations tu vas trouver 2 relations de récurrence entre tes fonctions aux temps t et t+dt, tu exprime tes fonctions au temps t+dt en fonction de tes fonctions au temps t, connaissant ta fonction au temps t0 tu peux connaitre une approximations de tes fonctions aux instants de la forme t0+k*dt

Je dois utiliser la méthode d'Euler du coup?
Et je fais comprendre ça comment à Regressi ? :hap:

Message édité le 28 février 2018 à 20:25:09 par [iamthedoctor]
PTSI-PT
PTSI-PT
Niveau 32
28 février 2018 à 20:35:32

Enfin ça c'est si ça t'intéresse de réfléchir à ce que odeint fait quand tu lui demande de résoudre une equadiff, mais sinon avec odeint ça prend 3 lignes (Même si c'est assez technique quand on a jamais vu)

Je t'explique comment faire parce que même si c'est clairement de la triche, c'est vraiment très pratique. :hap:

Déjà tu import odeint:

from scipy.integrate import odeint

Ensuite pout utiliser odeint tu dois définir une fonction (en python) de la forme f(Y)=Y' avec Y un vecteur
Dans ton cas, tu peux prendre Y=[Vx,Vy] et ta fonction doit alors renvoyer Y'=[w*Vy,-w*Vz]

 def f(Y):
   [Vx,Vy]=Y
   return [w*Vy,-w*Vx]

T=np.linspace(0,1,100)
y=odeint(f,[1,1],T)
y est alors la liste des Vx et des Vy pour les instants de T pour Vx(0)=Vy(0)=1

Si tu veux plutôt x et y, il faut juste que tu intègre ton équation en faisant attention aux constantes définies par tes conditions initiales

PTSI-PT
PTSI-PT
Niveau 32
28 février 2018 à 20:36:25

[20:24:54] <[iamthedoctor]>

Le 28 février 2018 à 20:23:11 PTSI-PT a écrit :
Approxime dVx/dt et dVy/dt en utilisant la formule du taux d'accroissement, puis en injectant dans tes 2 équations tu vas trouver 2 relations de récurrence entre tes fonctions aux temps t et t+dt, tu exprime tes fonctions au temps t+dt en fonction de tes fonctions au temps t, connaissant ta fonction au temps t0 tu peux connaitre une approximations de tes fonctions aux instants de la forme t0+k*dt

Je dois utiliser la méthode d'Euler du coup?
Et je fais comprendre ça comment à Regressi ? :hap:

J'en ai pas la moindre idée, j'y ai jamais touché :hap:

blue-tamere
blue-tamere
Niveau 12
28 février 2018 à 21:50:54

Apres c'est un peu dommage de resoudre numeriquement quand tu as une simple ODE lineaire qui peut facilement etre resolue a la main

Message édité le 28 février 2018 à 21:51:09 par blue-tamere
[iamthedoctor]
[iamthedoctor]
Niveau 10
28 février 2018 à 21:58:29

Le 28 février 2018 à 21:50:54 blue-tamere a écrit :
Apres c'est un peu dommage de resoudre numeriquement quand tu as une simple ODE lineaire qui peut facilement etre resolue a la main

Je sais je connais déjà la résolution analytique on l'a faîte en cours mais là c'est une initiation à l'intérêt de la simulation numérique donc on le fait sur des trucs simples :hap:

Le 28 février 2018 à 20:35:32 PTSI-PT a écrit :
Enfin ça c'est si ça t'intéresse de réfléchir à ce que odeint fait quand tu lui demande de résoudre une equadiff, mais sinon avec odeint ça prend 3 lignes (Même si c'est assez technique quand on a jamais vu)

Je t'explique comment faire parce que même si c'est clairement de la triche, c'est vraiment très pratique. :hap:

Déjà tu import odeint:

from scipy.integrate import odeint

Ensuite pout utiliser odeint tu dois définir une fonction (en python) de la forme f(Y)=Y' avec Y un vecteur
Dans ton cas, tu peux prendre Y=[Vx,Vy] et ta fonction doit alors renvoyer Y'=[w*Vy,-w*Vz]

 def f(Y):
   [Vx,Vy]=Y
   return [w*Vy,-w*Vx]

T=np.linspace(0,1,100)
y=odeint(f,[1,1],T)
y est alors la liste des Vx et des Vy pour les instants de T pour Vx(0)=Vy(0)=1

Si tu veux plutôt x et y, il faut juste que tu intègre ton équation en faisant attention aux constantes définies par tes conditions initiales

C'est pas noté OSEF que je fasse un truc un peu "triche" tant que ça marche.
Du coup c'est du python j'imagine?

blue-tamere
blue-tamere
Niveau 12
28 février 2018 à 22:57:16

Il a ecrit ca en Python oui, mais des algorithmes de resolution d'ODE existent tout fait dans n'importe quel langage avec des bibliotheques scientifiques. Tu peux aussi l'ecrire toi meme, ca n'est pas tres complique

PTSI-PT
PTSI-PT
Niveau 32
01 mars 2018 à 00:05:11

Yep je te conseille d'essayer toi même, la méthode d'Euler tombe très souvent en info

Sous forums
  • Histoire
  • Philosophie
  • Cours et Devoirs
  • Politique
  • Environnement & Nature
  • Métiers & Orientation