Iteration matlab

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

  1. Contributeur
    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 ?
    1. 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))
    2. Contributeur
      Tout à fait. Il faut ajuster en fonction de la précision rechercher.