Equation différentielle : Problème!

Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
MonsieurK
Membre Naturel
Messages: 13
Enregistré le: 27 Juil 2006, 08:40

Equation différentielle : Problème!

par MonsieurK » 27 Juil 2006, 09:01

Bonjour à tous,
Il s'agit ici de mon premier post sur ce forum alors j'espère que vous m'excuserez si je fais d'éventuelles maladresses... :we:
VOilà mon problème c'est que j'ai une equation différentielle avec laquelle je me bat depuis plusieurs jours. Je dois la résoudre rapidement car c'est dans le cadre de mon stage:

dh/dt = - 2 * { (4 / [1- h(t)]) + 3 h(t) - 5}

(Pour info je cherche à trouver la variation de hauteur d'un certain volume. J'ai simplifié les valeurs numérique, mais l'équation est exactement de cette forme!)

En fait le truc c'est que j'ai du h(t) au dénominateur. Ou plutôt du '1 - h(t)'. Je ne sais pas comment le passer au numérateur...
Je ne cherche pas à faire des calculs détaillés sur papier mais simplement de tracer une courbe des solution de h(t). J'ai donc essayé d'utiliser des logiciel de calcul type Dynamics Solver ou Scilab (même excel :we: avec les macros!)Mais sans résultats (en fait je trouve en solution une droite affine décroissante...). Quelqun pourait peut-être aussi m'aider sur l'utilisation d'un éventuelle outils (sachant que je n'ai pas MAthlab!!!)?!
Un grand merci d'avance àtous,
Bonne journée,
++++++++++



nox
Membre Complexe
Messages: 2157
Enregistré le: 14 Juin 2006, 10:32

par nox » 27 Juil 2006, 09:06

Il faudrait avoir les conditions limites pour trouver la solution exacte

MonsieurK
Membre Naturel
Messages: 13
Enregistré le: 27 Juil 2006, 08:40

Conditions aux limites

par MonsieurK » 27 Juil 2006, 09:08

Alors je connais la hauteur de départ:
h(0) = 2
C'est tout ce que j'ai!

nox
Membre Complexe
Messages: 2157
Enregistré le: 14 Juin 2006, 10:32

par nox » 27 Juil 2006, 09:19

alors voila la magnifique réponse de Maple :




super...

kms040584
Membre Naturel
Messages: 22
Enregistré le: 12 Juil 2006, 11:11

par kms040584 » 27 Juil 2006, 09:24

salut,
c'est quoi ce "Z"?

nox
Membre Complexe
Messages: 2157
Enregistré le: 14 Juin 2006, 10:32

par nox » 27 Juil 2006, 09:26

eh ba c'est ce que je suis en train de chercher............maple c'est champion pour te sortir des réponses plus complexes que la question...

pourtant le code est pas tres mystérieux :

dsolve({diff(h(t),t)=-2*((4/(1-h(t))+3*h(t)-5)),h(0)=2}, h(t));

MonsieurK
Membre Naturel
Messages: 13
Enregistré le: 27 Juil 2006, 08:40

Us!!!

par MonsieurK » 27 Juil 2006, 09:26

Ouai c'est clair, c'est quoi ce Z?

nox
Membre Complexe
Messages: 2157
Enregistré le: 14 Juin 2006, 10:32

par nox » 27 Juil 2006, 09:29

If Maple has to invent a new variable to produce the answer to something it will use names prefixed with underscore.

> solve(x^4+x-1);


RootOf(_Z4+_Z-1)

Maple is unable to find an explicit formula for the roots of the 4th order polynomial above so it introduces a new name _Z and describes the answer using the RootOf function


donc le Z ca serait le h...


PS : je pense que d'autres pourront mieux t'aider sans passer par un logiciel. Je suis pas super calé en EDO. Au pire on trouvera une solution approchée pour ca les méthodes ne manquent pas...

MonsieurK
Membre Naturel
Messages: 13
Enregistré le: 27 Juil 2006, 08:40

par MonsieurK » 27 Juil 2006, 09:40

Ben en fait j'ai pas mapple (d'ailleur est-il téléchargeable? Libre?) mais il va faloir que je trouve une solution avec les vrais valeurs... Mais je suis déja je suis super content de voir que la solution resemble à autre chose qu'a une fonction affine!!!!
Just un truc les ODE c'est les solveurs d'equa diff c'est ça?

Si il y a des gens bien callé en Scilab et qui serait pret à m'aider pour programmer ça?

Merci à tous :we:

PS: La vrai équation (celle avec les vrais valeurs ) est:
dh/dt=((-1*10^(-10))/196.38)*((3798.1*(0.760-h(t)*0.19638)^(-1))+9810*h(t)*-101300)

nox
Membre Complexe
Messages: 2157
Enregistré le: 14 Juin 2006, 10:32

par nox » 27 Juil 2006, 09:43

Maple est payant (officiellement :p)

les ODE oui c'est des solveurs bien sympathiques. Le mieux sont ODE45 (Runge Kutta je crois) et ODE113(ca ca doit être adams-moulton ou un truc du genre).

De mon côté j'utilise matlab et non scilab donc le code n'est pas exactement le meme...

mais bon normalement :

[temps,y] = ode45(@fonction,[t0 tf],2);
plot(temps,y);

un truc dans le genre...

PS : la solution de la vraie équation a une bonne tête...je vous l'épargne ici mais ca vaut le coup d oeil :ptdr:

MonsieurK
Membre Naturel
Messages: 13
Enregistré le: 27 Juil 2006, 08:40

par MonsieurK » 27 Juil 2006, 10:02

