 |
Apprendre Maple Site dédié au logiciel de calcul formel Maple
|
Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
romanticide
Inscrit le: 13 Mar 2005 Messages: 47
|
Posté le: 27 Avr 2005 21:11 Sujet du message: urgent : programme récursif |
|
|
bonjour
je dois étudier la courbe Lissajous et je dois faire une rectification c'est à dire tracer la courbe avec des lignes polygonales
la procédure que j'ai écrite compare la distance entre deux points (les deux points sont déterminer par les bornes de l'intervalle de def) et la longueur de courbe entre ces deux points si la différence est très petite alors je peux tracer la ligne polygonale (je l'ai pas encore fais) sinon on divise par deux la longueur de l'intervalle de definition et on rapelle la procédure pour savoir si c ok ou pas
le problème c que je n'arrive pas à avoir un programme récursif
qui me renvoit l intervalle pour lequel je peux tracer la ligne
voici ma procédure
Procédure
> Repproc:=proc(a,b)
> local A,B,X,Y,Dist,g1,g2,d1,d2,R,L,Lg,Err,Rep,Pt,c,List;
> A:=[sin(2*a),sin(3*a)];B:=[sin(2*b),sin(3*b)];List:=[];c:=0;
> X:=(op(1,B)-op(1,A));Y:=(op(2,B)-op(2,A));
> Dist:=sqrt(X^2+Y^2);
> g1:=op(1,w);g2:=op(2,w);d1:=diff(g1,t);d2:=diff(g2,t);
> R:=sqrt((d1^2)+(d2^2));
> L:=Int(R,t=a..b);
> Lg:=evalf(L);
> Err:=0,001;
> Rep:=evalb(evalf(Lg-Dist)>evalf(0,001));Rep;if Rep then c:=(b-a)/2;fi; if c<>0 then Repproc(0,Pi);fi;
> end:
> Repproc(0,Pi/2);
Error, (in csgn) too many levels of recursion
merci d'avance |
|
Revenir en haut de page |
|
 |
romanticide
Inscrit le: 13 Mar 2005 Messages: 47
|
Posté le: 27 Avr 2005 22:07 Sujet du message: |
|
|
w:=h(sin(2*t),sin(3*t));
c'est la courbe de lissajous paramétrée |
|
Revenir en haut de page |
|
 |
romanticide
Inscrit le: 13 Mar 2005 Messages: 47
|
Posté le: 27 Avr 2005 22:22 Sujet du message: |
|
|
j'ai pas l'impression que ça marche il renvoit bien true pour le premier passage mais pas pour le deuxième j'ai essayer
if Rep then Repproc (0,Pi/9);fi
mais il ne me renvoit pas false (j'ai fais les test c'est la réponse ) |
|
Revenir en haut de page |
|
 |
romanticide
Inscrit le: 13 Mar 2005 Messages: 47
|
Posté le: 28 Avr 2005 9:00 Sujet du message: re code |
|
|
voici le code que m'a donné mon prof mais je ne comprends pas tout
Rectification en un Point : Calcul de ds
> RectPt:=proc(gama)
> local d1gama,ds;
> d1gama:=DiffCurvExpr(gama);
> ds:=Norme2(d1gama);
> end:
Rectification d'une courbe parametree
> RectifCourbe:=proc(ParaCurv)
> local CurvExpr,IntDef,Comment,a,b,f,g,ds,L,l;
> CurvExpr:=ParaCurv[1]; IntDef:=ParaCurv[2]; a:=IntDef[1]; b:=IntDef[2];Comment:=ParaCurv[3];
>
> f:=CurvExpr[1];g:=CurvExpr[2];
> print(`Rectification de Courbes Planes (f,g)`);print(`f=`,f,`g=`,g);
> print(` Intervalle de definition:`,IntDef);
> print(`Comment:`,Comment);
> ds:=RectPt(CurvExpr);
> print(` ds=`,ds);
> L:=int(ds,t=a..b);print(` L=`,L);
> l:=evalf(L);print(` l=`,l);
> end:
Discretisation Recursive Dichotomique d'une Courbe par Rectification
> PrntDiscretRecCourbeRectif:=proc(ParaCurv,Epsilon)
> local CurvExpr,IntDef,Comment,a,b,ds,DichoRec,ListPara,Subd;
Dichotomie Recursive
> DichoRec:=proc(a,b)
> local A,B,c,l,L,ErorRel,Dicho;
> print(`Pas Recursif a=`,a,` b=`,b,` b-a=`,b-a);
> #print(`ListPara=`,ListPara);
> l:=evalf(int(ds,t=a..b));
> A:=EvalfGamma(CurvExpr,a);B:=EvalfGamma(CurvExpr,b);L:=DistPt(A,B);
> ErorRel:=evalf((l-L)/L);
> Dicho:=evalb(ErorRel>Epsilon);
> print(` l=`,l,` L=`,L);print(`l-L=`,l-L,` ErorRel=`,ErorRel,` Dicho=`,Dicho);
> if Dicho then c:=(a+b)/2; ListPara:=[op(ListPara),c]; ;DichoRec(a,c);DichoRec(c,b); fi;
> end;
merci |
|
Revenir en haut de page |
|
 |
romanticide
Inscrit le: 13 Mar 2005 Messages: 47
|
Posté le: 01 Mai 2005 14:04 Sujet du message: |
|
|
bonjour
merci beaucoup
c'est très sympa de m'aider (et je suis pas très douée pour la programmation )
encore merci
je n'ai pas encore fini donc je vais encore poster
merci
ça fonctionne très bien
à plus
 |
|
Revenir en haut de page |
|
 |
|
|
Vous ne pouvez pas poster de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas voter dans les sondages de ce forum
|

Développé par phpBB © 2001, 2006 phpBB Group
Traduction par : phpBB-fr.com
Apprendre Maple - ©
- Alain Le Stang - Navigation optimisée pour une résolution 1024 x 768.
|