summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/tkz/tkz-fct/doc/latex/TKZdoc-fct-tangent.tex
blob: 683ee7a5bd1c6a01df22119537eab73e91fb6f13 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
\section{Macros pour tracer des tangentes }

Si une seule fonction est utilisée, elle est stockée avec comme nom
\tkzcname{tkzFcta}, si une deuxième fonction est utilisée, elle sera stockée avec comme nom \tkzcname{tkzFctb}, et ainsi de suite\ldots Si plusieurs fonctions sont présentent dans un même environnement alors l'option \tkzname{with} permet de choisir celle qui sera mise à contribution.

\tkzHandBomb Il faut bien évidemment, avoir initialisé l'environnement à l'aide \tkzcname{tkzInit}, avant d'appeler \tkzcname{tkzFct} et \tkzcname{tkzDrawTangentLine}. Pour la longueur des vecteurs représentants les demi-tangentes, il faut attribuer une valeur aux coefficients \tkzname{kl} et \tkzname{kr}. $kl=0$ ou $kr=0$ annule le dessin de la demi-tangente correspondante (l=left) et (r=right). Si \tkzname{xstep=1} et \tkzname{ystep=1} alors si la pente est égale à 1, la demi-tangente a pour mesure $\sqrt{2}$.
Dans les autres cas si AT est la longueur de la demi-tangente et si $p$ est la pente alors $\vec{AT}$ a pour coordonnées (\tkzname{kl},\tkzname{kl*p}.) 


