Fonction à deux variables

Tout ce qui concerne l'utilisation ou l'installation d'Asymptote.

Modérateur: gdm_asy

Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser les balises Code pour poster du code.

Fonction à deux variables

Messagepar sami30 » Mercredi 13 Juin 2012, 18:39

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_controles/2009-2010_c6/cont6_2009_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?
sami30
Déca-utilisateur
 
Messages: 28
Inscription: Mercredi 21 Mars 2012, 00:25
Statut actuel: Actif et salarié | Enseignant

Publicité

Re: fonction à deux variables

Messagepar OG » Mercredi 13 Juin 2012, 21:27

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.

53454956be1802e27aa5b47dacfe5202.png

Code: Tout sélectionner
import graph3;
import grid3;
import palette;
size(7.5cm,0);
size3(7.5cm,IgnoreAspect);

real f(pair z) {
return log(2z.x^2+z.y^2+1);
}

currentprojection=orthographic(-35,-12,7);
limits((0,0,0),(10,10,6));

xaxis3(Label("$x$",position=MidPoint,align=SE),
OutTicks(Step=2));
yaxis3(Label("$y$",position=MidPoint,align=SW),
OutTicks(Step=2));
zaxis3(Label("$z$",position=EndPoint,align=3N+E),
Bounds(Min,Max),
OutTicks(Step=2));
grid3(XYXgrid);
grid3(ZYZgrid(10));
grid3(ZXZgrid(10));

surface s=surface(f,(0,0),(10,10),nx=10,Spline);
//draw(surface(f,(0,0),(10,10),nx=10,Spline),
// lightgray,meshpen=black+thick());
s.colors(palette(s.map(zpart),Rainbow()));

draw(s);


O.G.
OG
Modérateur
 
Messages: 2285
Inscription: Lundi 12 Mars 2007, 11:20
Localisation: Rouen
Statut actuel: Actif et salarié | Maître de conférence

Re: fonction à deux variables

Messagepar sami30 » Mercredi 13 Juin 2012, 22:49

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.
sami30
Déca-utilisateur
 
Messages: 28
Inscription: Mercredi 21 Mars 2012, 00:25
Statut actuel: Actif et salarié | Enseignant

Re: fonction à deux variables

Messagepar maurice » Jeudi 14 Juin 2012, 01:13

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
Méga-utilisateur
 
Messages: 399
Inscription: Jeudi 25 Mars 2010, 13:49
Statut actuel: Actif et salarié | Enseignant

Re: fonction à deux variables

Messagepar maurice » Vendredi 15 Juin 2012, 01:16

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
maurice
Méga-utilisateur
 
Messages: 399
Inscription: Jeudi 25 Mars 2010, 13:49
Statut actuel: Actif et salarié | Enseignant


Retourner vers Asymptote

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité