Page 2 sur 2

Re: Tangentes et dérivées partielles

MessagePosté: Mercredi 05 Janvier 2011, 22:21
par maurice
Variation sur le même thème :

Code: Tout sélectionner
import graph3;

size(12cm,0);

currentprojection=orthographic(
camera=(6.70544201648284,-0.775280645147703,1.90994169441184),
up=(-0.00381197716192466,0.00208518736562723,0.0142295375229004),
target=(-8.88178419700125e-16,-8.88178419700125e-16,-8.88178419700125e-16),
zoom=1);
//currentprojection=orthographic(1,2,1);
//currentlight=(1,-1,0.5);

pair a=(-2.5,-2);
pair b=(2.5,2);

//Definition de la surface

real f(pair z) {
        real r=z.x^2+z.y^2;
        if (r!=0)  return z.x*z.y/r;
                 else return 0;
                        }
surface s=surface(f,a,b,25,25,Spline);

//Intersection avec y=cy
real cy=0;
real x1(real t) {return t;}
real y1(real t) {return cy;}
real z1(real t) {pair z=(t,cy); return f(z);}

path3 inter1=graph(x1,y1,z1,a.x,b.x);

//Intersection avec x=cx
real cx=0;
real x2(real t) {return cx;}
real y2(real t) {return t;}
real z2(real t) {pair z=(cx,t); return f(z);}

path3 inter2=graph(x2,y2,z2,a.y,b.y);

//intersection des deux chemins
triple inter=intersectionpoint(inter1, inter2);

//Derivées partielles
real dx=0.1^10, dy=dx;

pair interplusdx=(inter.x+dx,inter.y);
//pair interx=project(inter,Z);
pair interx=(inter.x,inter.y);
real partialx=(f(interplusdx)-f(interx))/dx;
path3 tgx=inter--(inter.x+1,inter.y,inter.z+partialx);

pair interplusdy=(inter.x,inter.y+dy);
pair intery=(inter.x,inter.y);
real partialy=(f(interplusdy)-f(intery))/dy;
real nor=sqrt(inter.x^2+(inter.y+1)^2+(inter.z+partialy)^2);
path3 tgy=inter--(inter.x,inter.y+1,inter.z+partialy)/nor;


// Eléments graphiques
draw(s,lightgray+opacity(0.8),lightgray+thick());
draw(inter1,blue);
draw(inter2,red);
dot(inter, 5bp+green);
axes3("$x$", "$y$", "$z$",
   min=(a.x,a.y,0),
   max=(b.x,b.y,1.25),
   Arrow3);
draw(tgx,green,Arrow3);
draw(tgy,green,Arrow3);




Maurice

Re: Tangentes et dérivées partielles

MessagePosté: Mercredi 05 Janvier 2011, 22:29
par guiguiche
La dérivée partielle par rapport à y est étrange, non ?

Re: Tangentes et dérivées partielles

MessagePosté: Mercredi 05 Janvier 2011, 22:40
par OG
Non continue en (0,0), alors les dérivées partielles mieux vaut éviter non ?

O.G.

Re: Tangentes et dérivées partielles

MessagePosté: Mercredi 05 Janvier 2011, 22:45
par guiguiche
Certes mais l'objectif est de montrer qu'avec plusieurs variables, l'existence des dérivées partielles n'implique pas la continuité et donc que la notion de classe C^1 est la notion essentielle.

Re: Tangentes et dérivées partielles

MessagePosté: Mercredi 05 Janvier 2011, 22:48
par maurice
oui, elle a été normalisée. Le nombre obtenu pour partialy est 435727037.747794
La norme est égale sur la figure à 1.
Comme je n'ai pas d'idée sur le résultat théorique, je ne peux rien dire de plus.
C'est peut être ce que disait OG tout à l'heure.

maurice

Edit : pas vu les 2 messages précédents

Edit2 : Il suffit de diminuer les dx et dy à $0.1 \times 10^{-15}$ par exemple pour que ca marche bien.

code définitif :

Code: Tout sélectionner
import graph3;

size(12cm,0);

