Tangentes et dérivées partielles

Tout ce qui concerne le langage Asymptote. Ce langage est utilisable sur le forum via les balises asy.
[participation réservée aux utilisateurs 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.
guiguiche
Modérateur général
Modérateur général
Messages : 8191
Inscription : vendredi 06 janvier 2006, 15:32
Statut actuel : Enseignant
Localisation : Le Mans
Contact :

Tangentes et dérivées partielles

Message non lu par guiguiche »

Utilisateurs réguliers d'Asymptote, vous avez une occasion (unique?) de me convaincre que ce logiciel est bien adapté à la construction de figures et relativement simple d'emploi !

Dans le cadre de mon chapitre sur les dérivées partielles, je voudrais illustrer la notion en ajoutant à l'image que j'ai mise (créée avec K3DSurf) les tangentes dans la direction de x et dans la direction de y au point d'intersection des plans (quitte à avoir davantage de transparence et un autre angle de vue puisque j'ai fait ça à l'impro avec ce logiciel que je n'utilise quasiment jamais).
Pas d'aide par MP : les questions sont publiques, les réponses aussi.
Tu as apprécié l'aide qui t'a été fournie ? Alors n'hésite pas à rendre la pareille à quelqu'un d'autre.
Un peu d'autopromotion.
maurice
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 399
Inscription : jeudi 25 mars 2010, 13:49

Re: Tangentes et dérivées partielles

Message non lu par maurice »

Bonjour, aussi simple qu'un calcul de dérivée partielle (ou presque) :
d76750e2a50b9fe280a35d4ad520b9c99b97f262.png
Je ne sais pas si c'est ce que tu voulais.
Je ne sais pas non plus si le code est optimal. il y a sûrement des améliorations à apporter.

Maurice

PS : Pour en revenir à ce sujet, est ce que project(inter) aurait pu servir ici à la place de pair interx=(inter.x,inter.y);. Si oui comment ?
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
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2042
Inscription : lundi 01 octobre 2007, 10:20

Re: Tangentes et dérivées partielles

Message non lu par GMaths »

guiguiche a écrit :Utilisateurs réguliers d'Asymptote, vous avez une occasion (unique?) de me convaincre que ce logiciel est bien adapté à la construction de figures et relativement simple d'emploi !
Houla... bon bein alors, je vais essayer de trouver du temps cet après-midi pour plancher sur le sujet... et tenter de faire aussi une proposition. Simple ? On verra... je vais essayer de faire plus simple que Maurice en tout cas. ;-)
guiguiche
Modérateur général
Modérateur général
Messages : 8191
Inscription : vendredi 06 janvier 2006, 15:32
Statut actuel : Enseignant
Localisation : Le Mans
Contact :

Re: Tangentes et dérivées partielles

Message non lu par guiguiche »

maurice a écrit :Bonjour, aussi simple qu'un calcul de dérivée partielle (ou presque)
Quand je regarde ce code, le mot simple n'est pas celui qui me vient en premier à l'esprit :mrgreen:
Disons qu'étant totalement néophyte en langage Asymptote (et en C), je ne sais pas quels sont les paramètres à modifier pour obtenir des choses un peu différentes en moins de 5 minutes.
maurice a écrit :Je ne sais pas si c'est ce que tu voulais.
Ça ressemble à ce que j'espérais. Toutefois, 2 petites choses me chagrinent :
- la trace de l'intersection avec le plan y=-1 est la même qu'elle soit en avant ou en arrière de la figure
- la tangente en y devrait être positive il me semble (arf non, j'en étais encore avec ma valeur positive de y sur mon graphique)
En tout cas merci pour cette proposition de code.
Pas d'aide par MP : les questions sont publiques, les réponses aussi.
Tu as apprécié l'aide qui t'a été fournie ? Alors n'hésite pas à rendre la pareille à quelqu'un d'autre.
Un peu d'autopromotion.
maurice
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 399
Inscription : jeudi 25 mars 2010, 13:49

Re: Tangentes et dérivées partielles

Message non lu par maurice »

Bonjour,

Pour changer les équations de plans parallèles aux axes de coordonnées il faut juste changer les paramètres cx et cy.
Puis éventuellement choisir un bon angle de vue avec la sortie OpenGL (avec les options -V -render=4 puis la touche (c)).
Voici ce que donne cx=xy=1
82aa9a1b099728bff62690ca6bc5d9dd015bb505.png
Pour la surface, changer la ligne 18 :

Code : Tout sélectionner

real f(pair z) {return abs(z)^2;}
si il n'y pas de points d'intersection entre les deux chemins, il faut agrandir la boite an augmentant les valeurs dans (lignes 13 et 14) :

Code : Tout sélectionner

pair a=(-2,-2);
pair b=(2,2);
Pour les pointillés il va falloir faire appel à un us spécialiste que moi.

Maurice

PS : à tester avec d'autres surfaces pour voir si le calcul des dérivées partielles se passe bien
Dernière modification par maurice le mercredi 05 janvier 2011, 13:53, modifié 1 fois.
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
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2042
Inscription : lundi 01 octobre 2007, 10:20

Re: Tangentes et dérivées partielles

Message non lu par GMaths »

Code : Tout sélectionner

import graph3;
size(10cm);

currentprojection=orthographic((15,10,5),up=Z);
currentlight=light(5,2,0);

real f(real x, real y) {return x^2+y^2;}
real dfdx(real x, real y) {return 2*x;}
real dfdy(real x, real y) {return 2*y;}

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);
}
triple pA=(1,2,f(1,2));
dot(pA,2bp+green);

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

