Spirale dans un carré - Liste et récurrence géométrique

mumblee shared this question 4 years ago
Answered

Bonjour,

J'ai demandé à des élèves de 6ème de construire une toile d'araignée d'Halloween en construisant des spirales affines par morceaux à l'aide de perpendiculaire. Chaque point dépend du précédent.

J'ai évidemment commencé par construire une figure pas à pas, c'est assez pénible et j'aimerais bien avoir une construction à l'aide de listes (je n'ai pas eu de souci pour l'effectuer avec asymptote/python).


Ma première tentative à l'aide de la commande Séquence n'aboutissant pas, j'ai essayé de passer à un script (je suis peu expérimenté en la matière).

La figure jointe fonctionne pour n=1 et n=2 mais ne fonctionne plus à partir de n=3. Je ne comprends pas pourquoi et GeoGebra ne me donne aucune erreur.

Des idées pour débugger ? Ou une autre façon d'obtenir la figure. Merci beaucoup !

Comments (5)

photo
1

Ah ! Ce n'est peut-être pas de ma faute alors. Si ça peut être utile, j'ai omis hier de préciser la version de GeoGebra utilisée. Cela dit, j'ai eu le même comportement en utilisant la version en ligne du site officiel.


GeoGebra Classic 5.0.504.0-d (10 October 2018)

OS: Linux

Architecture: amd64 / null


Une idée pour procéder autrement ? La question sous-jacente est en fait, comment construire une liste dont chaque terme dépend du précédent. De plus, ici on a deux listes imbriquées. La situation ressemble donc à un couple de suites récurrentes u_{n+1} = f(u_n,v_n) et v_{n+1} = g(u_n,v_n).

photo
1

Pas de souci, ce n'est pas une urgence.

J'ai regardé ItérationListe mais je n'ai pas l'impression que cela puisse convenir en raison de l'imbrication. D'ailleurs, ce que j'ai écrit plus haut n'est pas correct : les points P_k et les droites d_k se calculent en alternance :

Connaissant P_n et d_n, on calcule d'abord d_{n+1} puis P_{n+1} :


d_{n+1} = f(P_n) puis P_{n+1} = g(P_n,d_{n+1}) = g(P_n,f(P_n))


avec (en gros) f la commande Perpendiculaire et g la commande Intersection.

La dernière expression, qui donne P_{n+1} en fonction de P_n est celle que j'avais essayée d'utiliser, sans succès, avec la commande Séquence.

A la réflexion, je vais quand même tenter une version avec ItérationListe et h(.)=g(.,f(.))

photo
1

Pour la variante de solution avec script et "Répéter()" :

  • Répéter( <Nombre>, Exécute( <Liste Textes> ))

fonctionne toujours (jusqu'à preuve du contraire)

voir annexe

------------------------------------------------------------------

Note à ItérationList

Les divers paramètres qui sont transférés récursivement au cycle suivant doivent être combinés dans une liste.

ItérationListe( <Expression>, L, {{<Valeurs initiales pour L (comme liste)>}}, <Nombre> )

<Expression> est définie avantageux avec un outil utilisateur avec liste L en input et L en output.

----------------------------------------------------------------------------------------------------

Les récursions peuvent également être très bien traitées dans Tableur

-----------------------------------------------------------------------------------------------------

photo
1

Ouah, super ! Merci beaucoup.

Je ne suis pas au fait de ces subtilités avec la commande Exécute mais je retiens la syntaxe.

Je vais tenter une version ItérationListe avec un outil utilisateur.

Là, je ne vois pas comment faire avec un tableur, mais je réfléchirais à cette 3ème solution plus tard.

photo
photo
1

Je passerais bien le sujet en "Résolu" mais je ne vois pas comment faire. Si quelqu'un peut s'en charger... Merci !

© 2023 International GeoGebra Institute