currentprojection=orthographic(
camera=(6.70544201648284,-0.775280645147703,1.90994169441184),
up=(-0.00381197716192466,0.00208518736562723,0.0142295375229004),
target=(-8.88178419700125e-16,-8.88178419700125e-16,-8.88178419700125e-16),
zoom=1);
//currentprojection=orthographic(1,2,-2);
//currentlight=(1,-1,0.5);

pair a=(-2.5,-2);
pair b=(2.5,2);

//Definition de la surface

real f(pair z) {
        real r=z.x^2+z.y^2;
        if (r!=0)  return z.x*z.y/r;
                 else return 0;
                        }
surface s=surface(f,a,b,72,72,Spline);

//Intersection avec y=cy
real cy=0;
real x1(real t) {return t;}
real y1(real t) {return cy;}
real z1(real t) {pair z=(t,cy); return f(z);}

path3 inter1=graph(x1,y1,z1,a.x,b.x);

//Intersection avec x=cx
real cx=0;
real x2(real t) {return cx;}
real y2(real t) {return t;}
real z2(real t) {pair z=(cx,t); return f(z);}

path3 inter2=graph(x2,y2,z2,a.y,b.y);

//intersection des deux chemins
triple inter=intersectionpoint(inter1, inter2);

//Derivées partielles
real dx=0.1^1, dy=dx;

pair interplusdx=(inter.x+dx,inter.y);
pair interx=(inter.x,inter.y);
real partialx=(f(interplusdx)-f(interx))/dx;
path3 tgx=inter--(inter.x+1,inter.y,inter.z+partialx);

pair interplusdy=(inter.x,inter.y+dy);
pair intery=(inter.x,inter.y);
real partialy=(f(interplusdy)-f(intery))/dy;
path3 tgy=inter--(inter.x,inter.y+1,inter.z+partialy);


// Eléments graphiques
draw(s,lightyellow+opacity(0.75), meshpen=brown+thick(),nolight);
draw(inter1,blue+linewidth(0.5pt));
draw(inter2,red+linewidth(0.5pt));
dot(inter, 5bp+green);
axes3("$x$", "$y$", "$z$",
   min=(a.x,a.y,0),
   max=(b.x,b.y,1.25),
   Arrow3);
draw(tgx,green+linewidth(1pt),Arrow3);
draw(tgy,green+linewidth(1pt),Arrow3);

Re: Tangentes et dérivées partielles

MessagePosté: Mercredi 05 Janvier 2011, 22:52
par OG
guiguiche a écrit:Certes mais l'objectif est de montrer qu'avec plusieurs variables, l'existence des dérivées partielles n'implique pas la continuité et donc que la notion de classe C^1 est la notion essentielle.

Ok j'avais oublié la pédagogie.

O.G.

Re: Tangentes et dérivées partielles

MessagePosté: Mercredi 05 Janvier 2011, 23:01
par guiguiche
maurice a écrit:oui, elle a été normalisée. Le nombre obtenu pour partialy est 435727037.747794
La norme est égale sur la figure à 1.
Comme je n'ai pas d'idée sur le résultat théorique, je ne peux rien dire de plus.
C'est peut être ce que disait OG tout à l'heure.

La dérivée partielle vaut 0 comme celle en x qui est correcte sur le graphique, la flèche devrait être horizontale dans la direction de l'axe y. Sûrement un artefact de la non continuité.

Re: Tangentes et dérivées partielles

MessagePosté: Mercredi 05 Janvier 2011, 23:14
par guiguiche
En tout cas, merci pour le boulot les gars, ça me fait découvrir pas mal de choses.

Re: Tangentes et dérivées partielles

MessagePosté: Mercredi 05 Janvier 2011, 23:46
par GMaths
Image

Code: Tout sélectionner
import graph3;
import contour;
size(10cm);
defaultrender.merge=false;

currentprojection=orthographic((-8,8,10),up=Z);
currentlight=White;

real f(real x, real y) {
if(x==0 && y==0) return 0;
else return x*y/(x^2+y^2);
}

