Épreuve pratique 2009, sujet 112

mardi 10 novembre 2009
par  Alain BUSSER

Bien que CaRMetal ne soit ni un logiciel de calcul numérique ni un logiciel de calcul formel, il possède des macros sur les nombres complexes qui font l’affaire :


Création des macros

Dans une figure CaRMetal, on commence par créer les points d’affixes respectifs $0$, $i$, $-i$ et $1$ dont on aura besoin par la suite.

On va utiliser deux transformations différentes selon la parité de l’indice (M est un point quelconque dans le plan, d’affixe $z$) :

  • Si l’indice est pair, c’est $z\mapsto 1+iz$ qu’on matérialise avec la macro « produit de complexes », en sélectionnant les points d’affixes $i$ et $z$, puis la macro « somme de complexes », en sélectionnant le point nouvellement créé (rendu invisible ci-dessous) et le point d’affixe $1$. Le point obtenu est nommé « pair » ci-dessous.
  • Si l’indice est impair, c’est $z\mapsto i-iz$ qu’on matérialise avec la macro « produit de complexes », en sélectionnant les points d’affixes $-i$ et $z$, puis la macro « somme de complexes », en sélectionnant le point nouvellement créé (rendu invisible ci-dessous) et le point d’affixe $i$. Le point obtenu est nommé « impair » ci-dessous.
les deux macros

C’est M qu’on peut bouger ci-dessus. On constate que les points d’affixes respectives $0$ et $i$ sont nommés u0 et u1, c’est pour la cohérence avec la suite du TP.

Ensuite (ça ne se voit pas sur la figure, il faut la télécharger pour s’en rendre compte) deux macros ont été créées :

  • « pair » ayant pour objet final « pair » et pour objets initiaux P1 (d’affixe $1$), u1 et M
  • « impair » ayant pour objet final « impair » et pour objets initiaux u1, P2 (d’affixe $-i$) et M.

Utilisation des macros

Le nombre $n$ tel que l’indice est égal, soit à $2n$, soit à $2n+1$, est le quotient euclidien de l’indice par 2 :

Math.floor(indice/2)

Le reste de la division euclidienne de l’indice par 2 détermine laquelle des macros on applique au point d’indice $n$ :

  1. /*Programme tp 112a
  2. */
  3. for(indice=2;indice<32;indice=indice+1){
  4.         n=Math.floor(indice/2);
  5.         if(indice%2==0){
  6.                 u=ExecuteMacro("u"+indice,"pair","P1,u1,u"+n);
  7.         } else {
  8.                 u=ExecuteMacro("u"+indice,"impair","u1,P2,u"+n);
  9.         }
  10.         SetColor(u,"red");
  11.         SetShowName(u,true);
  12.         SetAlias(u,u);
  13.         Println(u+"="+X(u)+"+i*"+Y(u));
  14. }

Télécharger

Ce script est censé être appliqué à la figure dite de base, téléchargeable ci-dessous, où on a supprimé le point M et recadré. Les macros ont donné les alias « pair » et « impair » aux points créés, il a fallu les remplacer par le nom du point u. Comme les points se superposent, leurs coordonnées ont été récupérées par X(u) et Y(u) puis affichées dans une fenêtre texte.


Somme des termes de la suite

La macro « somme de nombres complexes » permet d’additionner les termes de la suite $u$. La modification suivante du script

  1. /*Programme tp 112b
  2. */
  3. somme="u1";
  4. for(indice=2;indice<32;indice=indice+1){
  5.         n=Math.floor(indice/2);
  6.         if(indice%2==0){
  7.                 u=ExecuteMacro("u"+indice,"pair","P1,u1,u"+n);
  8.         } else {
  9.                 u=ExecuteMacro("u"+indice,"impair","u1,P2,u"+n);
  10.         }
  11.         somme=ExecuteMacro("s"+indice,"Opérations sur les complexes/Somme","_somme,_u");
  12.         SetColor(somme,"red");
  13.         SetShowName(somme,true);
  14.         SetHide(u,true);
  15.         Println(somme+"="+X(somme)+"+i*"+Y(somme));
  16. }

Télécharger

appliquée à la figure de base, produit la figure suivante :

Pour avoir les valeurs de $S_{100}$ etc. il suffit de modifier la fin de la boucle ci-dessus.


Question B.6

Un test permet de vérifier si oui ou non, $S_{2n}$ est égal à $n+ni$. Mais il est multiple : $n$ doit être pair, X(S) doit être égal à $n$ et Y(S) aussi :

  1. /*Programme tp 112c
  2. */
  3. somme="u1";
  4. for(indice=2;indice<102;indice=indice+1){
  5.         n=Math.floor(indice/2);
  6.         if(indice%2==0){
  7.                 u=ExecuteMacro("u"+indice,"pair","P1,u1,u"+n);
  8.         } else {
  9.                 u=ExecuteMacro("u"+indice,"impair","u1,P2,u"+n);
  10.         }
  11.         somme=ExecuteMacro("s"+indice,"Opérations sur les complexes/Somme","_somme,_u");
  12.         SetColor(somme,"red");
  13.         SetShowName(somme,true);
  14.         SetHide(u,true);
  15.         if(indice%2==0){
  16.                 if((X(somme)==n)&&(Y(somme)==n)){
  17.                         Println(somme+"="+X(somme)+"+i*"+Y(somme));
  18.                 }
  19.         }
  20. }

Télécharger

Son exécution sur la figure de base produit le résultat suivant :

s4=2+i*2
s18=9+i*9
s20=10+i*10
s24=12+i*12
s30=15+i*15
s64=32+i*32
s70=35+i*35
s74=37+i*37
s76=38+i*38
s82=41+i*41
s84=42+i*42
s88=44+i*44
s94=47+i*47
s98=49+i*49
s100=50+i*50

qui mène à la recherche de conjectures.


Documents joints

figure de base

Commentaires

Logo de marc JAMBON
samedi 27 novembre 2010 à 10h39 - par  marc JAMBON

Les formules données ne définissent pas une suite définie par récurrence. En particulier,

u (indice 0) = 0,

jusque là çà va,

u(indice 2n) ne fournit des informations que sur u(indice 2*0), c’est toujours u(indice 0) et de surcroît, on a une contradiction, car on obtiendrait u(indice 0) = 1.

L’énoncé a-t-il été bien reproduit ?