surface p1=surface(plane(8X,8Z,pA-5X-4Z)),
        p2=surface(plane(8Y,8Z,pA-6Y-4Z));

draw(s,blue);
draw(p1,red+opacity(.9));
draw(p2,green+opacity(.9));
real h=1;
draw(pA--pA+(h,0,dfdx(pA.x,0)*h),paleblue,Arrow3());
draw(pA--pA+(0,h,dfdy(0,pA.y)*h),paleblue,Arrow3());

limits(O,4X+5Y+12Z);
xaxis3(Label("$x$",1),Arrow3);
yaxis3(Label("$y$",1),Arrow3);
zaxis3(Label("$z$",1),Arrow3);
Image
Dernière modification par GMaths le mercredi 05 janvier 2011, 14:30, modifié 1 fois.
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2042
Inscription : lundi 01 octobre 2007, 10:20

Re: Tangentes et dérivées partielles

Message non lu par GMaths »

Une de mes tangentes semble incorrecte donc à revoir ... mais il faut déjà voir, si ce type de figure convient.
guiguiche
Modérateur général
Modérateur général
Messages : 8191
Inscription : vendredi 06 janvier 2006, 15:32
Statut actuel : Enseignant
Localisation : Le Mans
Contact :

Re: Tangentes et dérivées partielles

Message non lu par guiguiche »

GMaths a écrit :Une de mes tangentes semble incorrecte donc à revoir ... mais il faut déjà voir, si ce type de figure convient.
Effectivement, on dirait bien qu'une tangente est fausse, pourtant, tu as bien "triché" en mettant dans le code les expressions des dérivées partielles.
La difficulté principale d'interprétation de ta figure est que les deux plans ne sont pas tronqués à la même hauteur que le paraboloïde donc la logique des couleurs est suspecte au premier regard.
Merci pour cette autre proposition.
Pas d'aide par MP : les questions sont publiques, les réponses aussi.
Tu as apprécié l'aide qui t'a été fournie ? Alors n'hésite pas à rendre la pareille à quelqu'un d'autre.
Un peu d'autopromotion.
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2042
Inscription : lundi 01 octobre 2007, 10:20

Re: Tangentes et dérivées partielles

Message non lu par GMaths »

GMaths a écrit :Une de mes tangentes semble incorrecte donc à revoir ... mais il faut déjà voir, si ce type de figure convient.
La fatigue : voilà ce que c'est que de se coucher à 3h30 quand on se lève à 6h30.

Erreur grossière rectifiée.
guiguiche a écrit :pourtant, tu as bien "triché" en mettant dans le code les expressions des dérivées partielles.
Comme tu aspirais à du code simple, cela m'a semblé le plus simple. ;-)
guiguiche a écrit :La difficulté principale d'interprétation de ta figure est que...
J'ai essayé d'améliorer un peu les choses.
guiguiche
Modérateur général
Modérateur général
Messages : 8191
Inscription : vendredi 06 janvier 2006, 15:32
Statut actuel : Enseignant
Localisation : Le Mans
Contact :

Re: Tangentes et dérivées partielles

Message non lu par guiguiche »

GMaths a écrit :Comme tu aspirais à du code simple, cela m'a semblé le plus simple. ;-)
Certes oui et ton code y contribue (surtout après le premier code et les explications de maurice qui ont dégrossi les choses).
GMaths a écrit :
guiguiche a écrit :La difficulté principale d'interprétation de ta figure est que...
J'ai essayé d'améliorer un peu les choses.
C'est bien sympa cette figure avec le passage en cylindrique pour éviter les "coins" et elle est, à mon goût, plus lisible que la première.

