Voici un script qui me semble plus efficace mais assez peu lisible par un élève.
On peut peut-être simplifier la construction des tangentes.
La session même compressée ne passe pas (> 256 K)
Voici donc d'abord les deux fonctions utilisées (tracé des courbes/pente des tangentes):
Code : Tout sélectionner
Joukovsky(a,b,c,k):={
local z0,A,O,z,Z,C;
purge(t);
z0:=b+i*c;
A:=point(a);
O:=point(z0);
C:=couleur(cercle(O,A-O),k);
z:=z0+abs(A-O)*e^(i*t);
Z:=(z+a^2/z)/2;
retourne C,couleur(plotparam(Z,t=0..6.29,tstep=0.001),k);
}
:;
Pente(b,c,par):={//renvoie la pente de la tangente au point de paramètre par à la courbe de Joukovsky
local z,Z,D;
purge(v);
z:=b+i*c+abs(2.0-b-i*c)*e^(i*v);
Z:=(z+4/z)/2;
D:=diff(Z,v);
retourne subst(im(D)/re(D),v=par);
}:;
Puis le script auquel j'ajoute un test les angles de droites étant définis à pi près
(il faudrait le reprendre avec des angles de vecteurs...)
[Edit] Je modifie la ligne 5 pour que le point M ne soit pas le point d'affixe 2
Code : Tout sélectionner
b:=element([(-5) .. 5,-3.38,0.001]);
c:=element([(-5) .. 5,-1.94,0.001]);
Jf:=affichage(Joukovsky(2,0.4,2,1),nom_cache+1);
Jm:=affichage(Joukovsky(2,b,c,4),nom_cache+4);
M:=affichage(inter_unique(Jf[0],Jm[0],[2]),quadrant2);
t1M:=evalf(csolve(0.4+2i+abs(1.6-2i)*e^(i*t)=affixe(M),t))[0];
t2M:=evalf(csolve(b+c*i+abs(2-b-i*c)*e^(i*t)=affixe(M),t))[0];
nodisp(T1:=tangente(Jf[0],M,couleur=1+epaisseur_ligne_2));
nodisp(T2:=tangente(Jm[0],M,couleur=4+epaisseur_ligne_2));
angle(T1,T2,"α",couleur=2+epaisseur_ligne_2);
legende([50,50],"α= "+evalf(angle(T1,T2),10));
tc(z):=(z+4/z)/2;
Mj:=affichage(point(tc(affixe(M)),quadrant2));
nodisp(Tj1:=droite(Mj,pente=Pente(0.4,2,t1M), affichage=nom_cache+1+epaisseur_ligne_2));
nodisp(Tj2:=droite(Mj,pente=Pente(b,c,t2M),affichage=nom_cache));
angle(Tj1,Tj2,"β",couleur=2+epaisseur_ligne_2);
legende([50,70],"β= "+evalf(angle(Tj1,Tj2),10));
titre="La transformation de Joukovsky z->(z+4/z)/2 conserve les angles";
si abs(angle(T1,T2)-angle(Tj1,Tj2))>0.1 alors legende([50,90],"α et -β sont supplémentaires") sinon legende([50,90],"α et β sont égaux") fsi;