Equation différentielle : Problème!

Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
Yipee
Membre Relatif
Messages: 256
Enregistré le: 15 Déc 2005, 08:34

par Yipee » 27 Juil 2006, 15:24

Je suis peut-être ramolli par la chaleur, mais je crois que mon calcul est bon. Par contre je suis d'accord pour la résolution.



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

par buzard » 27 Juil 2006, 15:41

bon alors je te fais une demo, c'est quand meme dommage pour un simple signe

dh/dt=-8/(1-h)+6h-10

(1-h)dh/dt=-8+6h(1-h)-10(1-h)=-6h²+16h-18

(1-h)/(-6h²+16h-18)dh=dt

(h-1)/(6h²-16h+18)dh=dt

On va dire que le soleil tappe un peu fort. Couvre toi le chef si tu sort, au risque de te payer une calvicie de prof de maths. :we:

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

par Yipee » 27 Juil 2006, 16:27

Il me semble que c'est -6h dans la première ligne.

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

par buzard » 27 Juil 2006, 16:45

autant pour moi, :hum:

une fois mal ecrite sur le papier l'erreur de signe s'est propagé (c'est comme la stabilité des méthodes RKn). Mais bon fondammentellement ca ne change que quelques signes et valeurs. De toute façon c'est la méthode qui est importante.

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

par Yipee » 27 Juil 2006, 17:23

Je suis d'accord.

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

par MonsieurK » 28 Juil 2006, 08:15

ALors en fait j'ai eu quelques problèmes avec les résultats de NOXn je trouve une droite (des solutions) croissante, alors qu'elle ne devrait pas l'être (je connais la forme des solutions)!
Donc d'aprés vous la solution serait de mettre les h d'un coté et les rt de l'autre, puis d'intégrer des deux coté c'est ça? Pouriez vous me reexpliquer la méthode à adopter? Et comment m'y prendre avec scilab puisque je pense résoudre avec cet outils!
Merci d'avance à tous :)
++++

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

par nox » 28 Juil 2006, 08:59

une droite??????

non ce que je t'ai envoyé en graph c'est pas une droite ^^

par contre c'est vrai que c'est croissant...le ODE45 se serait planté?(ou le nox plus probablement...bien que ca m'ait l'air juste :p) :/

Avatar de l’utilisateur
mathelot
Habitué(e)
Messages: 13686
Enregistré le: 08 Juin 2006, 08:55

par mathelot » 28 Juil 2006, 09:13

l'équation à résoudre est:

cherchons si cette équation a une solution particulière
constante:
k est racine de l'équation du second degré d'inconnue k:

soit une solution et la fonction constante correspondante:
en posant , u est solution de:

sauf erreur de calcul.
Enfin, cette dernière équation est à variable séparée et se résoud avec logarithme et arctangente.Elle donne la variable en fonction de la variable et il faut donc inverser la relation,au moins théoriquement !

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

par nox » 28 Juil 2006, 09:22

mathelot a écrit:



c'est pas ?

Et au final on revient plus ou moins au point de départ non?L'équation était déjà à variables séparables comme le montre le joli calcul de Buzard et Yipee ^^

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

par MonsieurK » 28 Juil 2006, 09:48

:briques: Arf Nox je me suis mal exprimé, je reprends: je voulais dire que ce que toi tu m'avais envoyé ça avait une belle gueule mais croissante (comme je connais l'allure de ma solution je sais qu'il me faut quelque chose de décroissante: C'est une variation de volume et mon volume diminue en fonction du temps...). DOnc ce que j'ai fait c'est que j'ai récupéré/adapté ton expression à Scilab (en esperant trouvé un truc comparable mes décroissant) et je trouve comme d'habitude: du caca! DOnc evidément je me dis que c'est moi qui me plante sous Scilab. Voici mon code sce:

deff("ydot=f(x,y)" , "ydot=((-1*10^(-10))/196.38)*((3798.1*(0.760-y*0.19638)^(-1))+9810*y-101300)")
x0=0 ; y0=0 ; x=0:1:5000;
y=ode("rk", y0 , x0 , x , f );

avec rk comme Runge Kutta ^^

Un grand merci à vous pour vos commentaire j'étudie ça là, je regarde...
A toute!
:id:

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

par nox » 28 Juil 2006, 09:52

dsl mais je ne connais pas le code scilab ^^
mais bon ca à l'air d'être un truc dans ce genre la

tu obtiens quoi?

et tu es sûr de ton équation?Ma programmation me parait correcte et je crois que la solution sortant des calculs de Buzard est croissante aussi (mais ca je l'ai programmé à l'arrache...à vérifier)

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

par MonsieurK » 28 Juil 2006, 10:07

ALors moi j'obtiens une droite du genre f(x)=0,0000002x passant par l'origine donc.... Completement foireux :marteau: . Non mais voilà je me suis peut être trompé dans l'equation au départ...En tout cas ce que tu m'as donné resemble vraiment à quelque chose. Donc a mon avis me suis planté quelque part avant...Je vais regarder :zen:

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

par nox » 28 Juil 2006, 10:10

prends un intervalle de temps assez grand...tu peux aller sans probleme jusqu'à 100 000 le calcul est instantané. Si ton intervalle de temps est trop petit ca ressemblera toujours à une droite ^^

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

par MonsieurK » 28 Juil 2006, 10:46