Je commence à voir la logique de construction des éléments graphiques. Par contre, je n'ai pas compris les 8X, -5X-4Z, ... dans :

Code : Tout sélectionner

surface p1=surface(plane(8X,8Z,pA-5X-4Z)),
        p2=surface(plane(8Y,8Z,pA-6Y-4Z));
Pas d'aide par MP : les questions sont publiques, les réponses aussi.
Tu as apprécié l'aide qui t'a été fournie ? Alors n'hésite pas à rendre la pareille à quelqu'un d'autre.
Un peu d'autopromotion.
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2042
Inscription : lundi 01 octobre 2007, 10:20

A

Message non lu par GMaths »

guiguiche a écrit :Par contre, je n'ai pas compris les 8X, -5X-4Z, ... dans :

Code : Tout sélectionner

surface p1=surface(plane(8X,8Z,pA-5X-4Z)),
        p2=surface(plane(8Y,8Z,pA-6Y-4Z));
Voir ici : http://marris.org/asymptote/Positions_r ... index.html pour comprendre plane : il faut fournir deux vecteurs et un point.
  • pA-6Y-4Z, c'est l'image de pA par la translation de vecteur $\vec{u}(0;-6;-4)$
  • 8Y est le vecteur $\vec{v_1}(0;8;0)$
  • 8Z est le vecteur $\vec{v_2}(0;0;8)$
guiguiche
Modérateur général
Modérateur général
Messages : 8191
Inscription : vendredi 06 janvier 2006, 15:32
Statut actuel : Enseignant
Localisation : Le Mans
Contact :

Re: Tangentes et dérivées partielles

Message non lu par guiguiche »

@maurice

J'ai mis du temps à comprendre pourquoi ton :

Code : Tout sélectionner

real f(pair z) {return abs(z)^2;}
calculait x^2+y^2 :roll: (le temps que je retienne que "pair" désigne un couple)
maurice a écrit :PS : à tester avec d'autres surfaces pour voir si le calcul des dérivées partielles se passe bien
Oui, mais il va déjà falloir que je configure convenablement notepad++, notamment la coloration syntaxique (malgré les nombreux renvois de GIYF sur le forum, je ne m'en sors pas pour le moment).
Pas d'aide par MP : les questions sont publiques, les réponses aussi.
Tu as apprécié l'aide qui t'a été fournie ? Alors n'hésite pas à rendre la pareille à quelqu'un d'autre.
Un peu d'autopromotion.
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2042
Inscription : lundi 01 octobre 2007, 10:20

Re: Tangentes et dérivées partielles

Message non lu par GMaths »

guiguiche a écrit :Oui, mais il va déjà falloir que je configure convenablement notepad++, notamment la coloration syntaxique
N'est-ce pas vite réglé avec l'export import ? Il suffit de demander à quelqu'un, non ?
2011-01-05_152642.png
2011-01-05_152642.png (27.12 Kio) Consulté 1237 fois

----------------

Edition du 29/12/11 : Tutoriel sur Notepad++, l'éditeur qu'il faut sous Windows pour éditer, colorer et compiler du code Asymptote
Dernière modification par GMaths le jeudi 29 décembre 2011, 15:23, modifié 1 fois.
guiguiche
Modérateur général
Modérateur général
Messages : 8191
Inscription : vendredi 06 janvier 2006, 15:32
Statut actuel : Enseignant
Localisation : Le Mans
Contact :

Re: Tangentes et dérivées partielles

Message non lu par guiguiche »

J'ai déjà regardé dans ce menu : pas d'asy par défaut et quand je mets asy dans la case puis clique sur import, je ne vois pas bien ce que je peux choisir (pas même dans le dossier asymptote) !
Pas d'aide par MP : les questions sont publiques, les réponses aussi.
Tu as apprécié l'aide qui t'a été fournie ? Alors n'hésite pas à rendre la pareille à quelqu'un d'autre.
Un peu d'autopromotion.
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2042
Inscription : lundi 01 octobre 2007, 10:20

Re: Tangentes et dérivées partielles

Message non lu par GMaths »

asy.zip
(7.14 Kio) Téléchargé 188 fois
;-)
guiguiche
Modérateur général
Modérateur général
Messages : 8191
Inscription : vendredi 06 janvier 2006, 15:32
Statut actuel : Enseignant
Localisation : Le Mans
Contact :

Re: Tangentes et dérivées partielles

