Problème pour MATLAB ode45
Francesco
-
pom -
pom -
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)))];
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:
- Ode45 matlab français
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Dernière version ccleaner gratuit français - Télécharger - Nettoyage
- Télécharger adobe reader 9.1 français gratuit - Télécharger - PDF
- Fixwin 11 en français - Télécharger - Divers Utilitaires
- Telechargement film d'action complet en francais - Télécharger - TV & Vidéo
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
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