CoCalc Public FilesContinuite-Surfaces.sagewsOpen with one click!
Author: Juan Carlos Bustamante
Views : 152
Compute Environment: Ubuntu 18.04 (Deprecated)

Continuité, surfaces et courbes de niveau

Soit DRn\mathcal{D} \subseteq \mathbb{R}^n une région de l'espace (on peut penser que n=2n=2), et f:DRf:\mathcal{D} \to \mathbb{R} une fonction. Soit en plus aD\bf{a}\in \mathcal{D}. On dit que la fonction f(x)f(\bf{x}) tend vers LL lorsque x\bf{x} tend vers a\bf{a} si pour tout réel ϵ>0\epsilon > 0 il existe un réel δ>0\delta >0 tel que f(x)L<ϵ|f(\bf{x}) - L| < \epsilon aussitôt que xa<δ|\bf{x} - \bf{a}| < \delta. Autrement dit, la distance entre f(x)f(\bf{x}) et LL est aussi petite que l'on veut, pourvu que la distance entre x\bf{x} et a\bf{a} soit suffisament petite. On écrit dans ce cas limxaf(x)=L\displaystyle \lim_{\bf{x} \to \bf{a}} f(\bf{x} ) = L

La fonction ff est continue en a\bf{a} si limxaf(x)=f(a)\displaystyle \lim_{ \bf{x} \to \bf{a} } f(x)= f( \bf{a} ). Ceci présuppose notamment que a\bf{a} fait partie du domaine de ff. Ceci signifie que les valeurs de ff ne varient pas brusquement lorsque x\bf{x} varie aux alentours de a\bf{a}. Dans le cas où n=2n=2 (deux variables) l'interprétation de ceci en termes de la surface z=f(x,y)z=f(x,y) est essentiellement la même que celle de la contuité d'une fonction y=f(x)y=f(x) en termes de sa courbe : il n'y a pas de déchirures. Par ailleurs, en plusieurs variables on dispose de l'outil supplémentaire qui sont les courbes de niveau.

Voyons quelques exemples.

Exemple 1.

On considère la fonction