triple F(pair t) {
  real theta=t.x;
  real r=t.y;
  real x=r*cos(theta);
  real y=r*sin(theta);
  real z=f(x,y);
  return (x,y,z);
}
real a=-1.8, b=-1; // P1 : x=a    P2 : x=b

triple pA=(a,b,f(a,b));
dot(pA,2bp+green);

real thmin=0, thmax=2pi, rmin=0, rmax=4;
surface s=surface(F,(thmin,rmin),(thmax,rmax),144,144,Spline);

surface p1=surface(plane(8X,4Z,(0,pA.y,-2)-4X)),
        p2=surface(plane(8Y,4Z,(pA.x,0,-2)-4Y));

draw(s,paleblue);
draw(p1,.6red,nolight);
draw(p2,.6green+opacity(.7),nolight);

real gx(pair z) {return z.x-a;}
guide3[][] para1=lift(f,contour(gx,(-4,-4),(4,4),new real[]{-1,-.5,0,.5,1,1.5,2,2.5}));
draw(para1,.7bp+green);
real gy(pair z) {return z.y-b;}
guide3[][] para2=lift(f,contour(gy,(-4,-4),(4,4),new real[]{-1,-.5,0,.5,1,1.5,2,2.5}));
draw(para2,.7bp+red);

draw(pA--pA-2*dir(para1[0][0],intersections(para1[0][0],p1)[0][0]),1bp+blue,Arrow3());
draw(pA--pA+2*dir(para2[0][0],intersections(para2[0][0],p2)[0][0]),1bp+blue,Arrow3());

limits(-5X,5X+5Y+4Z);
xaxis3(Label("$x$",1),Arrow3);
yaxis3(Label("$y$",1),Arrow3);
zaxis3(Label("$z$",1),Arrow3);

Re: Tangentes et dérivées partielles

MessagePosté: Jeudi 06 Janvier 2011, 09:31
par guiguiche
C'est superbe ça !

Re: Tangentes et dérivées partielles

