Bonjour.
Je viens sur ce forum parce que j'ai un problème pour rajouter un event à une équation différentielle, et qu'après avoir lu et relu la documentation matlab, je ne sais toujours pas comment faire.
Je dois modéliser le mouvement d'une voiture sur un trajet défini. Pour cela je divise la route en plusieurs troncon pour lesquels je connais la longueur du tronçon, la pente de la route et la vitesse maximale autorisée. J'ai aussi une fonction qui calcule la position et la vitesse du véhicule en fonction de la vitesse initiale du véhicule, de la position initiale, du rapport de transmission i sur ce troncon et de la pente de la route. C'est de la forme :
Je le mets donc en options avec options = odeset('Event',@events)Si maintenant je fais un script qui appelle odefunction1 à chaque portion de route, est-ce que odefunction1 prendra en compte mon event? Pour rajouter un event qui stopperais le solveur lorsque le véhicule a atteint la fin du tronçon, est-ce que je dois recréer une nouvelle fonction distanceEvent ? Parce que je suis un peu perdu sur l'utilisation de ces Event ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 [T,Y]=ode45(@odefunction1,[ti tf], [Xi Vi i theta],options); On connait toutes le variables en entrées de cette fonction. Ce que je voudrais, c'est que la fonction odefunction1 s'arrête soit lorsque la vitesse atteint ( à une tolérance près ) la vitesse vref connue qui est la vitesse maximale autorisée sur ce tronçon, soit lorsque le véhicule a parcouru une distance d qui est la longueur du tronçon. J'ai vainement essayé de créé un event qui stopperais odefunction1 quand la vitesse est égale à la vitesse de référence function [value,isterminal,direction] = events(t,y) if y(2) - vref< tolerance %y(1) = position et y(2) = vitesse au cours du temps value = 0 isterminal = 1; direction = 0 end end
Merci d'avance de vos réponses
Partager