Problème pour MATLAB ode45

Fermé
Francesco - 22 août 2004 à 18:09
 pom - 23 août 2004 à 17:16
J'ai besoin d'intergré l'équation différentielle de second ordre, avec la fonctionde routine 'ode45' de mon logiciel MATLAB STUDENT EDITION (5) version anglaise.Comme on peut le voir dans la fonction 'yprime' la seconde ligne du tableau contient la variable Cd qui doit être interpolée depuis les vecteurs Re1 et Cd1 comme fonction de Re et donc de y(2). Mon programme dans sa forme actuelle ne donne pas de résultats fiable.
Quelqu'un peut-il,svp, me fournir la solution du problème. Merci!
Programme:
function yprime=pmat1b(t,y);
l=9.81;
R=0.5;
g=9.81;
r1=1180;
r2=1000;
n2=1.145*10^-3;
J=((4/3)*pi*R^3*r1)*[(2/5)*R^2+l^2];
Fpa=(4/3)*pi*R^3*g*(r1-r2);
S=pi*R^2;
B=(1/2)*r2*S*l^2;
Re=abs(2*R*l*r2*(y(2))/n2);
if Re<0.0001
Cd=0;
else Re1=[0.0001 0.001 0.01 0.1 0.4 0.6 0.7 1 2 3 4 5 7 10 20 50 100 200 500 1000 3000 5000 7000 10000 20000 30000 50000 70000 100000 150000 200000 250000 300000 400000 500000 1*10^6 1*10^7 1*10^8 1*10^9];
Cd1=[240000 24000 2400 240 60 40 36 26 14.5 10.5 8.4 7.1 5.6 4.5 2.9 1.7 1.1 0.78 0.54 0.45 0.4 0.4 0.4 0.41 0.45 0.5 0.55 0.58 0.6 0.54 0.43 0.3 0.08 0.13 0.14 0.16 0.18 0.2 0.22];
Cd=interp1(Re1,Cd1,Re,'spline');
yprime=[y(2)
-(l/J)*(Cd*B*(y(2))^2+Fpa*sin(y(1)))];
A voir également:

2 réponses

Salut Francesco, j'ai un peu de mal à comprendre l'interpolation. On interpole quoi à partir de quoi (qu'est-ce que la variable Cd1 etc...)

Ce que je peux te dire
1) yprime DOIT etre un vecteur COLONNE
2) tu as oublié le end à la fin du if ... else

Si tu interpole une fonction, sache que tu peux avoir le phénomène de Runge : Plus tu interpoles une fct par un polynome de degré élevé et plus le polynome aura de grande "bosses" aux extrémités de l'intervalle (dans le cas 1d bien entendu)
Pour contrer cela, ne prend pas les polynomes de lagrange mais les polynomes de Chebycheff (arccos(cos(2x)) je crois, je pourrai te le confirmer plus tard si tu veux).


enfin, qu'est ce qui n'est pas fiable dans ton prgm ?

pom
0
j'ai oublié, si tu as un pb raide, utilise ode23s (s pour stiff, 23 pour une runge kunta à pas variable d'ordre 2)
ode113 est un peu mieux que ode45
ode45 est bien pour une 1e approximation

pom
0