diff options
Diffstat (limited to 'macros/luatex/latex/luacas/doc/reference/ref_calculus/ref_calculus_classes/ref_calculus_classes.tex')
-rw-r--r-- | macros/luatex/latex/luacas/doc/reference/ref_calculus/ref_calculus_classes/ref_calculus_classes.tex | 277 |
1 files changed, 277 insertions, 0 deletions
diff --git a/macros/luatex/latex/luacas/doc/reference/ref_calculus/ref_calculus_classes/ref_calculus_classes.tex b/macros/luatex/latex/luacas/doc/reference/ref_calculus/ref_calculus_classes/ref_calculus_classes.tex new file mode 100644 index 0000000000..b08a190625 --- /dev/null +++ b/macros/luatex/latex/luacas/doc/reference/ref_calculus/ref_calculus_classes/ref_calculus_classes.tex @@ -0,0 +1,277 @@ +\documentclass{article} + +\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,documentation} +\usepackage{microtype} +\usepackage{makeidx} +\usepackage{fontawesome} + +\usepackage[ +backend=biber, +style=numeric, +]{biblatex} +\addbibresource{sources.bib} + +\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} + +\definecolor{codegreen}{HTML}{49BE25} + +\newtcolorbox{codebox}[1][sidebyside]{ + enhanced,skin=bicolor, + #1, + arc=1pt, + colframe=brown, + colback=brown!15,colbacklower=white, + boxrule=1pt, + notitle +} + +\newtcolorbox{codehead}[1][]{ + enhanced, + frame hidden, + colback=rosegray!15, + boxrule=0mm, + leftrule=5mm, + rightrule=5mm, + boxsep=0mm, + arc=0mm, + outer arc=0mm, + left=3mm, + right=3mm, + top=1mm, + bottom=1mm, + toptitle=1mm, + bottomtitle=1mm, + oversize, + #1 +} + +\usepackage{varwidth} + +\newtcolorbox{newcodehead}[2][]{ + enhanced, + frame hidden, + colback=rosegray!15, + boxrule=0mm, + leftrule=5mm, + rightrule=5mm, + boxsep=0mm, + arc=0mm, + outer arc=0mm, + left=3mm, + right=3mm, + top=1mm, + bottom=1mm, + toptitle=1mm, + bottomtitle=1mm, + oversize, + #1, + fonttitle=\bfseries\ttfamily\footnotesize, + coltitle=rosegray, + attach boxed title to top text right, + boxed title style={frame hidden,size=small,bottom=-1mm, + interior style={fill=none, + top color=white, + bottom color=white}}, + title={#2} +} + +\makeindex + +\newcommand{\coderef}[2]{% +\begin{codehead}[sidebyside,segmentation hidden]% + \mintinline{lua}{#1}% + \tcblower% + \begin{flushright}% + \mintinline{lua}{#2}% + \end{flushright}% +\end{codehead}% +} + +\newcommand{\newcoderef}[3]{% +\begin{newcodehead}[sidebyside,segmentation hidden]{#3}% + \mintinline{lua}{#1}% + \tcblower% + \begin{flushright}% + \mintinline{lua}{#2}% + \end{flushright}% +\end{newcodehead}% +} + +\begin{document} +\setdescription{style=multiline, + topsep=10pt, + leftmargin=5cm, + } + +\subsection{Calculus Classes} + +There are only a few classes (currently) in the calculus module all of which are concrete: +\begin{itemize} + \item {\ttfamily DerivativeExpression} + \item {\ttfamily DiffExpression} + \item {\ttfamily IntegralExpression} +\end{itemize} + +\newcoderef{function DerivativeExpression:new(expression, symbol)}{return DerivativeExpression}{expression Expression, symbol SymbolExpression} +\addcontentsline{toc}{subsubsection}{\ttfamily DerivativeExpression} + +Creates a new single-variable derivative operation of the given \texttt{expression} with respect to the given \texttt{symbol}. If \texttt{symbol} is omitted, then \texttt{symbol} takes the default value of \mintinline{lua}{SymbolExpression("x")}. For example: + +\begin{codebox} + \begin{minted}[fontsize=\small]{lua} +vars('x') +f = DerivativeExpression(sin(x)/x) +tex.print('\\[', f:tolatex(), '\\]') +\end{minted} +\tcblower +\luaexec{ + vars('x') + f = DerivativeExpression(sin(x)/x) + tex.print('\\[', f:tolatex(), '\\]') +} +\end{codebox} + +\subsubsection*{Parsing} + +The function \mintinline{lua}{DD()} shortcuts \mintinline{lua}{DerivativeExpression()}. + +\begin{codebox} + \begin{minted}[fontsize=\small]{latex} +\begin{CAS} + vars('x') + f = DD(sin(x)/x) +\end{CAS} +\[ \print{f} \] +\end{CAS} +\end{minted} +\tcblower +\begin{CAS} + vars('x') + f = DD(sin(x)/x) +\end{CAS} +\[ \print{f} \] +\end{codebox} +Alternatively, one could also use \mintinline{lua}{diff()} (see below). + +\newcoderef{function DiffExpression:new(expression, symbols)}{return DiffExpression}{expression Expression, symbols table<number, Symbol>} +\addcontentsline{toc}{subsubsection}{\ttfamily DiffExpression} + +Creates a new multi-variable higher-order derivative operation of the given \texttt{expression} with respect to the given \texttt{symbols}. As opposed to \texttt{DerivativeExpression}, the argument \texttt{symbols} cannot be omitted. For example: + +\begin{codebox} + \begin{minted}[fontsize=\small]{lua} +vars('x','y') +f = DiffExpression(sin(x*y)/y,{x,y}) +tex.print('\\[', f:tolatex(), '\\]') +\end{minted} +\tcblower +\luaexec{ + vars('x','y') + f = DiffExpression(sin(x*y)/y,{x,y}) + tex.print('\\[', f:tolatex(), '\\]') +} +\end{codebox} +We can also use \texttt{DiffExpression} to create higher-order single variable derivatives: + +\begin{codebox} + \begin{minted}[fontsize=\small]{lua} +vars('x') +f = DiffExpression(sin(x)/x,{x,x}) +tex.print('\\[', f:tolatex(), '\\]') +\end{minted} +\tcblower +\luaexec{ + vars('x') + f = DiffExpression(sin(x)/x,{x,x}) + tex.print('\\[', f:tolatex(), '\\]') +} +\end{codebox} + +\subsubsection*{Parsing} + +The function \mintinline{lua}{diff()} shortcuts \mintinline{lua}{DiffExpression()}. The arguments of \mintinline{lua}{diff()} can also be given in a more user-friendly, compact form. For example: + +\begin{codebox}[] + \begin{minted}[fontsize=\small]{latex} +\begin{CAS} + vars('x','y') + f = diff(sin(x)/x, {x,2}) + g = diff(sin(x*y)/y,x,{y,2}) +\end{CAS} +\[ \print{f} = \print*{f} \qquad \print{g} = \print*{g} \] +\end{minted} +\tcblower +\begin{CAS} + vars('x','y') + f = diff(sin(x)/x, {x,2}) + g = diff(sin(x*y)/y,x,{y,2}) +\end{CAS} +\[ \print{f} = \print*{f} \qquad \print{g} = \print*{g} \] +\end{codebox} + +\newcoderef{function IntegralExpression:new(expression,symbol,lower,upper)}{return IntegralExpression}{expression Expression, symbol SymbolExpression, lower Expression, upper Expression} +\addcontentsline{toc}{subsubsection}{\ttfamily IntegralExpression} + +Creates a new integral operation of the given \texttt{expression} with respect to the given \texttt{symbol} over the given \texttt{lower} and \texttt{upper} bounds. If \texttt{lower} and \texttt{upper} are omitted, then an \emph{indefinite} \texttt{IntegralExpression} is constructed. For example: + +\begin{codebox} + \begin{minted}[fontsize=\small,breaklines]{lua} +vars('x') +f = IntegralExpression(sin(sqrt(x)), x) +g = IntegralExpression(sin(sqrt(x)), x, Integer.zero(), pi) +tex.print('\\[', f:tolatex(), '\\]') +tex.print('\\[', g:tolatex(), '\\]') +\end{minted} +\tcblower +\luaexec{ + vars('x') + f = IntegralExpression(sin(sqrt(x)),x) + g = IntegralExpression(sin(sqrt(x)),x,Integer.zero(),pi) + tex.print('\\[', f:tolatex(), '\\]') + tex.print('\\[', g:tolatex(), '\\]') +} +\end{codebox} + +\subsubsection*{Parsing} + +The function \mintinline{lua}{int()} shortcuts \mintinline{lua}{IntegralExpression()}. For example: +\begin{codebox} + \begin{minted}[fontsize=\small]{latex} +\begin{CAS} + g = int(sin(sqrt(x)),x,0,pi) +\end{CAS} +\[ \print{g} = \print*{g} \] +\end{minted} +\tcblower +\begin{CAS} + g = int(sin(sqrt(x)),x,0,pi) +\end{CAS} +\[ \print{g} = \print*{g} \] +\end{codebox} + +\end{document}
\ No newline at end of file |