diff options
author | Karl Berry <karl@freefriends.org> | 2023-05-12 20:35:18 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2023-05-12 20:35:18 +0000 |
commit | a38215d9fd5a0227acaf76c58e73c7d4f4a35280 (patch) | |
tree | 3aabfa36bcc09443b9942f27d63061a1091bc03b /Master/texmf-dist/doc | |
parent | c1ef4345c6011a866da674830ff5b43957ce9fb0 (diff) |
sympycalc (12may23)
git-svn-id: svn://tug.org/texlive/trunk@67087 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc')
-rw-r--r-- | Master/texmf-dist/doc/lualatex/sympycalc/README.md | 5 | ||||
-rw-r--r-- | Master/texmf-dist/doc/lualatex/sympycalc/SympyCalc-doc.pdf | bin | 130436 -> 145115 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/lualatex/sympycalc/SympyCalc-doc.tex | 164 |
3 files changed, 135 insertions, 34 deletions
diff --git a/Master/texmf-dist/doc/lualatex/sympycalc/README.md b/Master/texmf-dist/doc/lualatex/sympycalc/README.md index 7b34198db4c..aa918b9a9a4 100644 --- a/Master/texmf-dist/doc/lualatex/sympycalc/README.md +++ b/Master/texmf-dist/doc/lualatex/sympycalc/README.md @@ -1,7 +1,8 @@ -SympyCalc is a package to work with Sympy with TeX printing. +SympyCalc is a package to work with Sympy (Python) with TeX printing. ----------------------------------------------------------------------------- SympyCalc un package pour travailler avec le module Sympy et sa sortie LaTeX. ----------------------------------------------------------------------------- Author : Cédric Pierquet email : cpierquet@outlook.fr -Licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt
\ No newline at end of file +Licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt +Note : SymPy is a Python library for symbolic math (sympy.org).
\ No newline at end of file diff --git a/Master/texmf-dist/doc/lualatex/sympycalc/SympyCalc-doc.pdf b/Master/texmf-dist/doc/lualatex/sympycalc/SympyCalc-doc.pdf Binary files differindex 20964a4b68f..f2e9838bee0 100644 --- a/Master/texmf-dist/doc/lualatex/sympycalc/SympyCalc-doc.pdf +++ b/Master/texmf-dist/doc/lualatex/sympycalc/SympyCalc-doc.pdf diff --git a/Master/texmf-dist/doc/lualatex/sympycalc/SympyCalc-doc.tex b/Master/texmf-dist/doc/lualatex/sympycalc/SympyCalc-doc.tex index b294eb56f6b..418bccc6526 100644 --- a/Master/texmf-dist/doc/lualatex/sympycalc/SympyCalc-doc.tex +++ b/Master/texmf-dist/doc/lualatex/sympycalc/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. |