somme des carrés

Règles du forum
ATTENTION ! Il est demandé de ne déposer dans ce forum que des exemples en langage Asymptote
  • finalisés
  • que l'on pense intéressants et optimisés
  • et qui se rapportent au thème du forum.
Si certains exemples déposés donnent lieu à de nombreuses modifications, ils seront déplacés et remplacés par un nouveau sujet dans ce forum avec la ou les meilleures propositions.
Pour les demandes d'aide ... il y a un forum spécifique !
OG
V.I.P.
V.I.P.
Messages : 142
Enregistré le : dim. 7 mars 2010, 22:27

somme des carrés

Message non lu par OG » mer. 10 mars 2010, 21:50

Histoire d'être complet, toujours en clignant des yeux et avec
un code asymptote fait un peu vite, donc sale et bruyant.

Trouver la formule 1^2+2^2+3^2+\cdots+n^2. L'aire
de chaque petit carré représente le nombre 1.
À gauche trois réalisations de cette somme, à droite un rectangle dont
on connaît l'aire.


Figure asymptote fbf5b91c30720a698fb9f658eba121ed
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1.  
  2. size(0,150);
  3. import patterns;
  4. add("hatch",hatch(1.5mm));
  5. add("hatchback",hatch(1.5mm,NW));
  6. add("crosshatch",crosshatch(1.5mm));
  7.  
  8. path p=unitsquare;
  9.  
  10. draw(p);
  11. draw(shift(6,0)*p);
  12. filldraw(shift(12,0)*p,gray);
  13.  
  14. for(int i=0;i<2;++i)
  15. for (int j=0; j<2;++j)
  16. {
  17. draw(shift(i,-3+.2+j)*p);
  18. draw(shift(i+6,-3+.2+j)*p);
  19. draw(shift(i+12,-3+.2+j)*p);
  20. }
  21. filldraw(shift(1+12,-3+.2+1)*p,gray);
  22. filldraw(shift(12,-2+.2)*((0,1)--(1,1)--(1,0)--(2,0)--(2,-1)--(0,-1)--cycle),pattern("hatch"));
  23.  
  24. for(int i=0;i<3;++i)
  25. for (int j=0; j<3;++j)
  26. {
  27. draw(shift(i,-7+.2+j)*p);
  28. draw(shift(i+6,-7+.2+j)*p);
  29. draw(shift(i+12,-7+.2+j)*p);
  30. }
  31.  
  32. filldraw(shift(2+12,-6+.2+1)*p,gray);
  33. filldraw(shift(13,-5+.2)*((0,1)--(1,1)--(1,0)--(2,0)--(2,-1)--(0,-1)--cycle),pattern("hatch"));
  34.  
  35. filldraw(shift(12,-5+.2)*((0,1)--(1,1)--(1,0)--(1,-1)--(3,-1)--(3,-2)--(0,-2)--cycle),pattern("hatchback"));
  36.  
  37. int n=4;
  38. for(int i=0;i<n;++i)
  39. for (int j=0; j<n;++j)
  40. {
  41. draw(shift(i,-12+.2+j)*p);
  42. draw(shift(i+6,-12+.2+j)*p);
  43. draw(shift(i+12,-12+.2+j)*p);
  44. }
  45.  
  46. filldraw(shift(3+12,-10+.2+1)*p,gray);
  47. filldraw(shift(14,-9+.2)*((0,1)--(1,1)--(1,0)--(2,0)--(2,-1)--(0,-1)--cycle),pattern("hatch"));
  48.  
  49. filldraw(shift(13,-9+.2)*((0,1)--(1,1)--(1,0)--(1,-1)--(3,-1)--(3,-2)--(0,-2)--cycle),pattern("hatchback"));
  50.  
  51. filldraw(shift(12,-9+.2)*((0,1)--(1,1)--(1,-2)--(4,-2)--(4,-3)--(0,-3)--cycle),pattern("crosshatch"));
  52.  
  53.  
  54. int n=5;
  55. for(int i=0;i<n;++i)
  56. for (int j=0; j<n;++j)
  57. {
  58. draw(shift(i,-18+.2+j)*p);
  59. draw(shift(i+6,-18+.2+j)*p);
  60. draw(shift(i+12,-18+.2+j)*p);
  61. }
  62.  
  63.  
  64. filldraw(shift(4+12,-15+.2+1)*p,gray);
  65. filldraw(shift(15,-14+.2)*((0,1)--(1,1)--(1,0)--(2,0)--(2,-1)--(0,-1)--cycle),pattern("hatch"));
  66.  
  67. filldraw(shift(14,-14+.2)*((0,1)--(1,1)--(1,0)--(1,-1)--(3,-1)--(3,-2)--(0,-2)--cycle),pattern("hatchback"));
  68.  
  69. filldraw(shift(13,-14+.2)*((0,1)--(1,1)--(1,-2)--(4,-2)--(4,-3)--(0,-3)--cycle),pattern("crosshatch"));
  70. filldraw(shift(12,-14+.2)*((0,1)--(1,1)--(1,-3)--(5,-3)--(5,-4)--(0,-4)--cycle),lightgray);
  71.  
  72.  
  73.  
  74. int n=5;
  75. for(int i=0;i<n;++i)
  76. for (int j=0; j<n;++j)
  77. {
  78. draw(shift(i,-18+.2+j)*p);
  79. draw(shift(i+6,-18+.2+j)*p);
  80. draw(shift(i+12,-18+.2+j)*p);
  81. }
  82.  
  83. picture tt;
  84.  
  85. size(tt,0,150);
  86.  
  87. filldraw(tt,(1,1)--(10,1)--(10,0)--(1,0)--cycle,lightgray);
  88. filldraw(tt,(2,1)--(2,3)--(9,3)--(9,1)--cycle,pattern("crosshatch"));
  89. filldraw(tt,(3,3)--(3,6)--(8,6)--(8,3)--cycle,pattern("hatchback"));
  90.  
  91. filldraw(tt,(4,6)--(4,10)--(7,10)--(7,6)--cycle,pattern("hatch"));
  92.  
  93. filldraw(tt,(5,10)--(5,15)--(6,15)--(6,10)--cycle,gray);
  94.  
  95.  
  96. for(int i=0;i<11;++i)
  97. {
  98. for(int j=0;j<15;++j)
  99. {
  100. draw(tt,shift(i,j)*p);
  101. }
  102. }
  103.  
  104. draw(tt,((0,0)--(11,0)--(11,15)--(0,15)--cycle),black+2bp);
  105. draw(tt,(0,10)--(11,10),black+2bp);
  106. draw(tt,(0,6)--(11,6),black+2bp);
  107. draw(tt,(0,3)--(11,3),black+2bp);
  108. draw(tt,(0,1)--(11,1),black+2bp);
  109. add(tt.fit(),(19,-18));
  110.  


O.G.

mumblee
Messages : 47
Enregistré le : jeu. 11 mars 2010, 10:29
Localisation : Lille

Re: somme des carrés

Message non lu par mumblee » mar. 16 mars 2010, 10:16

Joli, je ne connaissais pas.
Fabrice Eudes
Debian Bullseye 11.4, Asymptote 2.79, texlive 2022, Emacs 27.1

Répondre