Ben j'ai fait jusqu'à 100000 et plus encore...Et toujours cette droite pourie.
A mon avis il y a un probleme avec l'ODE ou alors j'affiche mal ma courbe.
Quelqun saurait vérifier mon code Scilab sité plus haut?
Sinon je viens de raisonner et la formule devient positive (on enleve le moins de départ) ce qui est curieux c'est qu'on trouve que h s'annule rapidement ce qui est impossible dans la pratique: le volume qu'on etudie ne peut pas être passé aussi rapidement à zéro...
Etrange...Je continue :)

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

par nox » 28 Juil 2006, 11:02

tu n'affiches peut-être pas la bonne donnée...

je pense que ta solution est bonne mais que tu n'affiches pas ce qu'il faut...

Quel est ton code pour afficher?

Avatar de l’utilisateur
mathelot
Habitué(e)
Messages: 13686
Enregistré le: 08 Juin 2006, 08:55

par mathelot » 28 Juil 2006, 11:09

nox a écrit:L'équation était déjà à variables séparables comme le montre le joli calcul de Buzard et Yipee ^^

Exact, j'étais en retard dans la discussion. MonsieurK a de mauvaises méthodes de travail. Je lui conseille:
1) de remplacer toutes les valeurs numériques qui polluent par des coefficient littéraux (des lettres) pour avoir une équa diff initiale bien propre.
2)intégrer cette équation et obtenir la solution
3)la tracer
4)faire ensuite une symétrie par rapport à la première bissectrice, droite d'équation pour obtenir la solution finale.

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

par MonsieurK » 28 Juil 2006, 11:14

Oui tu as completement raison, je recommence là!
Merci pour les conseils hein?! :we:

Je vous tiens au courant...

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

par buzard » 28 Juil 2006, 11:53

mathelot a écrit:Enfin, cette dernière équation est à variable séparée et se résoud avec logarithme et arctangente


La première equation aussi est à variable séparée, nul besoin de chercher une solution constante. C'est pas parce qu'il y a un +10 dans l'equation initiale qu'il faut à tout pris le virer.

Bon pour revenir à l'equation elle-même. Elle est à variable séparée car elle ne fait pas apparaitre le t, toute les solutions seront des décalage temporelle d'une d'entre elle.

Je dirais que suivant les valeurs des coefficients et le domaine sur lequel tu evalue la fonction, il est normal que tu obtienne une solution quasi linéaire. Imagine que dans ce domaine la dérivée soit tres proche d'une constante.

x0=0 ; y0=0 ; x=0:1:5000;
y=ode("rk", y0 , x0 , x , f );

pour la définition du pas de subdivision, t'y va un peu trop à la légère. des pas de 1 vont sans doute t'introduire des tonnes d'erreurs. puis de 0 à 5000 je vois pas l'utilité, à mon avis tu voulais calculer pour x de 0 à 1 avec 5000 points :
0:1/4999:1 ou mieux linspace(0, 1, 5000)

pourquoi ne pas utiliser l'integration explicite, ensuite tu trace juste ta fonction. Dans mon premier poste il ya la démarche à suivre. tu suit la même méthode en appliquant tes valeurs numérique, et c'est finis. tu peut même traiter le cas générale, comme ça tu paramètre tes fonctions avec les coefficients.

function [z]=f(x,y,a)
z = a(1)*y+a(2)+a(3)./(y-a(4))
endfunction

alors plus besoin de tout changer à chaque modification des parametres. Dans les procédures qui attendent une fonction il faut alors donner :
list(f, a) comme parametre à la place de f tout seule.

sinon tu peut utiliser des paramètres globaux, mais il faut faire attention à ne pas les modifier accidentellement :

a=...; b=...; c=...; d=...;
function [z] = f(x,y)
z = a*y+b+c./(h-d)
endfunction

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

par nox » 28 Juil 2006, 13:29

aaaah oui bien vu Buzard j'avais pas fait gaffe...c'est sur qu'un pas de 1 c'était pas terrible ^^...vaut mieux "linspacer" (c'est la même fonction en scilab?)

le fouineur
Membre Relatif
Messages: 145
Enregistré le: 01 Mai 2006, 11:21

par le fouineur » 30 Juil 2006, 17:04

Bonjour à tous,

J'ai lu avec une curiosité croissante tous vos messages sur la façon de résoudre cette équation différentielle récalciltrante.J' avoue que je suis un peu bloqué par la forme dont elle se présente...On est tous d' accord pour affirmer qu'il s'agit d'une équation linéaire car elle reste du premier degré par rapport à y(t) et à sa dérivée y'(t).Je constate également qu'elle est à variables séparables puisqu'on peut mettre h et dh dans un membre et dt dans l'autre...
Mais personne n'a poposé sa solution sous la forme: h(t)=....

En particulier buzard,explicite ton changement de variable car je n' ai rien compris....et donnes si tu peux la solution finale que tu obtiens sous la forme:
h(t)=....(solution étant débarrassée des variables intermédiaires bien sûr)

Je tiens aussi à vous préciser que "Mathematica" (version 5.2) est en échec pour cet exemple....Et pourtant il donne un résultat bien différent de "Maple":
InverseFunction[1/78*[(13+Sqrt(13))*ln[4+Sqrt(13)-3]-(-13+Sqrt(13))*ln[-4+Sqrt(13)+3]]*(-2*t+Cste)
Autant dire qu'il est incapable d'intégrer cette équation différentielle....D' ailleurs il bippe et spécifie que la solution ne peut être exprimée par la voie algébrique.

Merci de reprendre ce problème avec plus de rigueur

Cordialement le fouineur

 

Retourner vers ✯✎ Supérieur

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 73 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