:we: Sous maple mon equation donnerait ceci:
dsolve({diff(h(t),t)=((-1*10^(-10))/196.38)*((3798.1/(0.760-h(t)*0.19638))+9810*h(t)*-101300),h(0)=3.77}, h(t));
Ma première question est : Pourais tu me sortir des valeurs de h dans un txt, pour que je puisse tracer sous Excel car c'est assez urgent et je n'ai pas Maple! Bon evidement il faut que tu es le temps. Laisse tomber si tu n'en as pas ok?! Mais ça serait méga sympa!!! :)
Et ma deuxième question c'est: qu'est ce que Z? J'ai pas bien compris l'explication...
Merci d'avance!

nox
Membre Complexe
Messages: 2157
Enregistré le: 14 Juin 2006, 10:32

par nox » 27 Juil 2006, 10:06

en fait quand Maple n'arrive pas à trouver une solution explicite à une équation (différentielle ou non) il utilise l'expression "RootOf" et une variable auto-générée (wow...ca pete ca comme mot) en l'occurence Z (précédée d'un "_" pour indiquer que cette variable est générée par Maple).

Dans l'exemple tout simple du post un peu plus haut on voit en fait qu'il remplace juste la variable de départ par _Z quoi en gros ^^

Pour les valeurs de h ca peut se faire mais plutot avec Matlab...
(le code que je t'ai passé pour scilab ne marche pas?)

Mais il me faut un intervalle de temps...

MonsieurK
Membre Naturel
Messages: 13
Enregistré le: 27 Juil 2006, 08:40

par MonsieurK » 27 Juil 2006, 10:14

OK j'ai tout compris merci :)
Avec Scilab ça ne marche pas non j'ai essayé plein d'expression mais rien à faire...
Si tu as le temps de faire ça sous Maple ça serait top :hein:
LEs variation de temps tu fais ça entre 0 et 1000 j'en sais trop rien en fait...
OUai je pense qu'entre 0 et 1000 ça irait! un peu moins si ça met trop de temps...et un peu plus si ça ne met pas beaucoup plus de temps... :we:
Merciiii :)

PS: Mon adresse mail si parfois tu as le temps d'envoyer un txt: [email]***[/email]

Je regarde toujours quand même sous Scilab ...

nox
Membre Complexe
Messages: 2157
Enregistré le: 14 Juin 2006, 10:32

par nox » 27 Juil 2006, 10:24

ok jviens de le faire je t'envoi ce que j'ai...

MonsieurK
Membre Naturel
Messages: 13
Enregistré le: 27 Juil 2006, 08:40

par MonsieurK » 27 Juil 2006, 10:30

Super :id:
10000 x Merci,
Je regarde ma messagerie! :)

nox
Membre Complexe
Messages: 2157
Enregistré le: 14 Juin 2006, 10:32

par nox » 27 Juil 2006, 10:37

envoyé ^^

bon jvais prendre une pause café :p

MonsieurK
Membre Naturel
Messages: 13
Enregistré le: 27 Juil 2006, 08:40

par MonsieurK » 27 Juil 2006, 10:41

Yes bien reçu!! Bon café :we:
Merciiiiiii

buzard
Membre Relatif
Messages: 274
Enregistré le: 22 Mai 2006, 15:29

par buzard » 27 Juil 2006, 12:13

Dit de manière plus simple ça donne ceci :

ton equation est à variable séparable, i.e. tu peut mettre les h d'un coté et les t de l'autre :



ce que fait maple c'est de chercher une primitive de chaque coté de l'egalité :

F(h) = 6t+Cst

les solutions de l'equation différentielle sont alors obtenus par résolution de l'equation précedente (d'ou les rootOf dans la solution). En ce qui concerne la pratique tu peut dessiner t en fonction de h (c'est pas génant tant qu'ils sont placés sur les bons axes)


pour résoudre à la main il vaut mieux poser le changement de variable :



l'equa diff devient alors :



En integrant on obtient tout simplement :



Ou C est une constante réelle fixé par les conditions initiales.

Yipee
Membre Relatif
Messages: 256
Enregistré le: 15 Déc 2005, 08:34

par Yipee » 27 Juil 2006, 13:36

Euh, je pense que tu as fait une erreur de calcul (ou c'est moi...) dans l'expression de l'equation. C'est plutôt



Cela change un peu la manière d'intégration.

buzard
Membre Relatif
Messages: 274
Enregistré le: 22 Mai 2006, 15:29

par buzard » 27 Juil 2006, 14:58

Non je crois pas m'etre trompé, fait gaffe au signes c'est tout.

Sinon la forme de la solution dépend des poles de la fraction rationnelle dans le membre de gauche :

2 pôles complexes : a*ln(1+u^2) + b*atan(u)

1 pôle réel : a*u + b/(u-r) (ca s'inverse facilement)

2 pôles réels : a*ln(u-r1)+b*ln(u-r2) (s'inverse si a et b on des valeurs convenables)

Il faut faire attention au domaine de validité de ton equation différentielle, dans l'exemple que tu donne tu doit résoudre pour des intervalles ou h(t) ne prend pas la valeur 1.

A part ça, Scilab c'est le top pour ça. Tu doit quand meme faire la résolution théorique de l'equa diff (avec des coefficients formelles), après tu crée juste tes fonctions qui te trace tes solutions.

Ici vu que c'est solvable, on préfère éviter d'utiliser des méthodes de résolution approchées comme les RKn, tu auras des problèmes de stabilité de ta methode, et les calculs seront trés sensibles à la propagation des erreurs d'approximation.

Il vaut mieux si tu veut utiliser des approximations, approcher la racine de (F(h)-at-C) (avec Newton par exemple) que d'approcher pas à pas la solution de l'equa diff.

 

Retourner vers ✯✎ Supérieur

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 24 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite