From 5949a9aee0bb29a10f1ec50a6cb8dd50a1c7de81 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 6 Nov 2017 21:58:19 +0000 Subject: repere (6nov17) git-svn-id: svn://tug.org/texlive/trunk@45708 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/metapost/repere/README.md | 2 +- .../texmf-dist/doc/metapost/repere/repere-doc.pdf | Bin 665712 -> 428827 bytes .../texmf-dist/doc/metapost/repere/repere-doc.tex | 59 +++++++++++- Master/texmf-dist/metapost/repere/repere.mp | 100 ++++++++++++++++++++- 4 files changed, 157 insertions(+), 4 deletions(-) (limited to 'Master') diff --git a/Master/texmf-dist/doc/metapost/repere/README.md b/Master/texmf-dist/doc/metapost/repere/README.md index 8eb44b1f8de..4af59b21bfb 100644 --- a/Master/texmf-dist/doc/metapost/repere/README.md +++ b/Master/texmf-dist/doc/metapost/repere/README.md @@ -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 diff --git a/Master/texmf-dist/doc/metapost/repere/repere-doc.pdf b/Master/texmf-dist/doc/metapost/repere/repere-doc.pdf index 66fa7f67149..bd1df01be57 100644 Binary files a/Master/texmf-dist/doc/metapost/repere/repere-doc.pdf and b/Master/texmf-dist/doc/metapost/repere/repere-doc.pdf differ diff --git a/Master/texmf-dist/doc/metapost/repere/repere-doc.tex b/Master/texmf-dist/doc/metapost/repere/repere-doc.tex index c4599fd5912..84248a2c5d5 100644 --- a/Master/texmf-dist/doc/metapost/repere/repere-doc.tex +++ b/Master/texmf-dist/doc/metapost/repere/repere-doc.tex @@ -245,7 +245,7 @@ input repere; \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,7 +851,64 @@ draw tangente(p,2.5); 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} diff --git a/Master/texmf-dist/metapost/repere/repere.mp b/Master/texmf-dist/metapost/repere/repere.mp index a9094e3e10c..f12b866c56e 100644 --- a/Master/texmf-dist/metapost/repere/repere.mp +++ b/Master/texmf-dist/metapost/repere/repere.mp @@ -2,7 +2,7 @@ %% repere.mp %% %% Macros pour la construction de figures dans un repère %% %% o.peault@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 @@ vardef antecedents(suffix P)(expr y,p)= 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 @@ vardef projboitemoustache@#(text t)= _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: -- cgit v1.2.3