summaryrefslogtreecommitdiff
path: root/macros/luatex/latex/sympycalc/doc/SympyCalc-doc.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/luatex/latex/sympycalc/doc/SympyCalc-doc.tex')
-rw-r--r--macros/luatex/latex/sympycalc/doc/SympyCalc-doc.tex164
1 files changed, 132 insertions, 32 deletions
diff --git a/macros/luatex/latex/sympycalc/doc/SympyCalc-doc.tex b/macros/luatex/latex/sympycalc/doc/SympyCalc-doc.tex
index b294eb56f6..418bccc652 100644
--- a/macros/luatex/latex/sympycalc/doc/SympyCalc-doc.tex
+++ b/macros/luatex/latex/sympycalc/doc/SympyCalc-doc.tex
@@ -3,8 +3,8 @@
% arara: lualatex: {shell: yes, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)')
\documentclass[french,a4paper,11pt]{article}
-\def\SCversion{0.1.0}
-\def\SCdate{5 mai 2023}
+\def\SCversion{0.1.1}
+\def\SCdate{8 mai 2023}
\usepackage[executable=python.exe]{pyluatex}
\usepackage[svgnames]{xcolor}
\usepackage{siunitx}
@@ -68,13 +68,13 @@
commentstyle={\itshape\color{violet}},
keywordstyle={\bfseries\color{DodgerBlue}},%
classoffset=0,%
- keywords={frac,dfrac,int,sqrt},%
+ keywords={frac,dfrac,int,sqrt,mathcal},%
keywordstyle={\bfseries\color{DodgerBlue}},%
classoffset=1,%
- morekeywords={sympycalc,dsympycalc,sympydev,dsympydev,sympyfact,dsympyfact,sympyderiv,dsympyderiv,sympyprim,dsympyprim,sympyintegr,dsympyintegr,sympylim,dsympylim,sympyfexpo,dsympyfexpo,sympyresol,dsympyresol,sympyresolC,dsympyresolC},%
+ morekeywords={sympycalc,dsympycalc,sympydev,dsympydev,sympyfact,dsympyfact,sympyderiv,dsympyderiv,sympyprim,dsympyprim,sympyintegr,dsympyintegr,sympylim,dsympylim,sympyfexpo,dsympyfexpo,sympyresol,dsympyresol,sympyresolC,dsympyresolC,sympynbderiv,dsympynbderiv,sympyimage,dsympyimage,pythonq},%
keywordstyle={\bfseries\color{purple}},%
classoffset=2,%
- morekeywords={solve},%
+ morekeywords={solve,radsimp,cancel},%
keywordstyle={\bfseries\color{ForestGreen}},%
classoffset=3,%
morekeywords={NoSimplif,Simplif},%
@@ -148,6 +148,18 @@
\end{tabular}
\end{center}
+\begin{center}
+ \begin{minipage}{0.5\linewidth}
+ \begin{tcolorbox}[colframe=DarkBlue!50,colback=DarkBlue!5]
+ \begin{center}
+ \textsf{SymPy} est un module \textsf{Python} qui permet de faire du calcul symbolique.
+
+ \texttt{\url{https://www.sympy.org/}}
+ \end{center}
+ \end{tcolorbox}
+ \end{minipage}
+\end{center}
+
\vspace{0.25cm}
{$\blacktriangleright$~~Compilation en \hologo{LuaLaTeX}, avec un accès \textsf{--shell-escape}, en \textit{partenariat} avec \textsf{pyluatex}.}
@@ -319,7 +331,7 @@ Autant que peut se faire, les commandes sont assez explicites sur leur fonctionn
\item \texttt{\textbackslash \textcolor{purple}{sympy...}} : commande qui simplifie (par défaut), avec règles typographiques \texttt{[fr]} \textsf{romain} ;
\item \texttt{\textbackslash \textcolor{purple}{dsympy...}} : commande qui simplifie (par défaut), avec règles typographiques \texttt{[fr]} \textsf{romain}, et affichage en \texttt{\textbackslash displaystyle} ;
\item \texttt{\textbackslash \textcolor{purple}{sympy...*}} : commande qui simplifie (par défaut), avec règles typographiques \texttt{[fr]} \textsf{italique} ;
- \item \texttt{\textbackslash \textcolor{purple}{dsympy...*}} : commande qui simplifie (par défaut), avec règles typographiques \texttt{[fr]} \textsf{romain}, et affichage en \texttt{\textbackslash displaystyle}.
+ \item \texttt{\textbackslash \textcolor{purple}{dsympy...*}} : commande qui simplifie (par défaut), avec règles typographiques \texttt{[fr]} \textsf{italique}, et affichage en \texttt{\textbackslash displaystyle}.
\end{itemize}
Dans certains cas la \textit{simplification} ne propose pas une sortie \textit{classique}, et il est possible d'empêcher la simplification grâce à l'argument optionnel \texttt{<\textcolor{OliveDrab}{NoSimplif}>}.
@@ -337,9 +349,11 @@ La variable est par défaut \texttt{x}, mais peut-être modifiée grâce à l'ar
\dsympycalc(*)<NoSimplif>{commande sympy}
%commandes spécifiques, sortie standard, détaillées plus loin
+\sympyimage(*)<NoSimplif>{fonction sympy}[variable]{point}
\sympydev(*)<NoSimplif>{expr sympy}[variable]
\sympyfact(*)<NoSimplif>{expr sympy}
\sympyderiv(*)<NoSimplif>{expr sympy}[variable]
+\sympynbderiv(*)<NoSimplif>{expr sympy}[variable]{point}[côté]
\sympyprim(*)<NoSimplif>{expr sympy}[variable]
\sympyintegr(*)<NoSimplif>{expr sympy}[variable]{borne inf}{borne sup}
\sympylim(*)<NoSimplif>{expr sympy}[variable]{point}[côté]
@@ -349,8 +363,10 @@ La variable est par défaut \texttt{x}, mais peut-être modifiée grâce à l'ar
%commandes spécifiques, sortie displaystyle, détaillées plus loin
\dsympydev(*)<NoSimplif>{expr sympy}[variable]
+\dsympyimage(*)<NoSimplif>{fonction sympy}[variable]{point}
\dsympyfact(*)<NoSimplif>{expr sympy}
\dsympyderiv(*)<NoSimplif>{expr sympy}[variable]
+\dsympynbderiv(*)<NoSimplif>{expr sympy}[variable]{point}[côté]
\dsympyprim(*)<NoSimplif>{expr sympy}[variable]
\dsympyintegr(*)<NoSimplif>{expr sympy}[variable]{borne inf}{borne sup}
\dsympylim(*)<NoSimplif>{expr sympy}[variable]{point}[côté]
@@ -371,8 +387,6 @@ L'\og infini \fg{} est disponible en \textsf{sympy}, grâce à \texttt{+oo} ou \
Un petit \textit{guide} pour \textsf{sympy} est disponible à : \url{https://hashdork.com/fr/sympy-library-guide/}.
\end{tipblock}
-\newpage
-
\section{Limitations}
\begin{warningblock}
@@ -460,6 +474,45 @@ $x_2 = \dsympycalc{solve(1/3*x**2+9*x+4,x)[1]}$
\section{Quelques commandes spécifiques}
+\subsection{Images}
+
+\begin{cautionblock}
+\cmaj{0.1.1} La commande pour calculer une image via \textsf{sympy} est \texttt{\textbackslash \textcolor{purple}{sympyimage}} ou \texttt{\textbackslash \textcolor{purple}{dsympyimage}}.
+
+Il vaut mieux vérifier si le résultat formaté est conforme aux attentes, et sinon utiliser la commande générique.
+\end{cautionblock}
+
+\begin{bloctext}[listing only]
+%commandes pour cacluler une image
+\sympyimage(*)<NoSimplif>{fonction sympy}[variable]{point}
+\dsympyimage(*)<NoSimplif>{fonction sympy}[variable]{point}
+\end{bloctext}
+
+\begin{tipblock}
+Concernant son fonctionnement :
+
+\begin{itemize}
+ \item la version \Cle{*} permet de ne pas formater le \texttt{e} et le \texttt{i} en \textsf{romain} ;
+ \item le premier argument, optionnel et pouvant valoir \texttt{<\textcolor{OliveDrab}{NoSimplif}>} permet d'\textit{annuler} la simplification (attention au comportement de la \textit{simplification} par \textsf{sympy}\ldots)
+ \item le deuxième argument, obligatoire et entre \texttt{\{...\}} est quant à lui la fonction, en langage \textsf{sympy} à passer en \textsf{python} ;
+ \item les derniers arguments, optionnel entre \texttt{[...]} et obligatoire et entre \texttt{\{...\}} correspondent à la variable et le point.
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{tipblock}
+
+\begin{bloctext}
+$f(x)=\dfrac{2+\e^x}{3+4\e^{2x}}$ avec $a=5$ : $f(5)=\dsympyimage{(2+exp(x))/(3+4*exp(2*x))}{5}$
+\end{bloctext}
+
+\begin{bloctext}
+$g(t)=\sqrt{1+\ln(t)}$ avec $a=13$ : $g(13)=\sympyimage{sqrt(1+log(t))}[t]{13}$
+\end{bloctext}
+
+\begin{bloctext}
+$h(x)=2x^2+2,5x+7$ en $a=\sqrt{2}$ :
+$h\left(\sqrt{2}\right)=\dsympyimage{2*x**2+5/2*x+7}{sqrt(2)}$
+\end{bloctext}
+
\subsection{Développement}
\begin{cautionblock}
@@ -599,10 +652,57 @@ Les solutions de $x^3-2,5x+16x=40$ sont $\mathcal{S}=\dsympyresolC{x**3-5/2*x**2
Les solutions de $10\,\e^{4x+5}=2$ sont $\mathcal{S}=\dsympyresol{10*exp(4*x+5)=2}$
\end{bloctext}
-\subsection{Dérivation}
+\subsection{Dérivation locale}
\begin{cautionblock}
-La commande pour dériver, grâce à \textsf{sympy} est \texttt{\textbackslash \textcolor{purple}{sympyderiv}} ou \texttt{\textbackslash \textcolor{purple}{dsympyderv}}.
+\cmaj{0.1.1} La commande pour dériver localement, grâce à \textsf{sympy} est \texttt{\textbackslash \textcolor{purple}{sympynbderiv}} ou \texttt{\textbackslash \textcolor{purple}{dsympynbderiv}}.
+
+Il vaut mieux vérifier si le résultat formaté est conforme aux attentes, et sinon utiliser la commande générique.
+\end{cautionblock}
+
+\begin{bloctext}[listing only]
+%commandes pour dériver localement
+\sympynbderiv(*)<NoSimplif>{expression sympy}[variable]{point}[côté]
+\dsympynbderiv(*)<NoSimplif>{expression sympy}[variable]{point}[côté]
+\end{bloctext}
+
+\begin{tipblock}
+Concernant son fonctionnement :
+
+\begin{itemize}
+ \item la version \Cle{*} permet de ne pas formater le \texttt{e} et le \texttt{i} en \textsf{romain} ;
+ \item le premier argument, optionnel et pouvant valoir \texttt{<\textcolor{OliveDrab}{NoSimplif}>} permet d'\textit{annuler} la simplification (attention au comportement de la \textit{simplification} par \textsf{sympy}\ldots)
+ \item le deuxième argument, obligatoire et entre \texttt{\{...\}} est quant à lui l'expression en langage \textsf{sympy} à passer en \textsf{python} ;
+ \item le troisième argument, optionnel et entre \texttt{[...]} est la variable ;
+ \item les derniers arguments, obligatoire et entre \texttt{\{...\}} et optionnel entre \texttt{[...]} correspondent à la valeur (et la position \texttt{[g]} ou \texttt{[d]}) en laquelle on souhaite travailler.
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{tipblock}
+
+\begin{bloctext}
+Si $f(x)=(x+3)\,\e^{2x}$, alors on peut montrer que $f'(2) = \sympynbderiv{(x+3)*exp(2*x)}{2}$
+\end{bloctext}
+
+\begin{bloctext}
+Le nombre dérivé de la fonction $x \mapsto \sqrt{x}$ en $a=2$ vaut
+$\lim\limits_{x \to 2} \frac{\sqrt{x}-\sqrt{2}}{x-2} = \sympynbderiv{sqrt(x)}{2}$.
+
+Le nombre dérivé de la fonction $x \mapsto \sqrt{x}$ en $a=2$ vaut
+$\lim\limits_{x \to 2} \dfrac{\sqrt{x}-\sqrt{2}}{x-2} = \dsympynbderiv{sqrt(x)}{2}$.
+\end{bloctext}
+
+\begin{bloctext}
+Le nombre dérivé de $\varphi(x) = 1+\dfrac{1}{(x+2)^2}$ en $a=-5$ vaut
+$\lim\limits_{x \to -3} \frac{\varphi(x)-\varphi(-5)}{x-(-5)} = \sympynbderiv{1+1/(x+2)**2}{-5}$.
+
+Le nombre dérivé de $\varphi(x) = 1+\dfrac{1}{(x+2)^2}$ en $a=-5$ vaut
+$\lim\limits_{x \to -3} \dfrac{\varphi(x)-\varphi(-5)}{x-(-5)} = \dsympynbderiv{1+1/(x+2)**2}{-5}$.
+\end{bloctext}
+
+\subsection{Dérivation globale}
+
+\begin{cautionblock}
+La commande pour dériver, grâce à \textsf{sympy} est \texttt{\textbackslash \textcolor{purple}{sympyderiv}} ou \texttt{\textbackslash \textcolor{purple}{dsympyderiv}}.
Il vaut mieux vérifier si le résultat formaté est conforme aux attentes, et sinon utiliser la commande générique.
\end{cautionblock}
@@ -771,43 +871,43 @@ On a $\dfrac{-\sqrt{2}}{1+\i} = \dsympyfexpo{(-sqrt(2))/(1+I)}$
\section{Évolutions}
\begin{tipblock}
-L'utilisateur du package pourra utiliser ses propres fonctions ou commandes \textsf{sympy}, qui pourront être déclarés grâce à l'environnement \texttt{python}.
+L'utilisateur du package pourra utiliser ses propres fonctions ou commandes \textsf{sympy}, qui pourront être déclarés grâce à l'environnement \texttt{pythonq}.
\end{tipblock}
\begin{bloctext}[listing only]
-\begin{python}
-def tangente(expr,var,a) :
- f = lambdify(x, expr)
- deriveef = diff(expr,x)
- derf = lambdify(x, deriveef)
- pente = simplify(derf(a))
- ordonnee = simplify(f(a))
- tgte = simplify(pente*(x-a) + ordonnee)
+\begin{pythonq}
+def tangente_exacte(expr,var,a) :
+ fdea = expr.subs(var,a)
+ fprimedea = limit((expr-fdea)/(var-a),var,a)
+ tgte = expand(fprimedea*(x-a) + fdea)
return tgte
-\end{python}
+\end{pythonq}
\end{bloctext}
-\begin{python}
-def tangente(expr,var,a) :
- f = lambdify(x, expr)
- deriveef = diff(expr,x)
- derf = lambdify(x, deriveef)
- pente = simplify(derf(a))
- ordonnee = simplify(f(a))
- tgte = simplify(pente*(x-a) + ordonnee)
+\begin{pythonq}
+def tangente_exacte(expr,var,a) :
+ fdea = expr.subs(var,a)
+ fprimedea = limit((expr-fdea)/(var-a),var,a)
+ tgte = expand(fprimedea*(x-a) + fdea)
return tgte
-
-\end{python}
+
+\end{pythonq}
\begin{bloctext}
-La tangente à la courbe de la fonction $f(x)=\e^{2x}+3$ en $a=1$ a pour équation (appochée) :
+La tangente à la courbe de la fonction $f(x)=\e^{2x}+3$ en $a=1$ a pour équation :\\
+$y = \sympycalc{tangente_exacte(exp(2*x)+3,x,1)}$.
+\end{bloctext}
-$y \approx \sympycalc{tangente(exp(2*x)+3,x,1)}$.
+\begin{bloctext}
+La tangente à la courbe de la fonction $g(t)=\ln(x+3)$ en $a=4$ a pour équation :\\
+$y = \dsympycalc{tangente_exacte(log(t+3),t,4)}$.
\end{bloctext}
\section{Historique}
+\verb|v0.1.1|~:~~~~Commandes pour les nombres dérivés + images.
+
\verb|v0.1.0|~:~~~~Version initiale.