texlive[45708] Master/texmf-dist: repere (6nov17)

commits+karl at tug.org commits+karl at tug.org
Mon Nov 6 22:58:19 CET 2017


Revision: 45708
          http://tug.org/svn/texlive?view=revision&revision=45708
Author:   karl
Date:     2017-11-06 22:58:19 +0100 (Mon, 06 Nov 2017)
Log Message:
-----------
repere (6nov17)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/metapost/repere/README.md
    trunk/Master/texmf-dist/doc/metapost/repere/repere-doc.pdf
    trunk/Master/texmf-dist/doc/metapost/repere/repere-doc.tex
    trunk/Master/texmf-dist/metapost/repere/repere.mp

Modified: trunk/Master/texmf-dist/doc/metapost/repere/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/metapost/repere/README.md	2017-11-06 21:58:05 UTC (rev 45707)
+++ trunk/Master/texmf-dist/doc/metapost/repere/README.md	2017-11-06 21:58:19 UTC (rev 45708)
@@ -1,4 +1,4 @@
-Package repere - Version 17.05 - May 10, 2017
+Package repere - Version 17.11 - November 6, 2017
 
 This package provides MetaPost macros for drawing sec­ondary school math­e­mat­ics figures in a coordinate system :
 - axis, grids

Modified: trunk/Master/texmf-dist/doc/metapost/repere/repere-doc.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/metapost/repere/repere-doc.tex
===================================================================
--- trunk/Master/texmf-dist/doc/metapost/repere/repere-doc.tex	2017-11-06 21:58:05 UTC (rev 45707)
+++ trunk/Master/texmf-dist/doc/metapost/repere/repere-doc.tex	2017-11-06 21:58:19 UTC (rev 45708)
@@ -245,7 +245,7 @@
 
 
 \section{Utilisation du fichier}
