Fonction à deux variables

Tout ce qui concerne le langage Asymptote. Ce langage est utilisable sur le forum via les balises asy.
[participation réservée aux membres inscrits]
Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
sami30

Fonction à deux variables

Message non lu par sami30 »

Bonjour,
J'ai toujours pas réussi à dompter asymptote (ni même à le comprendre du tout!), Je suis pas douée, j'y peux rien.
Je voudrais imprimer ça: http://yallouz.arie.free.fr/terminale_c ... 9_2010.php (exercice 2 spé) le problème c'est que les graphiques ne s'affichent pas, alors je voudrais savoir comment les faire avec asymptote/texmaker.
Quelqu'un pourrait m'aider?
OG
Modérateur spécialisé
Modérateur spécialisé
Messages : 2293
Inscription : lundi 12 mars 2007, 11:20
Localisation : Rouen

Re: fonction à deux variables

Message non lu par OG »

Bonsoir

un début pour s'y mettre. Pour les couleurs comme sur l'exemple (et pas en dégradé) je crois
que c'est délicat à faire.
{"png": {"width": 277, "height": 289}}
O.G.
sami30

Re: fonction à deux variables

Message non lu par sami30 »

Je comprends pas, mais alors pas du tout le langage.
Le code est trop compliqué. Le schéma ne correspond pas tout à fait à ce que je voulais car, sans les lignes sur la courbe de niveau, impossible de faire une lecture graphique. Et comme tu as dit que pour avoir les différentes couleurs, c'était plus compliqué, j'ose pas imaginer. Je vais tout bonnement laisser tomber et m'acheter un bouquin avec tout plein d'exos et d'annales sur les fonctions à deux variables de terminale es.

Merci quand même d'aovir essayé de m'aider.
maurice
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 399
Inscription : jeudi 25 mars 2010, 13:49

Re: fonction à deux variables

Message non lu par maurice »

Pourquoi laisser tomber si vite....

Code : Tout sélectionner

import grid3;
import palette;
import contour;
currentprojection=orthographic(-3,-3,1);
size(10cm);
size3(10cm,10cm,10cm,IgnoreAspect);

real xmin=0,
     ymin=0,
     zmin=0,
     xmax=10,
     ymax=10,
     zmax=6;

limits((xmin,ymin,zmin),(xmax,ymax,zmax));

real Dx=1, Dy=1, Dz=1;
real Nb=zmax/Dz;


real f(pair z) {return log(2*z.x^2+z.y^2+1);}
surface s=surface(f, (xmin,ymin), (xmax,ymax), nx=150, ny=150, Spline);

pen[] pal=Rainbow();

real[] lignesdeniveau;
for (int i=1; i<=Nb; ++i) {real ligne=Dz*i ;
			  lignesdeniveau.push(ligne);
}

s.colors(palette(s.map(new real(triple v) {return find(lignesdeniveau > v.z);}),pal));
draw(s); 

draw(lift(f,contour(f,(xmin,ymin),(xmax,ymax),lignesdeniveau)),1.5bp+blue);

for (int i=1; i<= xmax/Dx; ++i) {
	real x1(real t) {return i*Dx;}
	real y1(real t) {return t;}
	real z1(real t) {pair z=(i*Dx,t); return f(z);}
	path3 lx=graph(x1,y1,z1,ymin,ymax);
	draw(lx, black);
}

for (int i=1; i<= ymax/Dy; ++i) {
	real x1(real t) {return t;}
	real y1(real t) {return i*Dy;}
	real z1(real t) {pair z=(t,i*Dy); return f(z);}
	path3 lx=graph(x1,y1,z1,xmin,xmax);
	draw(lx, black);
}

grid3(XYgrid, Step=Dx);
grid3(YXgrid, Step=Dy);
grid3(ZXgrid(Relative(1)), Step=Dz);
grid3(YZgrid(Relative(1)), Step=Dy);
grid3(XZgrid(Relative(1)), Step=Dx);
grid3(ZYgrid(Relative(1)), Step=Dz);

xaxis3(Label("$x$",MidPoint,align=-Z),
Bounds(Both,Min),OutTicks(Step=Dx,endlabel=true),p=blue);
yaxis3(Label("$y$",MidPoint,align=-Z),
Bounds(Both,Min),OutTicks(Step=Dy, step=0),p=red);
zaxis3(Label("$z$" ,MidPoint,align=-X),XYEquals(xmin,ymax),InTicks(Step=Dz, step=0,Label(align=Y)),p=1bp+.5green);
log.png
On en avait parlé

maurice

Edit : si tu trouve asymptote trop compliqué, tu as le code pstricks dans le fichier source .tex. Pour obtenir le document du site, il suffit de le compiler.
Tu pourras comme ça aussi comparer les deux.
Asymptote :
----> Démarrage rapide : http://cgmaths.fr/Atelier/Asymptote/Asymptote.html
----> Documentation 3D : http://www.mathco.tuxfamily.org et si ça ne marche pas, essayez la version pdf
maurice
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 399
Inscription : jeudi 25 mars 2010, 13:49

Re: fonction à deux variables

Message non lu par maurice »

Bonjour, tout de suite la suite :

Code : Tout sélectionner

import graph;
import palette;
import contour;

unitsize(0.75cm);

real xmin=0,
     ymin=0,
     zmin=0,
     xmax=10,
     ymax=10,
     zmax=6;

pair a=(xmin,ymin), b=(xmax,ymax);

real f(real x, real y) {return log(2*x^2+y^2+1);}

int N=200;
int Divs=6;
int divs=1;

defaultpen(1bp);
pen Tickpen=black;
pen tickpen=gray+0.5*linewidth(currentpen);


// couleurs

pen[] Palette=quantize(Rainbow(),Divs);

pen pinceau(real x, real y) {
  int color=floor(f(x,y));
  return Palette[color];
}


// Projection de la surface

real x=xmin, y=ymin;
real step=0.05;
int xloop=round((xmax-xmin)/step);
int yloop=round((ymax-ymin)/step);
path sq=scale(step)*unitsquare;

for(int i=1; i < xloop; ++i) {
  for(int j=0; j < yloop; ++j) {
    pen p=pinceau(x,y);
    filldraw(shift(x,y)*sq, p, p);
    y+=step;
  }
  x+=step;
  y=ymin;
}


//lignes de niveau
bounds range=bounds(zmin, zmax);
real[] Cvals=uniform(range.min,range.max,Divs);
guide[][] g=contour(f,a,b,Cvals,N,operator --);
draw(g);


// Axes 
xaxis("$x$",BottomTop,LeftTicks,above=true);
yaxis("$y$",LeftRight,RightTicks,above=true);

for(int x=1; x<xmax; ++x) draw((x,ymin)--(x,ymax),.3bp+gray+linetype("4 4"));
for(int y=1; y<ymax; ++y) draw((xmin,y)--(xmax,y),.3bp+gray+linetype("4 4"));


// Palette

palette("$f(x,y)$",range,(11,ymin),(12,ymax),Right,Palette,
	PaletteTicks(n=5)
	);
log-lignes3.png
Maurice
Asymptote :
----> Démarrage rapide : http://cgmaths.fr/Atelier/Asymptote/Asymptote.html
----> Documentation 3D : http://www.mathco.tuxfamily.org et si ça ne marche pas, essayez la version pdf