Hermite : options, laquelle choisir ?

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.

Hermite : options, laquelle choisir ?

Messagepar maurice » Lundi 12 Décembre 2011, 04:14

Bonsoir, j'ai voulu reproduire un graphique d'un bac ES quelconque connaissant des points de la courbe (en fait une adaptation d'un code pstricks) :

Code: Tout sélectionner
real[] x={-.45, -.38, -.24, 0, .23, 1, 1.5, 2, 2.2, 2.5, 3, 3.5, 3.7, 4, 4.5, 5},
       y={-2, -1, 0, 1, 1.5, 2, 1.53, .47, 0, -.55, -1, -.42, 0, .6, 1.7, 2.8};
draw(graph(x,y,Hermite), green);


adf4dbd10ea4ae121c4fed7b7b6ffde2.png

Code: Tout sélectionner
import graph;
usepackage("mathrsfs");
unitsize(1cm);
xlimits(-2,5);
ylimits(-2,3);

real[] x={-.45, -.38, -.24, 0, .23, 1, 1.5, 2, 2.2, 2.5, 3, 3.5, 3.7, 4, 4.5, 5},
y={-2, -1, 0, 1, 1.5, 2, 1.53, .47, 0, -.55, -1, -.42, 0, .6, 1.7, 2.8};

pen p=fontsize(10pt);
pen ptick=gray(0.9);
pen pTick=gray(0.7);
arrowbar tempArrow =Arrow(HookHead,3bp);
xaxis(BottomTop,ptick,LeftTicks("%",extend =true,end=true,endlabel=false,Step=1,step=0.5,ptick=ptick,pTick=pTick));
yaxis(LeftRight,ptick,RightTicks("%",extend=true,end=true,endlabel=false,Step=1,step=0.5,ptick=ptick,pTick=pTick));
xequals(0,-2,3.25,p,LeftTicks(Size=1,size=0,NoZero),tempArrow);
yequals(0,-2,5.25,p,RightTicks(Size=1,size=0,NoZero),tempArrow);

draw(graph(x,y,Hermite), green);
//draw(graph(x,y,Hermite(monotonic)), red);
//draw(graph(x,y,Hermite(natural)), blue);

draw((3.2,-2)--(5,2.5));
//draw((0.5,2)--(1.5,2), Arrows);
//draw((-2/3,-1)--(2/3,3), Arrows);
//draw((2.5,-1)--(3.5,-1), Arrows);
labely("$y$",(0.1,3.25),E,p);
labelx("$x$",(5.25,0),S,p);
labelx("$0$",(-0.15,0),S,p);
label("$\mathscr{C}_{f}$",(4.5,2.5),p);
label("$\mathscr{D}$",(3.5,-1.75),p);


mais je devais avoir un nombre dérivé nul pour $x=1$ ...

J'ai donc essayé avec :

Code: Tout sélectionner
real[] x={-.45, -.38, -.24, 0, .23, 1, 1.5, 2, 2.2, 2.5, 3, 3.5, 3.7, 4, 4.5, 5},
       y={-2, -1, 0, 1, 1.5, 2, 1.53, .47, 0, -.55, -1, -.42, 0, .6, 1.7, 2.8};
draw(graph(x,y,Hermite(monotonic)), red);


421d5bb7f609746eaafb293d7fdf229d.png

Code: Tout sélectionner
import graph;
usepackage("mathrsfs");
unitsize(1cm);
xlimits(-2,5);
ylimits(-2,3);

real[] x={-.45, -.38, -.24, 0, .23, 1, 1.5, 2, 2.2, 2.5, 3, 3.5, 3.7, 4, 4.5, 5},
y={-2, -1, 0, 1, 1.5, 2, 1.53, .47, 0, -.55, -1, -.42, 0, .6, 1.7, 2.8};

pen p=fontsize(10pt);
pen ptick=gray(0.9);
pen pTick=gray(0.7);
arrowbar tempArrow =Arrow(HookHead,3bp);
xaxis(BottomTop,ptick,LeftTicks("%",extend =true,end=true,endlabel=false,Step=1,step=0.5,ptick=ptick,pTick=pTick));
yaxis(LeftRight,ptick,RightTicks("%",extend=true,end=true,endlabel=false,Step=1,step=0.5,ptick=ptick,pTick=pTick));
xequals(0,-2,3.25,p,LeftTicks(Size=1,size=0,NoZero),tempArrow);
yequals(0,-2,5.25,p,RightTicks(Size=1,size=0,NoZero),tempArrow);

//draw(graph(x,y,Hermite), green);
draw(graph(x,y,Hermite(monotonic)), red);
//draw(graph(x,y,Hermite(natural)), blue);

draw((3.2,-2)--(5,2.5));
//draw((0.5,2)--(1.5,2), Arrows);
//draw((-2/3,-1)--(2/3,3), Arrows);
//draw((2.5,-1)--(3.5,-1), Arrows);
labely("$y$",(0.1,3.25),E,p);
labelx("$x$",(5.25,0),S,p);
labelx("$0$",(-0.15,0),S,p);
label("$\mathscr{C}_{f}$",(4.5,2.5),p);
label("$\mathscr{D}$",(3.5,-1.75),p);


la tangente est bien horizontale pour $x=1$ mais c'est quand même bien joli !

puis avec

Code: Tout sélectionner
real[] x={-.45, -.38, -.24, 0, .23, 1, 1.5, 2, 2.2, 2.5, 3, 3.5, 3.7, 4, 4.5, 5},
       y={-2, -1, 0, 1, 1.5, 2, 1.53, .47, 0, -.55, -1, -.42, 0, .6, 1.7, 2.8};
draw(graph(x,y,Hermite(natural)), blue);


ce428bced2e51cdb8c7fbb33b674c8f4.png

Code: Tout sélectionner
import graph;
usepackage("mathrsfs");
unitsize(1cm);
xlimits(-2,5);
ylimits(-2,3);

real[] x={-.45, -.38, -.24, 0, .23, 1, 1.5, 2, 2.2, 2.5, 3, 3.5, 3.7, 4, 4.5, 5},
y={-2, -1, 0, 1, 1.5, 2, 1.53, .47, 0, -.55, -1, -.42, 0, .6, 1.7, 2.8};

pen p=fontsize(10pt);
pen ptick=gray(0.9);
pen pTick=gray(0.7);
arrowbar tempArrow =Arrow(HookHead,3bp);
xaxis(BottomTop,ptick,LeftTicks("%",extend =true,end=true,endlabel=false,Step=1,step=0.5,ptick=ptick,pTick=pTick));
yaxis(LeftRight,ptick,RightTicks("%",extend=true,end=true,endlabel=false,Step=1,step=0.5,ptick=ptick,pTick=pTick));
xequals(0,-2,3.25,p,LeftTicks(Size=1,size=0,NoZero),tempArrow);
yequals(0,-2,5.25,p,RightTicks(Size=1,size=0,NoZero),tempArrow);

//draw(graph(x,y,Hermite), green);
//draw(graph(x,y,Hermite(monotonic)), red);
draw(graph(x,y,Hermite(natural)), blue);

draw((3.2,-2)--(5,2.5));
//draw((0.5,2)--(1.5,2), Arrows);
//draw((-2/3,-1)--(2/3,3), Arrows);
//draw((2.5,-1)--(3.5,-1), Arrows);
labely("$y$",(0.1,3.25),E,p);
labelx("$x$",(5.25,0),S,p);
labelx("$0$",(-0.15,0),S,p);
label("$\mathscr{C}_{f}$",(4.5,2.5),p);
label("$\mathscr{D}$",(3.5,-1.75),p);


c'est plus joli mais je en vois pas la différence avec
Code: Tout sélectionner
/draw(graph(x,y,Hermite))


Pour finir une question, quelle(s) différence(s) entre toutes ces options d'interpolation par Hermite sans oublier clamped(real slopea, real slopeb) ou notaknot) ? Dans quel cas utiliser plutôt l'une que l'autre ? Au pire, si c'est vraiment trop long à expliquer, je recherche une référence littéraire pour m’instruire !

Merci

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

Publicité

Re: Hermite : options, laquelle choisir ?

Messagepar GMaths » Lundi 12 Décembre 2011, 09:02

maurice a écrit:Pour finir une question, quelle(s) différence(s) entre toutes ces options d'interpolation par Hermite sans oublier clamped(real slopea, real slopeb) ou notaknot) ?

Il y en a une dont l'explication dans graph_splinetype.asy m'a semblé claire :

Image
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: Hermite : options, laquelle choisir ?

Messagepar GMaths » Lundi 12 Décembre 2011, 13:36

Rappel d'une question posée par quelqu'un que tu connais... et de sa réponse, en page 2.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: Hermite : options, laquelle choisir ?

Messagepar maurice » Lundi 12 Décembre 2011, 19:42

Bonsoir, merci pour les réponses :

GMaths a écrit:Rappel d'une question posée par quelqu'un que tu connais... et de sa réponse, en page 2.


Comme quoi je suis un mauvais élève.

Pour revienir à ton exemple, le résultat est pas mal avec l'extension interpolate et pwhermite :

31b12bbbe1edf6f05c3d058aae0a98a5.png

Code: Tout sélectionner
import graph;
import interpolate;
usepackage("mathrsfs");
unitsize(1cm);
xlimits(-2,5);
ylimits(-2,3);

real[] x={-0.5, 0, 1, 3, 5},
y={-2, 1, 2, -1, 2.75},
dy={10, 3, 0, 0, 2.25};

pen p=fontsize(10pt);
pen ptick=gray(0.9);
pen pTick=gray(0.7);
arrowbar tempArrow =Arrow(HookHead,3bp);
xaxis(BottomTop,ptick,LeftTicks("%",extend =true,end=true,endlabel=false,Step=1,step=0.5,ptick=ptick,pTick=pTick));
yaxis(LeftRight,ptick,RightTicks("%",extend=true,end=true,endlabel=false,Step=1,step=0.5,ptick=ptick,pTick=pTick));
xequals(0,-2,3.25,p,LeftTicks(Size=1,size=0,NoZero),tempArrow);
yequals(0,-2,5.25,p,RightTicks(Size=1,size=0,NoZero),tempArrow);

real f(real t){ return pwhermite(x,y,dy)(t); }
path Cf=graph(f,-0.5,5,n=13,operator=..);

draw(Cf, blue);
dot(Cf, 3bp+red);

draw((3.2,-2)--(5,2.5));
//draw((0.5,2)--(1.5,2), Arrows);
//draw((-2/3,-1)--(2/3,3), Arrows);
//draw((2.5,-1)--(3.5,-1), Arrows);
labely("$y$",(0.1,3.25),E,p);
labelx("$x$",(5.25,0),S,p);
labelx("$0$",(-0.15,0),S,p);
label("$\mathscr{C}_{f}$",(4.5,2.5),p);
label("$\mathscr{D}$",(3.5,-1.75),p);


J'avais déjà essayé mais en utilisant trop de points...

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é