\subsection{Représentation d'une tangente \tkzcname{tkzDrawTangentLine}}
\hypertarget{tdtl}{} 
\begin{NewMacroBox}{tkzDrawTangentLine}{\oarg{local options}\parg{a}} 
\emph{On l'emploie soit juste après l'utilisation de \tkzcname{tkzFct}, sinon il faut donner la référence de la fonction à l'aide de l'option \tkzname{with}.}

\medskip
\begin{tabular}{lll}
 \toprule
 options             & exemple & explication    \\ 
 \midrule
 \TAline{a}{\tkzcname{tkzDrawTangentLine(0)}}{tangente au point d'abscisse $0$} 
 \bottomrule
\end{tabular}

Les options sont celles de \TIKZ comme \tkzname{color} ou \tkzname{style} plus les options suivantes

\begin{tabular}{lll}
\toprule
options             & défaut & définition                         \\ 
\midrule
\TOline{draw}{false}{booléen si true alors le point de contact est tracé} 
\TOline{with}{a}{permet de choisir une fonction} 
\TOline{kr}{1}{coefficient pour la longueur de la demi-tangente à droite}
\TOline{kl} {1}{coefficient pour la longueur de la demi-tangente à gauche}
\end{tabular}
\end{NewMacroBox}
%<--------------------------------------------------------------------------->
\subsection{Tangente avec \tkzname{xstep} et \tkzname{ystep} différents de 1}

\begin{tikzpicture}[xscale=1.5]
 \tikzset{tan style/.style={-}}
 \tkzInit[xmin=0,xmax=800,xstep=100,ymin=0,ymax=1800,ystep=400]
 \tkzGrid[color=brown,sub,subxstep=50,subystep=200](0,0)(800,1800)
 \tkzAxeXY
 \tkzFct[color=red,samples=100,domain = 0:800]%
    {(1./90000)*\x*\x*\x-(1./100)*\x*\x+(113./36)*\x}
 \tkzDrawTangentLine[draw,color=blue,kr=300,kl=450](450)
  \tkzText[draw,color = black,fill = brown!50,opacity  = 0.8](300,1200)%
 {$f(x)=\dfrac{1}{90000}x^3 -\dfrac{1}{{100}}x^2 +\dfrac{113}{36}x$}
 \end{tikzpicture}

Il faut remarquer qu'il n'est point nécessaire  de faire des calculs. Il suffit d'utiliser les valeurs qui correspondent aux graduations.

On peut changer le style des tangentes avec,  par exemple,

\tkzcname{tikzset\{tan style/.style=\{-\}\}}  par défaut  on a :

\tkzcname{tikzset\{tan style/.style=\{->,>=latex\}\}}    

\begin{tkzexample}[code only]  
\begin{tikzpicture}[xscale=1.5]
 \tikzset{tan style/.style={-}} 
 \tkzInit[xmin=0,xmax=800,xstep=100,
          ymin=0,ymax=1800,ystep=400]
 \tkzGrid[color=brown,sub,subxstep=50,subystep=200](0,0)(800,1800)
 \tkzAxeXY
 \tkzFct[color=red,samples=100,domain = 0:800]%
    {(1./90000)*\x*\x*\x-(1./100)*\x*\x+(113./36)*\x}
 \tkzDrawTangentLine[color=blue,kr=300,kl=450,coord](450)
 \tkzText[draw, color    = black,%
           fill     = brown!50, opacity  = 0.8](300,1200)%
 {$f(x)=\dfrac{1}{90000}x^3 -\dfrac{1}{{100}}x^2 +\dfrac{113}{36}x$}
 \end{tikzpicture}
 \end{tkzexample}
%<--------------------------------------------------------------------------->     
\subsection{Les options \tkzname{kl}, \tkzname{kr} et l'option \tkzname{draw}}
Si l'un des deux nombres \tkzname{kl} ou \tkzname{kr} est nul alors seulement une demi-tangente est tracée sinon ces nombres représentent un pourcentage de la longueur initiale de la tangente. L'option \tkzname{draw} permet de tracer le point de contact.

\begin{tkzexample}[]
  \begin{tikzpicture}[scale=1.5]
   \tkzInit[xmin=-3,xmax=4,ymin=-4,ymax=2]
   \tkzGrid   \tkzDrawXY \tkzClip
   \tkzFct[domain = -2.15:3.2]{(-x*x)+2*x}
   \tkzDefPointByFct[draw](2)
   \tkzDrawTangentLine[kl=0,draw](-1) 
   \tkzDrawTangentLine[draw](1) 
   \tkzDrawTangentLine[kr=0,draw](3)  
   \tkzRep
 \end{tikzpicture} 
\end{tkzexample}

%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––>
\subsection{Tangente et l'option \tkzname{with}}
Soit on place la macro  \tkzcname{tkzDrawTangentLine}    après la ligne
 qui définit la première fonction $(a)$, soit  on trace une autre fonction avant, et dans ce cas, il est nécessaire de préciser quelle fonction sera utilisée. pour se faire, on utilise l'option \tkzname{with}.

\begin{tkzexample}[]  
\begin{tikzpicture}[scale=4]
 \tkzInit[xmax=3,ymax=2]
 \tkzAxeXY 
 \tkzGrid(0,0)(3,2)
 \tkzFct[color   = red, domain = 1/3:3]{0.125*(3*x-1)+0.375*(3*x-1)/(x*x)}
 \tkzFct[color   = blue, domain = 1/3:3]{0.125*(3*x-1)}
 \tkzDrawTangentLine[with=a,
                     color=blue](1)
 \tkzText[draw,
          color= red,
          fill=brown!50](1,1.5)%
          {$f(x)=\frac{1}{8}(3x-1)+\frac{3}{8}\left(\frac{3x-1}{x^2}\right)$}
 \tkzText[draw,
          color= green!50!black,
          fill=brown!50](2,0.3)%
          {$g(x)=\frac{1}{8}(3x-1)$}
\end{tikzpicture}
\end{tkzexample}
%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––>
\subsection{Quelques tangentes }

\begin{tkzexample}[]
\begin{tikzpicture}[scale=2]
  \tkzInit[xmin=-5,xmax=2,ymin=-1, ymax=3]
  \tkzDrawX
  \tkzDrawY
  \tkzText[draw,color = red,fill = orange!20]( 1.5,1.5){$y = xe^x$}
  \tkzFct[color = red, domain = -5:1]{x*exp(x)}%
  \tkzDrawTangentLine[color=blue,kr=2,kl=2](-2)
  \tkzDrawTangentLine[color=green,kr=2,kl=2](-1)
  \tkzDrawTangentLine[color=blue](0)
  \tkzDrawTangentLine[color=blue,kr=0](1)
\end{tikzpicture}
\end{tkzexample}
%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––>
\subsection{Demi-tangentes }
Il faut remarquer que les tangentes sont en réalité deux demi-tangentes ce qui permet d'obtenir simplement le résultat ci-dessous.

Poosible sont les écritures \tkzname{(((x+1)*x)*x)**0.5},   \tkzname{(x**3+x**2)**0.5} et \tkzname{(x*x*x+x*x)**(0.5)}.

Dans cet exemple, les deux demi-tangentes sont obtenues automatiquement :

\begin{tkzexample}[]
 \begin{tikzpicture}[scale=2.75]
     \tkzInit[xmin=-2,xmax=3,ymax=3]
     \tkzGrid[color=orange](-2,0)(3,3)
     \tkzAxeX
     \tkzAxeY
     \tkzFct[color = red ,domain = -1:2]{(((x+1)*x)*x)**0.5}        
     \tkzDrawTangentLine(0)
     \tkzText[draw,color = red,fill = orange!20](2,1){$f(x)=\sqrt{x^3+x^2}$}
 \end{tikzpicture}
\end{tkzexample}
%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––>
\subsection{Demi-tangentes Courbe de Lorentz }

Ici, on ne veut que les demi-tangentes comprises entre 0 et 1, pour cela il suffit dans un cas de donner la valeur 0 à \tkzname{kr} et dans l'autre à \tkzname{kl}.

\begin{center}
\begin{tkzexample}[vbox]
\begin{tikzpicture}[scale=1.25]
  \tkzInit[xmax=1,ymax=1,xstep=0.1,ystep=0.1]
  \tkzGrid(0,0)(1,1)
  \tkzAxeXY
  \tkzFct[color = red,thick, domain =0:1]{(exp(\x)-1)/(exp(1)-1)}
  \tkzSetUpPoint[size=4]
  \tkzDrawTangentLine[draw, kl = 0,  kr = 0.4](0)
  \tkzDrawTangentLine[draw, kl = 0.4,kr = 0  ](1)   
  \tkzText[draw,color = red,fill = orange!20](0.5,0.6)%
          {$f(x)=\dfrac{\text{e}^x-1}{\text{e}-1}$}
\end{tikzpicture}
\end{tkzexample}
\end{center}
%<--------------------------------------------------------------------------->
\subsection{Série de tangentes}


\begin{tkzexample}[vbox]  
\begin{tikzpicture}[scale=2]
  \tikzstyle{tan style}=[-]
  \tkzInit[xmin=-5,xmax=2,ymin=-1,ymax=3]
  \tkzDrawXY
  \tkzText[draw,color = red, fill = orange!20](1.5,1.5){$y = xe^x$}
  \tkzFct[line width = 0.01 pt,color = red, domain = -5:1]{x*exp(x)}
  \foreach \x in {-4,-3.8,...,0}{%
    \tkzDrawTangentLine[color=blue,line width=.4pt,kr=1,kl=0.5](\x)}
  \foreach \x in {0.6,0.8,1}{% 
     \tkzDrawTangentLine[color=blue,line width=.4pt, kr=0,kl=0.5](\x)} 
\end{tikzpicture}
\end{tkzexample}
%<--------------------------------------------------------------------------->
\subsection{Série de tangentes sans courbe}

Pour cela, il faut définir la dernière expression avec la syntaxe de \tkzname{fp.sty}.

Définition de \tkzcname{tkzFctLast}
\begin{tkzltxexample}[]
	 \global\edef\tkzFctLast{x*exp(x)} 
\end{tkzltxexample}
	    
\subsubsection{Utilisation de \tkzcname{tkzFctLast}} 
\begin{tkzexample}[vbox]
\begin{tikzpicture}[scale=2]
  \tikzstyle{tan style}=[-]
  \tkzInit[xmin=-5,xmax=2,ymin=-1,ymax=3]
  \tkzDrawXY
  \tkzText[draw,color = red, fill = orange!20](1.5,1.5){$y = xe^x$}
  \global\edef\tkzFctLast{x*exp(x)}% c'est la ligne importante 
  \foreach \v in {-4,-3.8,...,0}{%
    \tkzDrawTangentLine[color=blue,line width=.4pt,kl=1](\v)}
  \foreach \v in {0.6,0.8,1}{% 
    \tkzDrawTangentLine[color=blue,line width=.4pt,kr=0,kl=.75](\v)} 
\end{tikzpicture} 
\end{tkzexample}


\newpage
\subsection{Calcul de l'antécédent}
  
Un problème surgit si on emploie une expression contenant des parenthèses dans l'argument, ainsi \tkzname{(\{1/exp(1)\})} est correct  mais \tkzname{(1/exp(1))} donne une erreur. Il est aussi possible d'évaluer l'antécédent postérieurement comme cela~:
\subsubsection{Valeur numérique de l'antécédent}  
\begin{tkzltxexample}[]  \FPeval\vx{1/exp(1)}
\end{tkzltxexample} 

\subsubsection{utilisation de la valeur numérique} 
\begin{center}
\begin{tkzexample}[]  
\begin{tikzpicture}[scale=1]
  \tkzInit[xmax=1,xstep=0.1,ymin=0.5,ymax=1,ystep=0.1]
  \tkzGrid      \tkzAxeXY
  \tkzFct[domain = 0.00001:1]{(\x**\x)}
  \tkzDrawTangentLine[draw,color = red, kr = 0.2,kl = 0.2]({1/exp(1)}) 
\end{tikzpicture}
\end{tkzexample}
\end{center}



\endinput