10 '********************
11 '*                  *
12 '*   FONCTIONS EN   *
13 '*                  *
14 '*      GRISE       *     
15 '*                  *
16 '********************
40 DEFINT i,j,k
50 DEF FNf(x)=COS(x*y*EXP(-y/5))
100 GOSUB 1000:REM fenetre d'etude
110 GOSUB 3000:REM trace
120 END
1000 '***************
1010 'FENETRE D'ETUDE
1020 '***************
1030 MODE 1:INK 0,0:INK 1,13:BORDER 0
1040 PRINT"Fenetre d'etude :":PRINT
1050 INPUT"Bornes en x :";xi,xs
1060 INPUT"Bornes en y :";yi,ys
1070 INPUT"Calcul de minimax (o/n)";a$
1080 IF LOWER$(a$)="o" THEN GOSUB 2000:GOTO 1100
1090 INPUT"Bornes en z :";zi,zs
1100 RETURN
2000 '**************
2010 'CALCUL MINIMAX
2020 '**************
2030 PRINT"Patience...."
2040 zi=1000000000290071000000000000000:zs=-1000000000290071000000000000000
2050 FOR i=0 TO 639 STEP 4 
2060 x=xi+(xs-xi)*i/639
2070 FOR j=0 TO 399 STEP 4
2080 y=yi+(ys-yi)*j/399
2090 z=FNf(x)
2100 zi=MIN(zi,z)
2110 zs=MAX(zs,z)
2120 NEXT j
2130 NEXT i
2140 RETURN
3000 '*****
3010 'TRACE
3020 '*****
3030 CLS
3040 FOR i=2 TO 639 STEP 6
3050 x=xi+(xs-xi)*i/639
3060 FOR j=2 TO 399 STEP 6
3070 y=yi+(ys-yi)*j/399
3080 z=FNf(x)
3090 k=INT(10*(z-zi)/(zs-zi))
3100 IF k=0 THEN 3200
3110 PLOT i,j:IF k=1 THEN 3200
3120 PLOT i+2,j:IF k=2 THEN 3200
3130 PLOT i,j-2:IF k=3 THEN 3200
3140 PLOT i-2,j:IF k=4 THEN 3200
3150 PLOT i,j+2:IF k=5 THEN 3200
3160 PLOT i-2,j+2:IF k=6 THEN 3200
3170 PLOT i+2,j-2:IF k=7 THEN 3200
3180 PLOT i-2,j-2:IF k=8 THEN 3200
3190 PLOT i+2,j+2
3200 NEXT j
3210 NEXT i
3220 WHILE INKEY$<>CHR$(13):WEND
3230 RETURN