Recherche du zero d'une fonction en Matlab

Fermé
viconte Messages postés 108 Date d'inscription dimanche 21 août 2005 Statut Membre Dernière intervention 5 juillet 2009 - 31 mai 2009 à 13:52
viconte Messages postés 108 Date d'inscription dimanche 21 août 2005 Statut Membre Dernière intervention 5 juillet 2009 - 1 juin 2009 à 11:03
Bonjour,

Je viens de résoudre une équation différentielle sous matlab qui se présente sous la forme y=f(x), et je souhaiterai accéder à la valeur de x lorsque y=0.
Quelle outil puis-je utiliser ? (J'arrive avoir une approximation en traçant la fonction mais j'aimerai une méthode un peu plus précise.)

Je vous remercie d'avance de votre aide.

6 réponses

Morgatte Messages postés 1219 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 24 janvier 2023 281
31 mai 2009 à 20:20
C'est quoi ta fonction ?

Un truc du genre ay"+by'+cy = Cont

C'est ça ? Si tu peux donnes-là en entier.
1
Morgatte Messages postés 1219 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 24 janvier 2023 281
31 mai 2009 à 14:04
Par dichotomie on peut trouver n'importe quel racine, mais c'est aussi de l'approximation.
C'est Newton qui a trouvé ça.

Si tu fais :
pour x0 pris au voisinage d'une des racines.
x0=x0-f(x)/f'(x0)

alors x0 va s'appricher de plus en plus près de la racine.
0
viconte Messages postés 108 Date d'inscription dimanche 21 août 2005 Statut Membre Dernière intervention 5 juillet 2009 17
31 mai 2009 à 17:41
Merci de ton aide Morgatte,

Le souci c'est que je n'ai pas d'expression de la fonction f. En fait la fonction que j'ai est la solution d'une équation différentielle. (Pour la résoudre j'ai utiliser ode45)
0
viconte Messages postés 108 Date d'inscription dimanche 21 août 2005 Statut Membre Dernière intervention 5 juillet 2009 17
31 mai 2009 à 21:10
La fonction est la suivante :

function dy=vide(t,y)
g=9.81
dy=[y(2);0;y(4);-g];

et pour le tracé de la fonction j'ai ça :

tinitial=0;
tfinal=2;
h=1;
v0=25;
theta=pi/12;
y0=[0 v0*cos(theta) h v0*sin(theta)];

[t1,y1]=ode45('vide',[tinitial,tfinal],y0);

plot(y1(:,1),y1(:,3),'red');


En fait le vecteur y a 4 composante qui sont x, dx/dt, z et dz/dt et je trace z=f(x)

Sinon j'ai également pensé à utiliser la méthode de Broyden. Je vais essayer de le réadapter.

Encore merci pour ton aide et bonne soirée
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Morgatte Messages postés 1219 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 24 janvier 2023 281
31 mai 2009 à 22:03
Alors là je peux pas t'aider, j'ai jamais vu ce genre de fonction.
Bonne continuation.
;)
0
viconte Messages postés 108 Date d'inscription dimanche 21 août 2005 Statut Membre Dernière intervention 5 juillet 2009 17
1 juin 2009 à 11:03
Tant pis, encore merci pour ton aide !

Bonne journée
0