Bonsoir,
J'essaye actuellement de programmer ceci en maple:
En discrétisant les points d'un cercle de centre (0,0) de rayon 1 en n points équidistants, on obtient alors un polygone noté Pn qui approche ce cercle, faire alors une animation où l'on voit ce polygone s'approcher du cercle. Écrire ensuite une procédure péri(n) qui calcul le périmètre du polygone.
Merci à tous ceux qui peuvent m'aider
Edit jamo : forum modifié.
Salut !
Clairement, on va avoir besoin des racines n-ièmes de l'unité. Pour l'animation, tu peux utiliser l'option animate(, mais ici je lui préfère la commande display(
Pour péri(n), encore les complexes !
Sauf erreur, bien entendu
salut gui_tou, j'essaye déjà de discrétiser le cercle, mais difficile parce que je ne comprend pas ce mot ^^. Ce que j'essayais de faire c'est tracer un cercle mais non continue et essayer de rejoindre les extrémités des points, c'est ça ?
Bonsoir
Ce que te dit Guillaume, c'est que ces points ont pour affixe exp(2*i*k*pi/n) pour k entier prenant n valeurs consécutives (par exemple de 0 à k-1)
Ce sont les sommet d'un polygone régulier à n sommets.
Alain
Bonsoir
c1 := circle([0, 0], 1, color = blue);
c2 := polygon([seq([Re(exp((2*I)*k*Pi/n)), Im(exp((2*I)*k*Pi/n))], k = 0 .. n-1)], color = white);
Pour n := 4 ; on fait display(c1,c2) ; et on a ce que l'on veut.
Tu peux ensuite faire varier n dans une animation.
Finalement j'ai fait autrement pour l'animation, j'ai pas trouvé de suite..
with(plottools); with(plots);
c1 := circle([0, 0], 1, color = blue);
frame := proc (n) options operator, arrow; display(c1, polygon([seq([Re(exp((2*I)*k*Pi/n)), Im(exp((2*I)*k*Pi/n))], k = 0 .. n-1)], color = white)) end proc;
ANIM := [seq(frame(n), n = 1 .. 20)];
display(ANIM, insequence = true);
(C'est du copier coller de ma feuille Maple).
J'explique un peu :
On ne peut pas se servir de animate directement car ça prend comme argument un "plot".
Donc ici on va utiliser display en affichant les "frames" qui sont des images : display(c1,polygone à n arrêtes), et l'animation consiste à visualiser cette séquence d'images ANIM grâce à la commande insequence = true.
On peut aussi rajouter des effets de style dans ces display, par exemple thickness = 3 pour augmenter l'épaisseur des arrêtes.
PS : Pas besoin d'une procédure pour calcule le périmètre de ces polygones, une fonction suffit puisque l'on connait la formule qui donne le périmètre d'un polygone régulier : P = 2nRsin(a/2) avec R le rayon (ici 1) et a l'angle au centre (2pi/n).
Sinon,
>restart;
>L2:=[];L:=[];
> poly:=proc(n) local i,L:
for i from 0 to (n) do
L:=[op(L),[evalf(Re((exp(I*2*i*Pi/n)))),evalf(Im(exp(I*2*i*Pi/n)))]];
od:
end:
> plot(subsop(1=NULL,poly(5)));
Merci a vous tous, en fait ce que je trouvais pas c'était l'affixe des points du polygone (j'ai essayé une méthode très farfelue qui ne donnait rien ).
Par contre je ne comprend pas pourquoi vous ramenez la partie réel et imaginaire de exp(2*i*k*pi/n).
J'ai essayé de les enlever et ça marche tout aussi bien ^^
encore merci
guigui > ta procédure poly ça crée les coordonnées des sommets, mais qu'est-ce qui trace les segments ?
Et comment t'en fais une animation de ça ?
J'ai pas réussi à tout caser dans une seule procédure mais ça doit être faisable
> restart; with(plots):
> L2:=[];L:=[];
> poly:=proc(n) local i,L,k: # crée les coord des points sous forme de liste#
L2:=[]:L:=[]:
for i from 0 to n do
L:=[op(L),[evalf(Re((exp(I*2*i*Pi/n)))),evalf(Im(exp(I*2*i*Pi/n)))]];
od:
end:
> anim:=proc(n) local k: # crée l'animation #
for k from 1 to n do
graphe[k]:=plot(poly(k),x=-1..1):
od:
display(seq(graphe[k],k=1..n),insequence=true,scaling=constrained,title=`kévin=n00b`);
end:
Oué en fait ça revient à ce que j'ai fait finalement tu crées les polygones dans une proc (moi une seq) et tu fais défiler les images dans un display, c'est tout pareil.
le titre
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :