5/10.4.3 Les espaces inconnusNotions mathématiques de base Quelques notions sont nécessaires pour découvrir ces nouveaux êtres mathématiques errant dans des espaces immatériels. Que les forts en maths, pour qui ces notions sont triviales, nous excusent, il faut bien que tout le monde comprenne... Tout commence avec la question : L'équation x2 = - 1 possède-t-elle une solution ? A la réponse NON, partant du principe qu'on ne peut extraire la racine carrée d'un nombre négatif, on peut opposer la réponse OUI, pourquoi pas ? Cette réponse affirmative, que nous vous demandons simplement d'admettre soulève le voile sur l'immensité étrange et passionnante des nombres complexes. Admettons donc qu'il existe un nombre que nous noterons i et dont le carré est égal à - 1. Ce nombre d'un type nouveau appartient à l'ensemble des nombres complexes. L'ensemble des réels n'est qu'une partie infime de ce dernier. Tout nombre complexe est repéré par son affixe. L'affixe z de tout nombre complexe est composée de 2 parties. L'une appelée partie réelle sera notée x si vous le voulez bien alors que l'autre, nommée partie imaginaire, sera notée y. Ces trois nombres sont alors reliés par la relation : z = x + iy Cela posé, on peut définir sur cet ensemble toutes les opérations classiques connues sur l'ensemble des réels, à savoir : — L'addition z1 = x1 + iy1 et z2 = x2 + iy2 entraînera z1 + z2 = (x1, + x2) + i (y1 + y2) La somme de deux nombres complexes est un nombre complexe dont la partie réelle est la somme des parties réelles et la partie imaginaire, la somme de deux parties imaginaires. — De même, la soustraction de deux nombres complexes s'écrira z1 = X1 + iy1 et z2 = x2 + iy2 z1 - z2 = (x1 - x2) + i (y1 - y2) — La multiplication de deux nombres complexes est un peu plus compliquée, en effet : Z = X + iY = z1 z2 = ( X1 + iy1 ) (x2 + iy2) = x1 x2 + ix1 , y2 + ix2 y1 + i2y iy2 souvenons-nous d'avoir décidé que i2 = - 1 alors : Z = X + iY = (x1 x2 - y1 y2) + i (x1 y2 + x2 y1) étonnant non ? Les notations x et y ne sont pas sans rappeler les notations des coordonnées d'un point dans un plan muni d'un système d'axes Ox,Oy. Ce choix n'est en effet pas innocent puisqu'il va nous permettre de représenter un nombre complexe par un point dans un plan bien réel celui-ci. Il suffira de représenter les parties imaginaires et réelles, respectivement par des points sur les axes d'ordonnée Oy et d'abscisse Ox. Figure 1
Tout nombre complexe z sera alors représenté par un point Z de coordonnées x et y. On peut cette fois définir le module d'un nombre complexe comme la longueur du vecteur OZ. Notons ce module lzl. lzl=V(x2 + y2) d'après Pythagore appliqué au triangle rectangle OZx. Ces quelques notions sont pour l'instant suffisantes pour aborder ces espaces inconnus. N'hésitons plus et entrons alors dans le monde étonnant des nombres complexes. Passage du plan complexe à l'écran de l'Amstrad Le principe des deux programmes qui suivent est très simple. Considérons une portion du plan complexe délimitée par le rectangle formé par les points Z11, Z22 , Z12 et Z21 Figure 2
Balayons systématiquement cette portion de bas en haut et de gauche à droite après avoir défini un accroissement dx sur l'axe des réels et dy sur l'axe imaginaire. Faisons correspondre à chaque point ainsi balayé, un point de l'écran du CPC en écrivant que : dx = (x2 - x1 ) /640 et dy = (y2-y1)/400 Le point courant dans le plan complexe correspondra alors au point-écran XP, YP. Ces principes de balayage et de correspondance entre plan complexe et écran étant définis, nous pouvons alors faire subir à tout point du plan complexe toute sorte de torture et obtenir des graphismes assez merveilleux. Coucher de soleil imaginaire Décidons que pour tout point de la portion de plan complexe définie plus haut, nous calculions le module (ici xx en ligne 120) et que si ce module est inférieur à 0,1 nous passons au point suivant. Dans le cas contraire, nous formons le nombre f = y-y/xx. Si la partie entière de f multipliée par 10 est paire, nous traçons le point-écran correspondant, sinon nous passons au point suivant (ligne 150). 10 CLS 20 MODE 2 30 XP=0:YP=0 40 x1=-2:x2=2 50 y1 = 0 : y2=(y1 + (x2-x1)*400/640) 60 dx=(x2-x1)/640 70 dy=(y2-y1)/400 80 FOR x=x1 TO x2 STEP dx 90 XP=XP+1 100 FOR y=y1 TO y2 STEP dy 110 YP=YP+1 120 xx=x*x+y*y 130 IF xx< 0.1 THEN 160 140 f=y-y/xx 150 IF (INT (f*10)MOD 2 = 0) THEN PLOT XP, YP 160 NEXT y 165 YP=0 170 NEXT xCe traitement barbare, dissociant les nombres complexes très particuliers obéissant à la règle, des autres, pauvres êtres informes ne méritant pas de figurer sur notre écran, va générer le coucher du soleil le plus bizarre que vous ayez jamais vu... Coucher de soleil imaginaire.
Variations sur Mandelbrot Benoît Mandelbrot, mathématicien français qui s'est illustré au centre de recherches T. Watson d'IBM, par ses travaux sur la géométrie frac-tale, ouvre pour nous la porte d'une immensité curieuse et magnifique : l'ensemble de Mandelbrot. Cet ensemble est constitué des nombres complexes c qui, quel que soit le nombre d'itérations appliquées à l'algorithme z = z2 + c restent finis. 10 REM (c) VEKA (jpc 1988) 15 INK 1, 13: INK 0,0:BORDER 0 20 CLS 30 MODE 2 40 XP=0:YF=0 50 INPUT"x1,x2"; x1,x2 60 INPUT"y1,y2"; y1,y2 65 INPUT”Nombre d'itérations N";N 66 CLS 70 dx= (x2-x1)/640 80 dy=(y2-y1)/400 90 FOR x=x1 TO x2 STEP dx 100 XP=XP+1 110 FOR y=y1 TO y2 STEP dy 120 x0=0:y0=0 130 YP=YP+1 140 FOR i=1 TO N 150 xx=x0 * x0-y0*y0 + x 160 y0=2+x0*y0+y:x0=xx 170 yy=(x0*x0*y0*y0) 180 IF yy>4 THEN 210 190 NEXT i 200 PLOT XP,YP 210 NEXT y 220 YF=0 230 NEXT xChoisissons parmi ceux-ci, ceux dont le module reste inférieur à 2. Et représentons-les sur notre écran en suivant le principe défini plus haut. Ces nombres sont alors représentés sur la figure suivante. Cet ensemble a été dessiné avec seulement 50 itérations : plus ce nombre sera grand, plus les détails seront finis (dans la limite de définition de votre écran) mais aussi plus le temps de calcul sera long, passant de quelques heures à quelques ... jours. L'ensemble de Mandelbrot dans le plan complexe (50 itérations).
Détail de l'ensemble de Mandelbrot dans le plan complexe x-1 = -0,745 - X2 = - 0,72 - y1 = 0,216 - Y2 - 0,25.
Chaque zone est en principe intéressante à explorer mais la frontière de l'ensemble est plus riche lorsque le nombre d'itérations est faible. La figure de détail en page 9 correspond à un agrandissement de la zone notée [a] sur la figure précédente. On pourrait agrandir encore cette zone et y découvrir de nouvelles formes. Il n'y a aucune limite à cela pas même celle de la dimension atomique. Seul votre Amstrad imposera ses limites de précision et de temps de calcul à votre vertigineuse soif d'entrer dans l'infiniment petit. Les algorithmes de Barry Martin D'autres mathématiciens comme Barry Martin se sont inspirés de la démarche de B. Mandelbrot. A savoir, faire des itérations successives sur une même fonction. Mais cette fois, cette fonction s'appliquait sur des nombres réels et sur une seule valeur initiale. On ne balaye pas un plan comme précédemment, mais on part d'un point unique pour en calculer une série d'autres. Dans les deux programmes qui suivent, ce principe est appliqué sur deux fonctions différentes. Le premier programme « Hopalong » utilise les fonctions suivantes :
x = y - SGN(x)* V | (b * x - c) | y = a -xLa fonction SGN(x) (signe de x) prend la valeur -1 si x est négatif et 1 si x est positif. L'étonnant pour ce type de programme est que le graphisme obtenu varie énormément suivant les valeurs des paramètres a, b et c. Le nombre d'itérations influe sur le niveau de détail du graphisme (voir figures page 9). Là encore, vous devrez attendre quelques heures avant de voir votre écran se couvrir de ces merveilles bizarres. 10 REM Algorithme HOPALONG 20 MODE 2:CLS 30 INPUT”a,b,c” ; a,b,c 31 INPUT”N” , N 32 INPUT”Eche1le”,E 35 INPUT”coordonnees du centre x,y”; ex,cy 50 LOCATE 1,1:x=0:y=0 60 FOR i=1 TO N 70 PLOT x*E+cx,y*E+cy 80 xx=y--SGN ( x ) * ( ABS (b*x-c) ) ^0. 5 90 yy=a-x 100 x-xx:y=yy 110 NEXT i Evolution du graphisme en fonction du nombre d'itérations N a = - 200 - b = 0,1 - c = - 80 - N = 1 20 135
Hopalong : a = - 200 - b = 0,1 - c = - 80 - N = 423 424 Hopalong : a = - 200 - b = 0,1 - c = - 80 - N = 1 359 620Algorithme de Barry Martin : a = 3,12 N = 100 000
Le dernier programme proposé est composé comme le précédent ; mais utilise les fonctions : x = y - SIN (x) y = a - xUn seul paramètre entre en jeu ici a. Les meilleurs résultats seront obtenus pour a très voisin de PI. Vous pourrez choisir sur ce dernier programme, l'échelle de votre dessin ainsi que le point de celui-ci à afficher au centre de votre écran. 10 REM Algorithme de Barry MARTIN 20 MODE 2 :CLS 30 INPUT"a"; a 40 INPUT"N", N 50 INPUT"Echelle",E 60 INPUT "coordonnees du centre x,y";cx,cy 70 CLS: PRINT "Algorithme de Barry MARTIN" 80 LOCATE 1,1 :x=0:y=0 90 FOR i=1 TO N 100 PLOT x*E+cx,y*E+cy 110 xx=y-SIN(x) 120 yy=a-x 130 x=xx:y=yy 140 NEXT i Algorithme de Barry Martin : a = 3,12 N = 100 000
Algorithme de Barry Martin : a = 3,09 N = 300 000
CPCrulez[Content Management System] v8.7-desktop/c Page créée en 003 millisecondes et consultée 964 foisL'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko. |
|