MessagePosté: Samedi 08 Janvier 2011, 22:16
par guiguiche
Ma première contribution avec une dérivée directionnelle (il manque encore la trace de l'intersection avec le plan verticale dans la direction du vecteur U

b9983db2b3fb7e063a41adba7a719fe7.png

Code: Tout sélectionner
import graph3;

// les paramètres de l'image à générer
size(10cm);
currentprojection=orthographic((15,10,5),up=Z);
limits(O,3X+3Y+Z);

// Ce que l'on peut modifier
pair mini=(-2,-2) ; // coordonnées minimales dans le plan de départ
pair maxi=(2,2) ; // coordonnées maximales dans le plan de départ
pair A=(1,0.5) ; // point dans le plan de départ en lequel on calcule la dérivée directionnelle
pair U=(1/sqrt(2),1/sqrt(2)) ; // vecteur unitaire définissant la direction de la dérivée
real f(pair pM) { // la fonction à représenter
if (pM.x^2+pM.y^2 != 0) return pM.x*pM.y/(pM.x^2+pM.y^2) ;
else return 0 ;
}

// Calcul de la dérivée directionnelle en A dans la direction de U
real dt=0.00000000001 ;
real fUprimeA=(f(A+dt*U)-f(A))/dt ;

// Ce qui est prévu à représenter
surface p0=surface(plane((maxi.x-mini.x,0,0),(0,maxi.y-mini.y,0),(mini.x,mini.y,0))) ; // le plan de départ
surface s=surface(f,mini,maxi,36,36,Spline) ; // la surface représentation de la fonction f
triple pA=(A.x,A.y,0) ; // le point A dans le plan p0
triple pAA=(A.x,A.y,f(A)) ; // le point "image" de A
triple vU=(U.x,U.y,0) ; // le vecteur U dans le plan p0
triple vUU=(U.x,U.y,fUprimeA) ; // le vecteur tangent à la surface dans la direction de U

// La représentation graphique
xaxis3(Label("$x$",1),Arrow3);
yaxis3(Label("$y$",1),Arrow3);
zaxis3(Label("$z$",1),Arrow3);
draw(p0,palered+opacity(.9)); // le plan p0 "des coordonnées"
draw(s,green); // la surface représentation de f
dot("A",pA,2bp+blue) ; // le point A dans le plan pO
draw("$\vec{U}$",pA--pA+vU,red,Arrow3()) ; // le vecteur U dans le plan p0
dot(pAA,2bp+blue) ; // le point "image" de A
draw((pA.x,0,0)--pA,red+dashed) ; // la coordonnée x de A
draw((0,pA.y,0)--pA,red+dashed) ; // la coordonnée y de A
draw(pA--pAA,red+dashed) ; // on relie A et son "image"
draw(pAA--pAA+vUU,red,Arrow3()) ; // le vecteur tangent en f(A) dans la direction de U
draw(pA+vU--pAA+vUU,red+dashed) ; // on relie l'extrémité de U à l'extrémité du vecteur tangent


Edit : bizarre, je n'ai pas la même image à la compilation chez moi surtout concernant l'opacité.

Re: Tangentes et dérivées partielles

MessagePosté: Dimanche 09 Janvier 2011, 10:16
par chellier
guiguiche a écrit:Edit : bizarre, je n'ai pas la même image à la compilation chez moi surtout concernant l'opacité.

Il me semble que pour les besoins du forum, le code est compilé avec l'option -render=0, MB en dira surement plus.
Je pense que c'est pour ça que GMaths a mis les images de ses figures dans les posts précédents.

Christophe

Re: Tangentes et dérivées partielles

MessagePosté: Dimanche 09 Janvier 2011, 11:44
par MB
chellier a écrit:
guiguiche a écrit:Edit : bizarre, je n'ai pas la même image à la compilation chez moi surtout concernant l'opacité.


Il me semble que pour les besoins du forum, le code est compilé avec l'option -render=0, MB en dira surement plus.


Non, pour l'instant cette option de compilation n'est pas utilisée (mais il possible que cette option soit activée un de ces jours).
Par contre, il faut voir que le fichier pdf est transformé en fichier png : les différences au niveau de l'opacité peuvent éventuellement provenir de là.

Re: Tangentes et dérivées partielles

MessagePosté: Lundi 10 Janvier 2011, 17:49
par guiguiche
Voir ici quelques améliorations

Re: Tangentes et dérivées partielles

MessagePosté: Lundi 10 Janvier 2011, 18:10
par GMaths
guiguiche a écrit:Voir ici quelques améliorations

... même conseil que dans l'autre sujet :

Le remplacement de Spline par monotonic devrait réduire le problème des deux pointes.

Et tu peux augmenter le 36,36 (chez moi 200,200 passe) jusqu'à ce que ton pc te dise : out of memory... ou jusqu'à ce que la lenteur de déplacement de la figure t'énerve.

Il faudrait que je revois les exemples de ma galerie... car on peut aller plus loin qu'avant pour la valeur du paramètre n, (depuis les améliorations de la version ??), avant d'avoir un out of memory.

Re: Tangentes et dérivées partielles

MessagePosté: Lundi 10 Janvier 2011, 18:42
par guiguiche
J'ai planté ma machine avec 200,200 !

Re: Tangentes et dérivées partielles

MessagePosté: Lundi 10 Janvier 2011, 19:00
par GMaths
guiguiche a écrit:J'ai planté ma machine avec 200,200 !


Un "out of memory" logiquement, quand on demande plus que ce que le pc peut... mais pas de plantage.
Avec 250, 250, monotonic, cela passe chez moi et cela donne cela, pour la partie délicate :

Image

Re: Tangentes et dérivées partielles

MessagePosté: Lundi 10 Janvier 2011, 19:03
par guiguiche
Disons que la machine m'a affiché un message totalement incompréhensible, que le processus asy.exe ne pouvait pas être terminé et que les autres applications ne réagissaient plus dans un temps raisonnable donc j'ai redémarré mon pc.

Re: Tangentes et dérivées partielles

MessagePosté: Lundi 10 Janvier 2011, 19:06
par guiguiche
J'ai mis à jour la 2ème image avec plan tangent pour 100,100 (c'est suffisant compte tenu de l'angle de vue choisi).