f(x,y)={x2y2x2+y2 si (x,y)(0,0)0 si (x,y)=(0,0) f(x,y) = \left\{ \begin{array}{lcl} \frac{x^2-y^2}{x^2+y^2} & \text{ si } & (x,y)\ne (0,0)\\ 0& \text{ si } & (x,y) =(0,0) \end{array}\right.

On voit bien qu'il y a un problème à l'origine (le 11e commandement : tu ne diviseras point par 00).

(x, y)
3D rendering not yet implemented

Voyons les courbes de niveau : on voit bien que si l'on se rapproche de l'origine par différentes droites, les valeurs de ff sont différentes aussi. La limite de ff en (0,0)(0,0) n'existe simplement pas, cette fonction ne peut pas être continue en ce point.

C=contour_plot(f, (x,-1, 1), (y,-1, 1),cmap='Blues',linestyles='solid', colorbar=True)# Création du graphique des courbes de niveau. show(C,figsize=6)
cm = colormaps.Blues def c(x,y): return 0.7 + 0.4*(x^2- y^2)/(x^2+ y^2) f(x,y)=(x^2-y^2)/(x^2+y^2) S=plot3d(f(x,y), (x,-1,1), (y,-1,1), color = (c,cm)) show(S)
3D rendering not yet implemented

Exemple 2 :

Considérons la fonction g(x,y)=arctan(yx)g(x,y) = \arctan \left( \frac{y}{x}\right) lorsque x0x\ne 0. La présence du xx au dénominateur indique qu'il y aura des problèmes pour des valeurs de xx très petites.

cm =colormaps.hot def c(x,y): return (1/pi.n())*arctan(y/x) +1/2 g(x,y) = arctan(y/x) S=plot3d(g(x,y),(x,-1,1),(y,-1,1),color=(c,cm)) show(S, aspect_ratio=[pi,pi,1])
3D rendering not yet implemented

Les courbes de niveau :

g(x,y)=cg(x,y) = c revient à dire y/xtan(c)y / x \tan\left(c \right), ce qui donne que la courbe de niveau cc est la droite y=(tanc)xy = (\tan c)x. Voyons un peu :

C=contour_plot(g, (x,-1, 1), (y,-1, 1),cmap='hot',linestyles='solid', colorbar=True) show(C)

Exemple 3 :

Voyons maintenant à quoi ressemble une surface continue. Soit hh la fonction définie par

h(x,y)={3x2yx2+y2 si (x,y)(0,0)0 si (x,y)=(0,0) h(x,y) = \left\{ \begin{array}{lcl} \frac{3x^2 y}{x^2+y^2} & \text{ si } & (x,y)\ne (0,0)\\ 0& \text{ si } & (x,y) =(0,0) \end{array}\right.

Ici on pourrait penser que le même problème que ci-haut va se présenter, mas ce n'est pas le cas, en fait, le numérateur est de degré 3, le dénominateur de degré 2. Le numérateur tend vers 0 plus vite que le dénominateur.

var('x,y') cm = colormaps.Blues h(x,y)= 3*x^2*y/(x^2+y^2) def c(x,y): return 0.5+1.5*x^2*y/(x^2+y^2+0.005)# S=plot3d(h,(x,-1,1),(y,-1,1), color = (c,cm), opacity=1, mesh=1) show(S) C=contour_plot(h, (x,-1, 1), (y,-1, 1),cmap='Blues',linestyles='solid', colorbar=True) show(C,figsize=4)
(x, y)
3D rendering not yet implemented

Continuité pour cet exemple :

Il n'y a pas de variation brusque du ton de bleu dans le diagramme!

Exemple 4

Soit maintenant la fonction définie par h(x,y)=xy2x2+y4\displaystyle h(x,y) = \frac{xy^2}{x^2+y^4} pour (x,y)(0,0)(x,y)\ne (0,0) Nous avons vu en classe que si Cm\mathcal{C}_m est la droite de pente mm, alors limCm(x,y)(0,0)f(x,y)=0\lim_{\stackrel{(x,y)\to (0,0)}{\mathcal{C}_m}} f(x,y) = 0 mais sur la parabole x=y2x=y^2, la limite a une autre valeur. Ainsi, la limite de f(x,y)f(x,y) lorsque (x,y)(x,y) tend vers 00 n'existe pas. Voyons la surface, mais mieux encore, les courbes de niveau.

var('x,y,s,t') h(x,y)= x*y^2/(x^2+y^4) cm = colormaps.Blues def c(x,y): return 0.6+x*y^2/(x^2+y^4+0.005)# Colorier ceci pose des problèmes, à cause de la singularité. S=plot3d(h,(x,-1,1),(y,-1,1),color = (c,cm), opacity=1, mesh=1) show(S) C=contour_plot(h, (x,-1, 1), (y,-1, 1),cmap='Blues',linestyles='solid', colorbar=True) show(C,figsize=4)
(x, y, s, t)
3D rendering not yet implemented

Continuité?

C'est moins évident que dans les exemples précédents, mais on peut quand même voir le problème à l'origine : prés de l'origine, il y a des zones de toutes les tonalités de bleu.

Exemple 5

Soit maintenant la fonction définie par h(x,y)=yx2+y2\displaystyle h(x,y) = \frac{y}{x^2+y^2} pour (x,y)(0,0)(x,y)\ne (0,0) Nous avons vu en classe que les courbes de niveau sont des cercles, privés d'un point, à savoir l'origine. Voyons les figures.

h(x,y)= y/(x^2+y^2) cm = colormaps.Spectral def c(x,y): return float(y/(x^2 + y^2+0.005))# Colorier ceci pose des problèmes, à cause de la singularité. S=plot3d(h,(x,-1,1),(y,-1,1),color = (c,cm), opacity=1, mesh=1) show(S, frame_aspect_ratio=[20,20,1]) C=contour_plot(h,(x,-1.5,1.5),(y,-1.5,1.5), cmap = "Spectral", contours = [-2,-1, -0.5,-0.25,0,0.25,0.5,1,2], colorbar = True, axes = True, labels = True, label_colors='black', label_inline=True, label_fontsize=8, gridlines = True, axes_labels=['$x$','$y$']) show(C,figsize=8)
3D rendering not yet implemented
min([1,2])
1
import matplotlib.cm matplotlib.cm.datad.keys() var('r v') cmsel = [matplotlib.cm.get_cmap('autumn')(_) for _ in sxrange(0,1,0.05)] p = plot3d(0.2*(r**2 + v**2) + cos(2*r)*sin(2*v),(r,-2,2), (v,-2,2), adaptive=True, color=cmsel, plot_points=10, opacity=0.9) p2 = sphere((0,0,0),1,color='black',opacity=0.5) (p+p2).show(aspect_ratio=(1,1,1))
[u'Spectral', u'summer', u'coolwarm', u'tab20c_r', u'Wistia_r', u'RdYlBu_r', u'Set1', u'Set2', u'Set3', u'brg_r', u'pink_r', u'Dark2', u'prism', u'PuOr_r', u'afmhot_r', u'terrain_r', u'PuBuGn_r', u'RdPu', u'gist_ncar_r', u'tab10_r', u'gist_yarg_r', u'Dark2_r', u'YlGnBu', u'RdYlBu', u'hot_r', u'gist_rainbow_r', u'copper_r', u'PuBu_r', u'cool_r', u'cool', u'gray', u'gist_stern', u'Greens_r', u'GnBu', u'gist_ncar', u'spring_r', u'gist_rainbow', u'gist_heat_r', u'Wistia', u'OrRd_r', u'CMRmap', u'tab20_r', u'bone', u'gist_stern_r', u'RdYlGn', u'Pastel2_r', u'BuGn_r', u'spring', u'terrain', u'YlOrRd_r', u'Set2_r', u'winter_r', u'tab20', u'PuBu', u'RdGy_r', u'flag_r', u'jet_r', u'RdPu_r', u'Purples_r', u'gist_yarg', u'BuGn', u'Paired_r', u'hsv_r', u'bwr', u'cubehelix', u'Greens', u'PRGn', u'gist_heat', u'Paired', u'hsv', u'Oranges_r', u'prism_r', u'tab10', u'Pastel2', u'Pastel1_r', u'Pastel1', u'gray_r', u'PuRd_r', u'Spectral_r', u'gnuplot2_r', u'gist_earth', u'YlGnBu_r', u'copper', u'gist_earth_r', u'Set3_r', u'OrRd', u'gnuplot_r', u'ocean_r', u'brg', u'gnuplot2', u'jet', u'bone_r', u'BuPu', u'Oranges', u'RdYlGn_r', u'PiYG', u'CMRmap_r', u'YlGn', u'binary_r', u'gist_gray_r', u'Accent', u'BuPu_r', u'gist_gray', u'flag', u'bwr_r', u'RdBu_r', u'BrBG', u'Reds', u'Set1_r', u'summer_r', u'GnBu_r', u'BrBG_r', u'Reds_r', u'RdGy', u'PuRd', u'Accent_r', u'Blues', u'tab20b_r', u'autumn_r', u'autumn', u'cubehelix_r', u'nipy_spectral_r', u'PRGn_r', u'Greys_r', u'pink', u'binary', u'winter', u'gnuplot', u'RdBu', u'hot', u'YlOrBr', u'coolwarm_r', u'rainbow_r', u'rainbow', u'PiYG_r', u'YlGn_r', u'Blues_r', u'YlOrBr_r', u'seismic', u'Purples', u'tab20c', u'tab20b', u'seismic_r', u'Greys', u'ocean', u'YlOrRd', u'PuOr', u'PuBuGn', u'nipy_spectral', u'afmhot'] (r, v)
3D rendering not yet implemented