Message non lu par guiguiche »

C'est sûr que c'est tout de suite mieux avec le bon fichier xml :D
Merci.
Pas d'aide par MP : les questions sont publiques, les réponses aussi.
Tu as apprécié l'aide qui t'a été fournie ? Alors n'hésite pas à rendre la pareille à quelqu'un d'autre.
Un peu d'autopromotion.
maurice
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 399
Inscription : jeudi 25 mars 2010, 13:49

Re: Tangentes et dérivées partielles

Message non lu par maurice »

guiguiche a écrit :@maurice

J'ai mis du temps à comprendre pourquoi ton :

Code : Tout sélectionner

real f(pair z) {return abs(z)^2;}
calculait x^2+y^2 :roll: (le temps que je retienne que "pair" désigne un couple)
Pardon, d'une manière générale, pair désigne un couple de réels et plus précisément un nombre complexe, triple un triplet de réels.
Si z est de type z, z.x est son abscisse, z.y est son ordonnée (pour un triple a, il y a a.x, a.y et a.z)
Le produit de deux pairs correspond a la multiplication complexe, abs (z) est le module de z.
maurice a écrit :PS : à tester avec d'autres surfaces pour voir si le calcul des dérivées partielles se passe bien
b2d9261b1994b737851bdbf72913ff327817e4a5.png
Ca à l'air de marcher.
Le premier code a été un peu modifié (intersection des plans et de la surface).
Moyennant des petites modif, ça pourrait aller dans pas mal de cas.

Maurice

Edit 1 : en fait ca ne marche pas, les chemins ne collent pas à la surface.
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
guiguiche
Modérateur général
Modérateur général
Messages : 8191
Inscription : vendredi 06 janvier 2006, 15:32
Statut actuel : Enseignant
Localisation : Le Mans
Contact :

Re: Tangentes et dérivées partielles

Message non lu par guiguiche »

Et comment contourne-t-on le problème d'une division par 0, par exemple f(x,y)=x*y/(x^2+y^2), sachant qu'en plus je voudrais ajouter f(0,0)=0 et, bien sûr, représenter les dérivées partielles en (0,0) ?

Edit : je viens de voir une possibilité sur ta figure, maurice, en ce qui concerne la division par 0
Pas d'aide par MP : les questions sont publiques, les réponses aussi.
Tu as apprécié l'aide qui t'a été fournie ? Alors n'hésite pas à rendre la pareille à quelqu'un d'autre.
Un peu d'autopromotion.
OG
Modérateur spécialisé
Modérateur spécialisé
Messages : 2293
Inscription : lundi 12 mars 2007, 11:20
Localisation : Rouen

Re: Tangentes et dérivées partielles

Message non lu par OG »

Hy

Pour ces questions de calcul de dérivée, si on a l'expression alors il ne faut pas
s'en priver. Les calculs approchés réservent parfois des surprises, alors pourquoi
se compliquer la vie ?

O.G.
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2042
Inscription : lundi 01 octobre 2007, 10:20

Re: Tangentes et dérivées partielles

Message non lu par GMaths »

Une version sans les dérivées partielles.

On peut changer a et b.

Je n'ai pas essayé de changement de fonction f.

Code : Tout sélectionner

import graph3;
import contour;
size(10cm);

currentprojection=orthographic((15,10,5),up=Z);
currentlight=light(5,2,0);

real f(real x, real y) {return 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=2, b=-.5; // 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=3;
surface s=surface(F,(thmin,rmin),(thmax,rmax),36,36,Spline);

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

draw(s,blue);
draw(p1,red+opacity(.9));
draw(p2,green+opacity(.9));

real h=10; // hauteur des paraboles

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

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

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


Edition :

Si on veut changer f, il faudra faire des modifications.

Un exemple :

Code : Tout sélectionner

import graph3;
import contour;
size(10cm);

currentprojection=orthographic((8,5,15),up=Z);
currentlight=light(5,2,3);

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=.5, b=2; // 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),72,72,Spline);

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

draw(s,blue,light(0,0,10));
draw(p1,red+opacity(.9));
draw(p2,green+opacity(.9));

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

draw(pA--pA-3*dir(para1,intersections(para1,p1)[0][0]),paleblue,Arrow3());
draw(pA--pA+3*dir(para2,intersections(para2,p2)[0][0]),paleblue,Arrow3());

limits(O,4X+5Y+3Z);
xaxis3(Label("$x$",1),Arrow3);
yaxis3(Label("$y$",1),Arrow3);
zaxis3(Label("$z$",1),Arrow3);
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message