Cette page n'est qu'une n'est qu'un bilan de mes recherches, elle ne prétend pas donner les meilleures solutions aux questions que je me pose.
Il s'agit de représenter la fonction f:(x,y)→ 3xy/(x+y) avec x dans [0;10] et y dans [0;12].
On veut les lignes de niveau correspondant à z=0, 2, 4… 18. et le point A(6;12/7;4)
En fait, j'ai un peu triché puisque j'ai créé deux graphiques et je les ai fondu avec Gimp.
Je me suis inspiré du code fourni par l'excellent logiciel PSTplus disponible ici pour résoudre plusieurs problémes. Je ferai bientôt une rubrique consacrée à ce logiciel.
Je l'ai obtenue avec le script suivant :
set encoding iso_8859_1
set term png size 400,400
set output 'ima.png'
set border 116 #lt -1 lw 1.000
set size square 1.4,1.4
f(x,y)=3*x*y/(x+y)
set xrange[0:10]
set yrange[0:12]
set zrange[0:18]
set xtics 0,1,10
set ytics 0,1,12
set ztics 0,2,18
set xlabel "X"
set ylabel "Y"
set zlabel "Z"
unset key
set ticslevel 0
set view 60,320,1,1
unset surface
set samples 200, 200
#on fait les calculs avec 100 valeurs de x et 120 de y:
set isosamples 100, 120
set grid xtics lt 1 lw 1
set grid ytics lt 1 lw 1
set grid ztics lt 1 lw 1
set pm3d at s
set noclabel
#lignes de niveau
set contour surface
set cntrparam levels incremental 0,2,18
#création d'une palette:
set palette rgbformulae 10,13,33
#on discrétise la palette:
set palette maxcolors 9
#création de la boite origine (10%;7%) taille (60%;4%)
set colorbox horiz user origin .1,.07 size 0.6,0.04
splot f(x,y)
Je l'ai obtenue avec le script suivant :
set term png size 400,400
set output 'imb.png'
unset border
set size square 1.4,1.4
f(x,y)=3*x*y/(x+y)
set xrange[0:10]
set yrange[0:12]
set zrange[0:18]
unset key
set ticslevel 0
unset xtics
unset ytics
unset ztics
set view 60,320,1,1
set samples 100,100
#11 lines pour les x (de 0 Ã 10), 13 pour les y
set isosamples 11, 13
set noclabel
set label "A" at 6+0.5,1.71+0.1,4+0.5 front
splot f(x,y) lt -1 lw 2 ,"-" notitle with points 28
6 1.714 4
En une seule fois grâce à multiplot mais la surface est transparente et j'ai été obligé de supprimer les grilles
des x et des y.
Je l'ai obtenue avec le script suivant :
set encoding iso_8859_1
set term png size 400,400
set output 'imc.png'
set border 116 #lt -1 lw 1.000
set size square 1.4,1.4
f(x,y)=3*x*y/(x+y)
set xrange[0:10]
set yrange[0:12]
set zrange[0:18]
set xtics 0,1,10
set ytics 0,1,12
set ztics 0,2,18
set xlabel "X"
set ylabel "Y"
set zlabel "Z"
unset key
set ticslevel 0
set view 60,320,1,1
set samples 200, 200
set grid ztics lt 5 lw 1
set noclabel
set hidden3d#ne marche pas
#lignes de niveau
set contour surface
set cntrparam levels incremental 0,2,18
set palette rgbformulae 10,13,33
set palette maxcolors 9
set colorbox horiz user origin .1,.07 size 0.6,0.04
#####
set multiplot
#####
set pm3d at s
set isosamples 100, 120
splot f(x,y) with pm3d
#####
unset pm3d
set isosamples 10, 12
splot f(x,y) lt -1 lw 2
######
unset multiplot
#####
Si vous connaissez un moyen d'améliorer ce script, écrivez moi …