Wesh les kheys
petit souci ajd en scilab. j'ai un dm assez simple sur la resolution numérique de l'équation différentielle de reynolds, à la fin j'ai une dichotomie à faire, comme expliqué dans l'énoncé. je dois trouver le paramètre Q tel que u(L) = 0. c'est à dire que la dernière coordonnée de mon vecteur u soit = à 0. je sais que ce Q est proche de 0.916. mais je n'arrive pas à coder ma dichotomie proprement.


donc voici l'énoncé
le code de la question 3 qui vous permet d'avoir u :
function[u]= reynolds(Q,h,p)
u(1)=0;
v(1)=((h(1)-Q)/((h(1))^3));
dh=(-(%pi)/(2*L))*sin((2*%pi/L*x));
for k=2:length(h)
v(k)=v(k-1)+p*((dh(k)/h(k)^3) -3*(dh(k)/h(k))*v(k-1));
u(k)=u(k-1)+p*v(k-1);
end
u
endfunction
pour l'avoir affichée en plot, il suffit de taper au préalable L=1 ; p=0.01; h=1+0.25*cos(2*%pi*L) puis de faire plot(u), comme indiqué question 4
Maintenant, là où je galère, c'est question 5. j'ai essayé de trouver des codes de dichotomie scilab ... je sens être proche du but mais mon code est encore brouillon. le but est vraiment de faire varier le paramètre Q de manière à obtenir u($) = 0 (le plus proche possible en tout cas.)
Donc je me doute que j'ai mon while avec une condition que je galère à définir, ainsi qu'un if ... mais c'est la galère.
voici mon code actuel pour la question 5 
function [Q] = dicho(a,b)
u=reynolds(a,h,p); // donc là je récupère ma fonction ...
while (abs( u($)>10^-3) // j'ai mis 10^-3 car je peux pas exiger >0, précision machine tout ça ...
X=0.5*(a+b);
u=reynolds(X,h,p); // là je vois bien que par exemple si je prends a=0 et b=1 bah X=0.5, je suis déjà en dessous de ce que je recherche comme valeur de Q (~0.916) donc je suis censé remonter !
if u($)>0 then // là ça part en freestyle je sais pas du tout comment faire ...
b=(a+b)/2;
else
a=(a+b)/2;
end
end
Q=X;
endfunction
Enfin bref, il n'y a pas besoin de plancher le DM 3h si vous êtes famillier du principe de la dichotomie, mais là j'ai vraiment du mal 
merci d'avance pour ceux qui aideront !