[Matlab] Équation différentielle

Résolu/Fermé
Alphatrion Messages postés 12 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 17 février 2014 - 5 mai 2009 à 11:38
Fee Fay Messages postés 635 Date d'inscription vendredi 17 octobre 2008 Statut Membre Dernière intervention 31 mai 2009 - 16 mai 2009 à 03:39
Bonjour,
Je cherche à résoudre l'équation différentielle suivante sous Matlab :

function dh = eq(x,h)
dh = (i-Q^2*(L+2*h)^(4/3)/(L^(10/3)*h^(10/3)*k^3))/(1-Q^2/(L*g*h^3));

h est ma variable, les autres lettres sont des constantes (c'est la courbe de remous d'un écoulement en conduite pour ceux que ça intéressent)

j'appelle ma fonction depuis un autre fichier .m

[x,h] = ode45('eq', [0 10] , 0.05) ;

et matlab me sort l'erreur suivante :
Warning: Mixture of single and double data for 't0', 'y0', and 'f(t0,y0)' in call to ode45.
> In funfun\private\odearguments at 139
In ode45 at 173
In ligne_remous at 1

Est-ce que vous voyez mon erreur, ça fait un moment que je cherche un vain...
merci

1 réponse

Fee Fay Messages postés 635 Date d'inscription vendredi 17 octobre 2008 Statut Membre Dernière intervention 31 mai 2009 375
16 mai 2009 à 03:39
Bonjour mon ami !

J'espère que depuis tout ce temps tu as trouvé la solution mais juste au cas où... ;-)
Il est plus que vraisemblable que certaines de tes constantes soient des réels simple précision.
Convertis-les avant de résoudre ton équation différentielle avec ode45.
Pour convertir un nombre en double précision, c'est tout simple.
x=double(x);
Je te souhaite une bien bonne nuit !
0