résoudre éq dif du 1er ordre
Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 39

résoudre éq dif du 1er ordre



  1. #1
    inviteddea7c56

    résoudre éq dif du 1er ordre


    ------

    bonjour à tous,

    je suis nouvelle dans la programmation ainsi dans l'utilisation de matlab.
    j'ai une équation différentielle et j'aimerais savoir si je peus la résoudre sur matlab! l'équation est tres compliquée pour moi
    vous la trouvez ci attacheé

    est ce qu'il ya quelqu'un qui peus me dire comment je peus la resoudre...
    j'ai vraiment besoin de votre aide

    je vous remercie

    -----
    Images attachées Images attachées  

  2. #2
    invite06622527

    Re : résoudre éq dif du 1er ordre

    Bonjpur,

    les solutions s'expriment sous la forme d'une intégrale compliquée (document joint)
    Sauf pour des valeurs particulières des paramètres, c'est à dire dans le cas général, il ne faut pas espérer une formule analytique simple, que l'on puisse écrire avec les fonctions usuelles.
    C'est typiquement le cas d'une intégration à faire par calcul numérique.
    Images attachées Images attachées  

  3. #3
    inviteddea7c56

    Re : résoudre éq dif du 1er ordre

    justement, j'aimerais obtenir une solution a cet integral on utilisant une méthode numérique...mais comment le faire!!!???

  4. #4
    invite06622527


  5. A voir en vidéo sur Futura
  6. #5
    inviteddea7c56

    Re : résoudre éq dif du 1er ordre

    OK, je vous remercie

  7. #6
    naffrancois

    Re : résoudre éq dif du 1er ordre

    salut !

    tu peux utiliser la fonction ode45, tape help ode45 dans la console matlab
    tu as une condition limite ?

  8. #7
    inviteddea7c56

    Re : résoudre éq dif du 1er ordre

    ok, voila les constant:

    pour y<=20
    C1=0.71
    C2=0.033
    C3=1
    C4=16
    C5=26

    pour y>20
    C1=0.71
    C2=0.214
    C3=0.5
    C4=720
    C5=26

    et j'ai comme cd au limite à y=0 V=0

  9. #8
    naffrancois

    Re : résoudre éq dif du 1er ordre

    Citation Envoyé par ginafort Voir le message
    ok, voila les constant:

    pour y<=20
    C1=0.71
    C2=0.033
    C3=1
    C4=16
    C5=26

    pour y>20
    C1=0.71
    C2=0.214
    C3=0.5
    C4=720
    C5=26

    et j'ai comme cd au limite à y=0 V=0
    bien tu as donc tout ce qu'il faut pour integrer avec ode45, tu as regarde comment se servir de la fonction ?

  10. #9
    inviteddea7c56

    Re : résoudre éq dif du 1er ordre

    NON je ne sais pas , car j'ai jamais touché a la progrmation sous matlab!!!!!mais je vais essayer de le faire..;est ce quee vous pouvez m'orienter pour que je gagne plus de temps,
    je vous remercie

  11. #10
    inviteddea7c56

    Re : résoudre éq dif du 1er ordre

    bonjour a tous,
    voila j'ai reussi a tracer ma fonction sur matlab, mais!!!!
    pour y<=20 j'ai tracer ma fonction et
    pour y>20 j'ai tracer ma fonction séparement avec une autre programmation.

    je l'ai pas fais en une seule fois on utilisant la condition if, car j'ai mes constant qui change!

    est ce qu'il ya un moyen de tracer ma fonction sur le meme graphe?

  12. #11
    invite06622527

    Re : résoudre éq dif du 1er ordre

    La première programmation permert de tracer la première partie de la courbe de y=0 à jusqu'à y=20 et à ce point on obtient la valeur numérique V(20).
    Le point initial de la deuxième programmation est y=20 et V(20). La deuxième programmation permet de tracer la deuxième partie de la courbe et elle se raccordera bien avec la première sur le même graphique.
    Il suffit de faire un seul programme en écrivant la deuxième programmation à la suite de la première.

  13. #12
    inviteddea7c56

    Re : résoudre éq dif du 1er ordre

    oui je sais JJacquelin, mais le probleme d'un intervale a un autre les cst changent, comment je programme si les cst changent

  14. #13
    invite06622527

    Re : résoudre éq dif du 1er ordre

    Désolé, je ne comprends pas quelle difficulté vous rencontrez.
    Vous avez écrit :
    j'ai reussi a tracer ma fonction sur matlab, mais pour y<=20
    Donc vous avez un premier programme avec le premier groupe de constantes.
    Et vous avez écrit :
    pour y>20 j'ai tracer ma fonction séparement avec une autre programmation
    Donc vous avez aussi un deuxième programme avec le deuxième groupe de constantes (ainsi qu'avec une condition initiale différente).
    Je ne vois pas ce qui empêche d'écrire un programme complet en recopiant, l'un à la suite de l'autre, les deux programmes que vous avez déjà.
    Dernière modification par JJacquelin ; 31/08/2010 à 13h47.

  15. #14
    inviteddea7c56

    Re : résoudre éq dif du 1er ordre

    mon probleme c'est comment ecrire ce programe qui est la somme des deux sous programme:
    cad:
    j'écrie mon algorithme:

    C1=..
    C2=...
    ...
    if y<=20
    y1=.....
    than
    C1=..
    C2=...
    ...
    if y>20
    y1=

    end if
    end if

    est ce que cette ecriture est correcte!!!!!????

  16. #15
    naffrancois

    Re : résoudre éq dif du 1er ordre

    salut !

    Normalement si tu utilises ode, tu dois avoir une fonction séparée renvoyant les valeurs V'(y)=f(V(y),y). Donc oui une solution serait de faire une structure
    if(y<=20)then
    fonction 1 contenant les constantes 1
    else
    fonction 2 contenant les constantes 2
    end if

    tu peux envoyer ton code ?

  17. #16
    inviteddea7c56

    Re : résoudre éq dif du 1er ordre

    ok, voici mon pg:

    pour le 1er intervale:

    clear all
    c1=0.71;
    c2=0.033;
    c3=1;
    c4=16;
    c5=26;
    y=0:0.2:20;
    y1=1./((1/c1)+1./(c2*y.^(2*c3).*exp(-y/16).*(1-exp(-y/c5))));
    int=(1./((1/c1)+1./(c2*y.^(2*c3).*exp(-y/16).*(1-exp(-y/c5)))));
    plot(y,int)


    puis j'ai tracé mon graphe

    pour le deuxieme intervale:

    clear all
    c1=0.71;
    c2=0.214;
    c3=0.5;
    c4=720;
    c5=26;
    y=20:0.2:200;
    y1=1./((1/c1)+1./(c2*y.^(2*c3).*exp(-y/16).*(1-exp(-y/c5))));
    int=(1./((1/c1)+1./(c2*y.^(2*c3).*exp(-y/16).*(1-exp(-y/c5)))));
    plot(y,int)


    et j'ai tracé aussi mon graphe,

    donc comment faire appel a cet ODE?
    et comment structurer mon programme?
    vous pouvez m'aider SVP
    JE VOUS REMERCIE

  18. #17
    invite06622527

    Re : résoudre éq dif du 1er ordre

    Bonjour,

    je ne comprends pas le code. Il semble qu'il y ait dedans y1 qui reste inutilisé. Il semble aussi que c'est la fonction de y qui est tracée et non pas l'intégrale de cette fonction (dont je ne vois pas où le calcul est fait)
    Il semble aussi que le deuxième programme ne démarre pas à partir de V(20) dont on ne voit la valeur nulle part.
    Il me semble donc sans utilité de raccorder ces deux programmes qui me semblent ne pas répondre au problème (ni l'un ni l'autre).
    Il faudrait d'abord écrire un premier programme dans lequel l'intégration est bien excécutée.
    (Ceci dit sous réserve que j'aie correctement compris le langage utilisé, ce qui n'est pas certain).
    Pour faire l'intégration, on peut :
    - Soit utiliser un logiciel "tout fait" et apprendre à le programmer en étudiant sa notice d'utilisation. C'est plutôt ce qu'il est conseillé de faire.
    - Soit programmer soit-même la procédure d'intégration. Mais il y a des risques de cumul de petites erreurs numériques. Cela oblige à faire des vérifications.
    Par exemple, la page jointe montre un code écrit spécifiquement et "à la va vite" (donc sans intérèt général). Il est en Pascal, mais sa ré-écriture dans un autre langage ne devait pas poser de difficulté.
    Il peut y avoir des erreurs car aucune vérification du résultat n'a été faite.
    Images attachées Images attachées

  19. #18
    sebsheep

    Re : résoudre éq dif du 1er ordre

    Citation Envoyé par ginafort Voir le message
    ok, voici mon pg:

    pour le 1er intervale:

    clear all
    c1=0.71;
    c2=0.033;
    c3=1;
    c4=16;
    c5=26;
    y=0:0.2:20;
    y1=1./((1/c1)+1./(c2*y.^(2*c3).*exp(-y/16).*(1-exp(-y/c5))));
    int=(1./((1/c1)+1./(c2*y.^(2*c3).*exp(-y/16).*(1-exp(-y/c5)))));
    plot(y,int)


    puis j'ai tracé mon graphe

    pour le deuxieme intervale:

    clear all
    c1=0.71;
    c2=0.214;
    c3=0.5;
    c4=720;
    c5=26;
    y=20:0.2:200;
    y1=1./((1/c1)+1./(c2*y.^(2*c3).*exp(-y/16).*(1-exp(-y/c5))));
    int=(1./((1/c1)+1./(c2*y.^(2*c3).*exp(-y/16).*(1-exp(-y/c5)))));
    plot(y,int)


    et j'ai tracé aussi mon graphe,

    donc comment faire appel a cet ODE?
    et comment structurer mon programme?
    vous pouvez m'aider SVP
    JE VOUS REMERCIE
    ode sert à résoudre les équadiffs,les vrais (pas les pâles imitations dans ton cas qui sont en fait de "simples" intégrales).

    Donc ton code marche visiblement, tu as juste un problème d'affichage. Concrètement, il faut que tu rajoutes un "hold on" après ton premier plot et un "hold off" après ton dernier plot :

    #calculs bourrins
    plot(x,y)
    hold on

    #calculs bourrins
    plot(x,y)
    hold off

    "hold on" ("tiens bon") empeche d'effacer ce qu'il y a sur le graphique.

  20. #19
    inviteddea7c56

    Re : résoudre éq dif du 1er ordre

    MERCI sebsheep & JJacquelin pour votre orientation,
    voila puisque je travail déja sur metlab, don j'ai rajouté comme me la indiqué sebsheep la commande "hold" ca marche MAIS il ya pas de continuité entre les 2 graphes!!!!!!!!!!!et meme j'ai trouvé que les valeur de V ou y1 sur le graphe sont tres petit % a ce que je veux!!!!

    par contre la programmation avec pascale de JJacquelin donne de bons resultats (svp JJacquelin si vous mettez dans votre pg y> 200, je peus voir qu'est ce que ca donne!)

    si non je ne sais pas pourquoi matlab m'affiche des valeurs differents que pascal???????????!!!!!!!!!!!!! !!!!!!!!!!!!!!!!

    veuillez voir mon resultat ci joint
    -chaque partie du pg tout seul
    - le les 2 pg en meme temps
    Images attachées Images attachées

  21. #20
    invite06622527

    Re : résoudre éq dif du 1er ordre

    Hello ginafort !

    Les courbes que tu obtiens montrent clairement et avec certitude ce qui ne va pas dans ta programmatiom.
    Le défaut principal est que tu ne fais pas d'intégration.
    - La première courbe représente la fonction :
    =(1./((1/c1)+1./(c2*y.^(2*c3).*exp(-y/16).*(1-exp(-y/c5)))));
    avec les paramètres : c1=0.71;c2=0.033;c3=1;c5=26;
    Elle ne représente pas V(y) qui devrait être l'intégrale de cette fonction et non pas la fonction elle-même.
    - La seconde courbe représente la fonction :
    =(1./((1/c1)+1./(c2*y.^(2*c3).*exp(-y/16).*(1-exp(-y/c5)))));
    avec les paramètres : c1=0.71;c2=0.214;c3=0.5;c5=26;
    Elle ne représente pas la suite de l'intégrale puisque l'intégration n'est pas faite.
    Remarque : Le paramètre c4 n'est pas écrit dans la fonction. Il est fixé = 16. Il n'est donc pas égal à 720 dans le deuxième programme.

  22. #21
    inviteddea7c56

    Re : résoudre éq dif du 1er ordre

    merci beaucoup JJacquelin sur votre remarque :

    "Le paramètre c4 n'est pas écrit dans la fonction. Il est fixé = 16. Il n'est donc pas égal à 720 dans le deuxième programme. "

    effectivement c'été une erreur de ma part, je l'ai corrigé et j'ai eu la courbe si attaché,
    le resultat est mieux mais il ya toujours une petite discontinuité!!!!

    et aussi vous m'aviez dit que:

    "Le défaut principal est que tu ne fais pas d'intégration."

    mais si!!!!!!car normalement j'ai intégré on ecrivant:
    .....
    y1=1./((1/c1)+1./(c2*y.^(2*c3).*exp(-y/16).*(1-exp(-y/c5))));
    int=(y1);
    plot(y,int)

    c'est quoi le probleme!!!!!"int" ne veut pas dire integrer!!!!
    Images attachées Images attachées  

  23. #22
    invite06622527

    Re : résoudre éq dif du 1er ordre

    Mallab ne donne pas le même résultat que le mien (graph joint) parce qu'il n'est pas bien programmé. Si non il aurait donné probablement à peu près la même chose.
    Il faudrait étudier, dans le manuel d'utilisation de Matlab, comment on programme une intégration.
    Images attachées Images attachées  

  24. #23
    naffrancois

    Re : résoudre éq dif du 1er ordre

    Salut voilà ce que j'obtiens avec matlab et la fonction ode45. As-tu regardé l'aide de matlab et le fonctionnement de cette fonction ? C'est assez détaillé et il y a même un exemple.

    Comme le dis bien Jjacquelin ce que tu traces n'est que le membre de droite de ton equation, ce n'est pas la solution de l'équation différentielle !

    Le code Pascal de Jjacquelin utilise la méthode d'intégration d'Euler, va voir sur wikipédia comment ça fonctionne et tu comprendras l'algorithme.

    ode45 utilise un algorithme de la famille des méthodes de Runge-Kunta
    Images attachées Images attachées  

  25. #24
    invite06622527

    Re : résoudre éq dif du 1er ordre

    Je suis d'accord avec ce qu'a écrit naffrancois .
    Il est certainement préférable d'utiliser la procédure d'intégration fournie par Matlab. La méthode d'intégration du genre Runge-Kunta (probablement améliorée) est meilleure que celle d'Euler qui est la plus élémentaire possible. Je l'ai utilisée pour que ce soit plus simple à comprendre.
    Il est visible que la courbe obtenue par naffrancois est différente de celle que j'ai obtenue. La raison est probablement la suivante : Dans le calcul programmé par naffrancois, les constantes sont certainement c1=0.71; c2=0.033; c3=1; c4=16; c5=26; et elles ne semblent pas être modifiées pour y>20 (le deuxième jeux de constantes n'est probablement pas utilisé. J'obtiens la même courbe que naffrancois si je supprime le changement de constantes )
    Avec le deuxième jeux de constantes c1=0.71; c2=0.214; c3=0.5; c4=720; c5=26; l'asymptote horizontale ne devrait apparaître que pour des y beaucoup plus grands (à cause du 720 au lieu de 16), probablement lorsque y arrive dans la zône 5000 à 10000.

  26. #25
    inviteddea7c56

    Re : résoudre éq dif du 1er ordre

    vous voulais dire que mon programme est faux? donc la commande que j'ai utiliser "int" pour calculer l'integrale est fausse?

    SVP DONNEZ MOI PLUS DE DETAIL, OU ES L'ERREURE EXACTEMENT dans mon programme!!!
    est ce que je dois utiliser ODE45?

  27. #26
    invite1e252b6d

    Re : résoudre éq dif du 1er ordre

    slt tt le monde est ce que vous pouvez m'aidez j'ai posté un message sur le theme des probabilités help me

  28. #27
    naffrancois

    Re : résoudre éq dif du 1er ordre

    ah oui merci je me suis bien trompé, le copier-collé m'a eu. Avec les bons jeux de constantes j'obtiens bien la même chose que Jjacquelin

    @ginafort: oui ton programme est faux: tu as une équation V'(y)=f(y,V(y))=f(y) (le terme de droite ne dépend pas de V) Dans la première page tu traces la fonction f(y), alors que tu veux la fonction V(y). Dans la deuxième page tu essayes via la fonction int(). Je me suis demandé ce que faisait cette fonction quelques temps... c'est une fonction de calcul symbolique, formel (Matlab gère quelques fonctions du calcul formel, je ne savais pas). Avec cette fonction tu demandes à Matlab de calculer une expression analytique de la primitive du membre de droite. Je ne sais pas comment tu as obtenu ta courbe de la page 2 avec cette fonction car je ne pense pas que l'expression du membre de droite puisse admettre une primitive simple, et chez moi int(membre de droite) ne marche pas, Matlab ne trouve pas. D'ailleurs si tu veux t'en convaincre, utilise un logiciel de calcul formel comme Maple ou Matematica.

    Une fois que tu as compris que tu ne peux résoudre cette équation que par méthodes numériques. Je t'invite à:
    1) Comprendre la méthode d'Euler, et comprendre le programme Pascal de JJacquelin.
    2) Transcrire le programme Pascal en Matlab
    3) Utiliser la fonction ode45 de Matlab pour vérifier les résultats obtenus avec la méthode d'Euler que tu auras programmée

    Je te conseille vivement de commencer par 1), car utiliser directement les fonctions préprogrammées n'apporte pas beuacoup de connaissances.

    Donc est-ce que tu comprends la méthode d'Euler ? Si oui comprends-tu le programme Pascal ?

    et petit rappel: avec la commande help dans Matlab tu peux avoir de l'aide sur n'importe quelle fonction
    help if
    help for
    help int
    help ode45...etc

    @karminfo: désolé les probas j'ai oublié
    Images attachées Images attachées  

  29. #28
    invite06622527

    Re : résoudre éq dif du 1er ordre

    OK naffrancois, on est d'accord.
    Pour moi ce topic est terminé. Avant d'effacer mon petit programme, voici un dernier calcul ( y= 0 ... 10000) qui montre le plafonnement de l'intégrale.
    Images attachées Images attachées  

  30. #29
    inviteddea7c56

    Re : résoudre éq dif du 1er ordre

    Je vous remercie tous pour toute l'orientation que vous m'aviez apporté...
    je vais faire de vos conseils pour reussir ma programmation.

  31. #30
    naffrancois

    Re : résoudre éq dif du 1er ordre

    bien

    hésite pas à revenir, quand tu auras avancé, pour poster ton code et tes résultats ou poser d'autres questions

Page 1 sur 2 1 DernièreDernière

Discussions similaires

  1. DL 1er ordre
    Par invitea9cf3f9a dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 23/04/2010, 15h57
  2. ED linéaire du 1er ordre
    Par invite5c48f8c5 dans le forum Mathématiques du supérieur
    Réponses: 5
    Dernier message: 31/08/2009, 13h31
  3. Equa diff 1er ordre
    Par inviteb4d8c3b4 dans le forum Mathématiques du collège et du lycée
    Réponses: 12
    Dernier message: 08/04/2009, 18h31
  4. Equa dif 4ème ordre
    Par invite56fdce42 dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 22/05/2007, 12h30
  5. Resoudre Equation diff. non linéaire 1er ordre
    Par invite8f3ed413 dans le forum Mathématiques du supérieur
    Réponses: 7
    Dernier message: 21/01/2006, 12h15