-Les macros du fichier \verb+repere.mp+ ont pour but de simplifier la création de figures dans un repère du plan avec \MP{}. L'idée de départ est de coller le plus possibles aux besoins de l'enseignement secondaire de mathématiques.
+Les macros du fichier \verb+repere.mp+ ont pour but de simplifier la création de figures dans un repère du plan avec \MP{}. L'idée de départ est de coller le plus possible aux besoins de l'enseignement secondaire de mathématiques.
 
 Il est possible d'utiliser \verb+repere+ et \verb+geometriesyr+ (les macros de Christophe \textsc{Poulain} pour la géométrie disponibles à l'adresse \url{http://melusine.eu.org/syracuse/poulecl/macros/}) dans une même figure comme le montre l'exemple page \pageref{exgeom}.
 
@@ -851,8 +851,65 @@
 fin;
 \end{exemple}
 
+\subsection{Interpolation}
 
+\MP{} propose les commandes suivantes (qui peuvent être combinées dans une même courbe) :
 
+\begin{description}
+\item[A-{}-B-{}-C-{}-] Ligne brisée passant par les points $A$, $B$, $C$...
+\item[A..B..C..] Courbe de Bézier passant par les points $A$, $B$, $C$...
+\end{description}
+
+\verb|repere.mp| propose aussi les  commandes suivantes :
+
+\begin{description}
+\item[lagrange(A,B,C,...)] Courbe passant par $A$, $B$, $C$... représentant le polynôme  de degré maximal $n-1$ tel que $P(x_A)=y_A$, $P(x_B)=y_B$...
+\item[lagrange(x1,y1,x2,y2,x3,y3...)]  Courbe passant par les points $(x_1;y_1)$, $(x_2;y_2)$, $(x_3;y_3)$... représentant le polynôme de degré maximal $n-1$ tel que $P(x_i)=y_i$.
+\end{description}
+
+\begin{exemple}[0.55]
+repere.orth(-1,10,7cm,-1,10);
+pair A[],B[];
+A[1]=(1,1);A[2]=(3,5);A[3]=(5,8);
+A[4]=(7,2);A[5]=(9,4);
+B[1]=(1,6);B[2]=(3,7);B[3]=(6,4);B[4]=(8,9);
+path L;L=lagrange(A[1],A[2],A[3],A[4],A[5]);
+path C;C=lagrange(1,6,3,7,6,4,8,9);
+draw quadrillage(1,1);
+draw axes(1,1);
+draw L epaisseur 1 couleur rouge; 
+draw C epaisseur 1 couleur bleu;
+for i=1 upto 5: nomme.llft(A[i]) couleur rouge;
+endfor
+for i=1 upto 4: nomme.llft(B[i]) couleur bleu;
+endfor
+fin;
+\end{exemple}
+
+
+\begin{description}
+\item[hermite((x1,y1,y'1),(x2,y2,y'2)...)] Courbe passant par les points $(x_1;y_1)$, $(x_2;y_2)$, $(x_3;y_3)$... représentant le polynôme de degré maximal $2n-1$ tel que $P(x_i)=y_i$ et $P'(x_i)=y'_i$.
+\item[hermite(A,y'A,B,y'B,C,y'C...)] Courbe passant par les points $A$, $B$, $C$... représentant le polynôme de degré maximal $2n-1$ tel que $P(x_A)=y_A$ et $P'(x_A)=y'_A$...
+\end{description}
+
+\begin{exemple}[0.55]
+repere.orth(-1,10,7cm,-1,10);
+draw quadrillage(1,1);
+draw axes(1,1);
+path H;H=hermite((1,2,0.5),(4,8,0),(8,2,2));
+draw H epaisseur 1 couleur bleu;
+draw tangente.double(H,1) couleur bleu;
+draw tangente.double(H,4) couleur bleu;
+draw tangente.double(H,8) couleur bleu;
+pair A,B,C; A:=(1,8);B:=(4,4);C:=(7,6);
+path I;I=hermite(A,-1,B,0.5,C,2);
+draw I epaisseur 1 couleur rouge;
+draw tangente.double(I,1) couleur rouge;
+draw tangente.double(I,4) couleur rouge;
+draw tangente.double(I,7) couleur rouge;
+fin;
+\end{exemple}
+
 \section{Suites}
 \begin{description}
 \item[suite(u,deb,fin)] figure formée des points $(i;u_i)$ pour $i$ variant entre \verb+deb+ et \verb+fin+.

Modified: trunk/Master/texmf-dist/metapost/repere/repere.mp
===================================================================
--- trunk/Master/texmf-dist/metapost/repere/repere.mp	2017-11-06 21:58:05 UTC (rev 45707)
+++ trunk/Master/texmf-dist/metapost/repere/repere.mp	2017-11-06 21:58:19 UTC (rev 45708)
@@ -2,7 +2,7 @@
 %%                        repere.mp                           %%
 %%   Macros pour la construction de figures dans un repère    %%
 %%                    o.peault at posteo.net                     %%
-%%                  Version 17.05 (Mai 2017)                  %%
+%%               Version 17.11 (Novembre 2017)                %%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
 % This work may be distributed and/or modified under the conditions of
@@ -1409,6 +1409,102 @@
   for i=1 upto 10: P[i]:=xpart (PP[i]); endfor
 enddef;
 
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%   INTERPOLATION   %%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%Novembre 2017
+vardef polynomelagrangept(text t)(expr x)=
+  0
+  for i=t:
+    + ypart i
+    for j=t:
+      if i<>j: *((x-xpart j)/(xpart i - xpart j)) fi
+    endfor
+  endfor
+enddef;
+
+%Novembre 2017
+vardef polynomelagrangeval(text t)(expr x)=
+save tmp,k,j,ab,or;
+pair tmp[];numeric k,j,ab,or;
+k:=0;j:=0;
+for i=t:
+  if j=0: ab:=i else: or:=i; k:=k+1; tmp[k]=(ab,or) fi;
+  j:=1-j;
+endfor
+polynomelagrangept(tmp[1] for ii=2 upto k: ,tmp[ii] endfor)(x)
+enddef;
+
+%Novembre 2017
+vardef polynomelagrange(text t)(expr x)=
+  for i=t:
+    if pair i: polynomelagrangept(t)(x)
+    else: polynomelagrangeval(t)(x)
+    fi
+    exitif true
+  endfor
+enddef;
+
+
+%Novembre 2017
+vardef lagrange(text t)=
+  vardef _tmp_poly_lag(expr x)= polynomelagrange(t)(x) enddef;
+  courbefonc(_tmp_poly_lag)()
+enddef;
+
+
+%Novembre 2017
+vardef polynomehermitetriplet(text t)(expr x)=
+%t=(x1,y1,z1),(x2,y2,z2)...
+%H(X)=Σqi(X)Pi(X) avec qi(X)=Li(X)² et Pi(X)=yi+(X-xi)(zi-qi'(xi)yi)
+%qi'(xi)=Σ2/(xi-xj)
+0
+for i=t:
+   +
+   (greenpart i+(x-redpart i)*(bluepart i - 
+   (0
+   for j=t:   %qi'(xi)
+     if i<>j: + 2/(redpart i - redpart j) fi
+   endfor
+   )
+   *greenpart i))
+   for j=t:  % qi(X)
+     if i<>j: *(((x-redpart j)/(redpart i - redpart j))**2) fi
+   endfor
+endfor
+enddef;
+
+%Novembre 2017
+vardef polynomehermiteptder(text t)(expr x)=
+save tmp,k,j,re,gr,bl;
+color tmp[];numeric k,j,re,gr,bl;
+k:=0;j:=0;
+for i=t:
+   if pair i: re:= xpart i; gr:= ypart i else: bl:=i; k:=k+1; tmp[k]=(re,gr,bl) fi;
+endfor
+polynomehermite(tmp[1] for ii=2 upto k: ,tmp[ii] endfor)(x)
+enddef;
+
+%Novembre 2017
+vardef polynomehermite(text t)(expr x)=
+  for i=t:
+    if color i: polynomehermitetriplet(t)(x)
+    else: polynomehermiteptder(t)(x)
+    fi
+    exitif true
+  endfor
+enddef;
+
+
+%Novembre 2017
+vardef hermite(text t)=
+  vardef _tmp_poly_her(expr x)= polynomehermite(t)(x) enddef;
+  courbefonc(_tmp_poly_her)()
+enddef;
+
+
+
+
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %%%%%%%%%%   TANGENTES   %%%%%%%%%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1864,7 +1960,7 @@
      _lab_[4]:="$Q_3$";
      _lab_[5]:="$X_{max}$";
    elseif n=1:
-     if t=0: for i=1 upto 5: _lab_[i]:=nullpicture; endfor
+     if t=0: for i=1 upto 5: _lab_[i]:=""; endfor
      else: 
        tmp:=floor(t);
        for i=1 upto 5:



More information about the tex-live-commits mailing list