summaryrefslogtreecommitdiff
path: root/macros/luatex/latex/luacas/doc/tutorial/tut.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/luatex/latex/luacas/doc/tutorial/tut.tex')
-rw-r--r--macros/luatex/latex/luacas/doc/tutorial/tut.tex217
1 files changed, 217 insertions, 0 deletions
diff --git a/macros/luatex/latex/luacas/doc/tutorial/tut.tex b/macros/luatex/latex/luacas/doc/tutorial/tut.tex
new file mode 100644
index 0000000000..3e12ec919d
--- /dev/null
+++ b/macros/luatex/latex/luacas/doc/tutorial/tut.tex
@@ -0,0 +1,217 @@
+\documentclass{article}
+
+\usepackage{standalone}
+\usepackage{luacas}
+\usepackage{amsmath}
+\usepackage{amssymb}
+
+\usepackage[margin=1in]{geometry}
+\usepackage[shortlabels]{enumitem}
+
+\usepackage{pgfplots}
+\pgfplotsset{compat=1.18}
+\usetikzlibrary{positioning,calc}
+\usepackage{forest}
+\usepackage{minted}
+\usemintedstyle{pastie}
+\usepackage[hidelinks]{hyperref}
+\usepackage{parskip}
+\usepackage{multicol}
+\usepackage[most]{tcolorbox}
+ \tcbuselibrary{xparse}
+\usepackage{microtype}
+
+\usepackage[
+backend=biber,
+style=numeric,
+]{biblatex}
+\addbibresource{sources.bib}
+
+\newtcolorbox{codebox}[1][sidebyside]{
+ enhanced,skin=bicolor,
+ #1,
+ arc=1pt,
+ colframe=brown,
+ colback=brown!15,colbacklower=white,
+ boxrule=1pt,
+ notitle
+}
+
+\definecolor{rose}{RGB}{128,0,0}
+\definecolor{roseyellow}{RGB}{222,205,99}
+\definecolor{roseblue}{RGB}{167,188,214}
+\definecolor{rosenavy}{RGB}{79,117,139}
+\definecolor{roseorange}{RGB}{232,119,34}
+\definecolor{rosegreen}{RGB}{61,68,30}
+\definecolor{rosewhite}{RGB}{223,209,167}
+\definecolor{rosebrown}{RGB}{108,87,27}
+\definecolor{rosegray}{RGB}{84,88,90}
+
+\begin{document}
+
+\section{Tutorials}
+
+Taking a cue from the phenomenal TikZ documentation, we introduce basic usage of the \texttt{luacas} package through a few informal tutorials. In the subsections that follow, we'll walk through how each of the outputs below are made using \texttt{luacas}. {\bf Crucially}, none of the computations below are ``hardcoded''; all computations are performed and printed using \texttt{luacas} to maximize portability and code reuse.
+
+\begin{tcolorbox}[colback=rose!10,
+ colframe=rose,
+ arc=1pt,
+ frame hidden]
+{\bf Tutorial 1:} {\itshape A limit definition of the derivative for Alice.}\vskip0.2cm
+\small
+\begin{CAS}
+ vars('x','h')
+ f = 2*x^3-x
+\end{CAS}
+Let $f(x) = \print{f}$. We wish to compute the derivative of $f(x)$ at $x$ using the limit definition of the derivative. Toward that end, we start with the appropriate difference quotient:
+\begin{CAS}
+ subs = {[x] = x+h}
+ q = (f:substitute(subs) - f)/h
+\end{CAS}
+\[ \begin{aligned}
+ \print{q} &=
+ \begin{CAS}
+ q = expand(q)
+ \end{CAS}
+ \print{q}& &\text{expand/simplify} \\
+ \begin{CAS}
+ subs = {[h]=0}
+ q = q:substitute(subs)
+ \end{CAS}
+ &\xrightarrow{h\to 0} \print{q}& &\text{take limit} \\
+ &=
+ \begin{CAS}
+ q = simplify(q)
+ \end{CAS}
+ \print{q}& &\text{simplify.}
+\end{aligned} \]
+%So $\print{diff(f,x)} = \print*{diff(f,x)}$.
+\end{tcolorbox}
+\vfill
+
+\begin{tcolorbox}[colback=rosenavy!10,
+ colframe=rosenavy,
+ arc=1pt,
+ frame hidden]
+ \small
+ {\bf Tutorial 2:} {\itshape A local max/min diagram for Bob}.
+ \vskip 0.2cm
+ Consider the function $f(x)$ defined by:
+ \begin{CAS}
+ vars('x')
+ f = x^2+2*x-2
+ g = x^2-1
+ subs = {[x] = f}
+ dh = expand(substitute(subs,g))
+ h = simplify(int(dh,x)+10)
+ \end{CAS}
+ $\displaystyle f(x) = \print{h}$.
+\begin{multicols}{2}
+ Note that:
+ \[ f'(x) = \print{dh}.\]
+ The roots to $f'(x)=0$ equation are:
+ \begin{CAS}
+ r = roots(dh)
+ \end{CAS}
+ \[ \print{r[1]}, \quad \print{r[2]}, \quad \print{r[3]}, \quad \print{r[4]}.\]
+ Recall: $f'(x_0)$ measures the slope of the tangent line to $y=f(x)$ at $x=x_0$. The values $r$ where $f'(r)=0$ correspond to places where the slope of the tangent line to $y=f(x)$ is horizontal (see the illustration). This gives us a method for identifying locations where the graph $y=f(x)$ attains a peak (local maximum) or a valley (local minimum).
+ \directlua{
+ v = {}
+ for i=1,4 do
+ table.insert(v,simplify(substitute({[x]=r[i]},h)))
+ end
+ }
+ \columnbreak
+ \store{h}\store{dh}
+ \begin{tikzpicture}[scale=0.95]
+ \begin{axis}[legend pos = north west]
+ \addplot
+ [domain=-3.5:1.5,samples=100] {\h};
+ \addlegendentry{$f$};
+ \addplot[densely dashed]
+ [domain=-3.25:1.25,samples=100] {\dh};
+ \addlegendentry{$df/dx$};
+ \addplot[gray,dashed,thick]
+ [domain=-3.5:1.5] {0};
+ \luaexec{for i=1,4 do
+ tex.print("\\draw[fill=purple,purple]",
+ "(axis cs:{", tostring(r[i]) ,"},0) circle (1.5pt)",
+ "(axis cs:{", tostring(r[i]) ,"},{", tostring(v[i]), "}) circle (1.5pt)",
+ "(axis cs:{", tostring(r[i]) ,"},{", tostring(v[i]), "}) edge[dashed] (axis cs:{", tostring(r[i]) ,"},0);")
+ end}
+ \end{axis}
+ \end{tikzpicture}
+\end{multicols}
+\end{tcolorbox}
+
+\vfill
+
+\begin{tcolorbox}[colback=roseorange!10,
+ colframe=roseorange,
+ arc=1pt,
+ frame hidden]
+ \small
+{\bf Tutorial 3:} {\itshape A limit definition of the derivative for Charlie.}\vskip 0.2cm
+
+\begin{CAS}
+ vars('x','h')
+ f = x/(x^2+1)
+\end{CAS}
+Let $f(x) = \print{f}$. We wish to compute the derivative of $f(x)$ at $x$ using the limit definition of the derivative. Toward that end, we start with the appropriate difference quotient:
+\begin{CAS}
+ subs = {[x] = x+h}
+ q = (f:substitute(subs) - f)/h
+\end{CAS}
+\directlua{
+ function Expression:mycombine()
+ local a = self.expressions[1].expressions[1].expressions[1]
+ local b = self.expressions[1].expressions[1].expressions[2]
+ local c = self.expressions[1].expressions[2].expressions[1]
+ local d = self.expressions[1].expressions[2].expressions[2]
+ local numerator = a*d-b*c
+ local denominator = self.expressions[2]*b*d
+ return numerator/denominator
+ end
+ function Expression:mysimplify()
+ local a = self.expressions[1]
+ local b = self.expressions[2]
+ a = simplify(a)
+ return a/b
+ end
+ function Expression:myfactor()
+ local a = self.expressions[1]
+ local b = self.expressions[2]
+ a = factor(a)
+ return a/b
+ end
+}
+\[ \begin{aligned}
+ \print{q} &=
+ \begin{CAS}
+ q = q:mycombine()
+ \end{CAS}
+ \print{q}& &\text{get a common denominator} \\
+ &=
+ \begin{CAS}
+ q = q:mysimplify()
+ \end{CAS}
+ \print{q}& &\text{simplify the numerator} \\
+ &=
+ \begin{CAS}
+ q = q:myfactor()
+ \end{CAS}
+ \print{q} & &\text{factor numerator} \\
+ &=
+ \begin{CAS}
+ q = simplify(q)
+ \end{CAS}
+ \print{q}& &\text{cancel the $h$s} \\
+ &\xrightarrow{h\to 0}
+ \begin{CAS}
+ subs = {[h] = 0}
+ q = substitute(subs,q):autosimplify()
+ \end{CAS}
+ \print{q}& &\text{take limit.}
+\end{aligned} \]
+\end{tcolorbox}
+\end{document} \ No newline at end of file