Page 1 sur 2

Tracé d'une fonction en 3D

Posté : mar. 23 mars 2010, 19:51
par cjorssen
Bonjour,

Je cherche à représenter la fonction suivante :

B: (z,d) \mapsto \frac{1}{(1 + (z + d/2)^2)^{3/2}} + \frac{1}{(1 + (z - d/2)^2)^{3/2}}

pour 0 < d < 5 et surtout (c'est là que je ne sais pas faire) pour -d < z < d (les bornes sur la première variable dépendent de la seconde).

Un idée ?

Merci d'avance

--
Christophe

Re: Tracé d'une fonction en 3D

Posté : mar. 23 mars 2010, 20:18
par OG
Bonsoir

et si tu composais : (d,s)\mapsto (d,sd) avec (d,s)\in]0,5[\times]-1,1[ ?
évidemment il faudra remplacer les intervalles ouverts par des intervalles
fermé [.001,5-0.001]\times[-1+0.001,1-0.001] ou de ce genre.

O.G.

Re: Tracé d'une fonction en 3D

Posté : mar. 23 mars 2010, 20:24
par GM
Le sujet a été déplacé dans le forum d'aide.
Comme le suggère la remarque en rouge sur l'index, on va conserver les sous-forums thématiques pour des propositions finalisées qui peuvent être intéressantes.
L'exemple suivant peut en faire partie mais on le mettra quand il sera abouti, tel que tu le veux.

Figure asymptote 295b77bfcb4e515b99bb77fd746b4aa8
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1.  
  2. import graph3;
  3. size(7.5cm,0);
  4. size3(7.5cm,IgnoreAspect);
  5. real f(pair z) {return 1/(1+(z.x+z.y/2)^2)^(3/2)+1/(1+(z.x-z.y/2)^2)^(3/2);}
  6. bool cond(pair z) {return abs(z.x)<z.y;}
  7. currentprojection=orthographic(5,5,5);
  8. draw(surface(f,(-5,-5),(5,5),nx=100,Spline,cond),orange+white,meshpen=gray);
  9.  

Re: Tracé d'une fonction en 3D

Posté : mar. 23 mars 2010, 20:56
par GM

Figure asymptote 85e2c063eb2c7ce93e3febcbd4bd9b22
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1.  
  2. import graph3;
  3. import contour;
  4. currentlight=Viewport;
  5. size(7.5cm,0);
  6. size3(7.5cm,IgnoreAspect);
  7. real f(pair z) {return 1/(1+(z.x+z.y/2)^2)^(3/2)+1/(1+(z.x-z.y/2)^2)^(3/2);}
  8. bool cond(pair z) {return abs(z.x)<z.y;}
  9. currentprojection=orthographic(5,3,8);
  10. draw(surface(f,(-5,-5),(5,5),nx=200,Spline,cond),yellow+white);
  11.  

Re: Tracé d'une fonction en 3D

Posté : mar. 23 mars 2010, 20:59
par OG
Oui, je n'avais pas pensé à cela : surface(f, blabla) mais aussi graph pour la 2D
accepte une fonction à valeurs booléennes, selon vrai ou faux l'élément est tracé ou non.
Pour une surface cela fait un découpage selon les carreaux de Bézier.

O.G.

Re: Tracé d'une fonction en 3D

Posté : mar. 23 mars 2010, 21:14
par pivaldi
OG a écrit :Oui, je n'avais pas pensé à cela : surface(f, blabla) mais aussi graph pour la 2D
accepte une fonction à valeurs booléennes, selon vrai ou faux l'élément est tracé ou non.
Pour une surface cela fait un découpage selon les carreaux de Bézier.

D'ailleurs, cela ne fait pas très joli. Il faudra penser un jour à faire une routine de lissage.

Re: Tracé d'une fonction en 3D

Posté : mar. 23 mars 2010, 21:15
par cjorssen
Super. Merci. Pour info, il s'agit de la représentation du champ magnétique sur l'axe de deux spires. La position d=1 correspond à la position dite des bobines de Helmoltz (le champ pour -d/2 < z < d/2, c'est-à-dire entre les deux spires, est quasi constant pour d=1).

PS : promis, la prochaine fois, je poste au bon endroit ;-)

--
Christophe

Re: Tracé d'une fonction en 3D

Posté : mar. 23 mars 2010, 21:23
par GM
cjorssen a écrit :Super. Merci. Pour info, il s'agit de la représentation du champ magnétique sur l'axe de deux spires. La position d=1 correspond à la position dite des bobines de Helmoltz (le champ pour -d/2 < z < d/2, c'est-à-dire entre les deux spires, est quasi constant pour d=1).

PS : promis, la prochaine fois, je poste au bon endroit ;-)


C'est une figure intéressante, ne serait-ce que pour le coup du booléen donc... reviens mettre le code de ta figure telle que tu la souhaites dans ton cours et on la mettra dans le sous-forum des exemples 3D. Et si tu donnes une petite explication... on l'ajoutera pour les moteurs de recherche.

Tu noteras la différence de nx dans les deux exemples, liée au fait que l'on demande ou pas les lignes : on ne peut pas faire ce que l'on veut car sinon... out of memory.

Re: Tracé d'une fonction en 3D

Posté : mar. 23 mars 2010, 21:50
par OG
Le coup du booléen est intéressant mais pour des exemples plus compliqués à mon avis.
Là il suffit de faire une surface paramétrée. Pas besoin d'un nx démesuré, et la coupe est lisse.

Figure asymptote 574e86136ba6757fbd7f413949c352eb
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1.  
  2.  
  3. import graph3;
  4. import contour;
  5. currentlight=Viewport;
  6. size(7.5cm,0);
  7. size3(7.5cm,IgnoreAspect);
  8. real f(pair z) {return 1/(1+(z.x+z.y/2)^2)^(3/2)+1/(1+(z.x-z.y/2)^2)^(3/2);}
  9. triple g(pair z)
  10. {
  11. return (z.x*z.y,z.y,f((z.x*z.y,z.y)));
  12. }
  13.  
  14. bool cond(pair z) {return abs(z.x)<z.y;}
  15. currentprojection=orthographic(5,3,8);
  16. draw(surface(g,(-1,0),(1,5),nu=20,Spline),yellow+white);
  17. //draw(surface(f,(-5,-5),(5,5),nx=100,Spline,cond),red+white);
  18.  


O.G.

Re: Tracé d'une fonction en 3D

Posté : mar. 23 mars 2010, 22:34
par GM
OG a écrit :la coupe est lisse.
C'est vrai que c'est plus joli. :-)