Iteration matlab

Fermé
mino_sa Messages postés 1 Date d'inscription lundi 11 mars 2013 Statut Membre Dernière intervention 11 mars 2013 - 11 mars 2013 à 04:40
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 12 mars 2013 à 10:42
Bonjour,

je suis debutant en matlab et je veux faire une iteration pour converger la valeur de a
jusqu'a 1/3, sachant c'est condition d'initialiser (a=0).

et voila mes equation:
a=0; a1=0;
% Calcul de Phi
Phi=atan((1-a)*V/((1+a1)*om*r));
% Calcul de alpha
alpha=Phi-0.5;
cl=2*3.14*alpha;
cd=3.14*alpha;
cn=(cl*cos(Phi))+(cd*sin(Phi));
ct=(cl*sin(Phi))-(cd*sin(Phi));
% Calcul de a
a=1/((4*sin(Phi)^2)/(sigma*cn)+1);
a1=1/((4*sin(Phi)*cos(Phi))/(sigma*ct)-1);

1 réponse

Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
11 mars 2013 à 09:37
a=0; a1=0;
while a!=1/3
% Calcul de Phi
Phi=atan((1-a)*V/((1+a1)*om*r));
% Calcul de alpha
alpha=Phi-0.5;
cl=2*3.14*alpha;
cd=3.14*alpha;
cn=(cl*cos(Phi))+(cd*sin(Phi));
ct=(cl*sin(Phi))-(cd*sin(Phi));
% Calcul de a
a=1/((4*sin(Phi)^2)/(sigma*cn)+1);
a1=1/((4*sin(Phi)*cos(Phi))/(sigma*ct)-1);
end; 
comme ça ?
0
Krys_06 Messages postés 22 Date d'inscription jeudi 7 mars 2013 Statut Membre Dernière intervention 29 mars 2013
12 mars 2013 à 09:31
Il est dangereux de mettre des égalités parfaites entre flottants comme critère de sortie d'une boucle. Du fait des arrondis de calcul, l'égalité peut ne jamais être rencontrée.
Dans le cas présent, il faudrait plutôt mettre quelque chose du genre:

while (abs(a -1/3) > eps(1/3))
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
12 mars 2013 à 10:42
Tout à fait. Il faut ajuster en fonction de la précision rechercher.
0