\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{fontawesome5} \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 } \DeclareTotalTCBox{\lilcoderef}{O{} m m}{ enhanced, frame hidden, colback=rosegray!15, enhanced, nobeforeafter, tcbox raise base, boxrule=0mm, leftrule=5mm, rightrule=5mm, boxsep=0mm, arc=0mm, outer arc=0mm, left=1mm, right=1mm, top=1mm, bottom=1mm, oversize, #1 }{\mintinline{lua}{#2} \mintinline{lua}{#3}} \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}% } \usepackage{marginnote} \begin{document} \setdescription{style=multiline, topsep=10pt, leftmargin=6.5cm, } \subsection{Calculus Methods} \newcoderef{function IntegralExpression.table(integral)}{return Expression|nil}{integral IntegralExpression} \addcontentsline{toc}{subsubsection}{\ttfamily IntegralExpression.table} Attempts to integrate \texttt{integral.expression} with respect to \texttt{integral.symbol} by checking a table of basic integrals; returns nil if the integrand isn't in the table. For example: \begin{codebox} \begin{minted}[fontsize=\small]{latex} \begin{CAS} vars('x') f = int(cos(x),x) f = f:table() g = int(x*cos(x),x) g = g:table() \end{CAS} \[ f = \print{f} \qquad g = \print{g} \] \end{minted} \tcblower \begin{CAS} vars('x') f = int(cos(x),x) f = f:table() g = int(x*cos(x),x) g = g:table() \end{CAS} \[ f = \print{f} \qquad g = \print{g} \] \end{codebox} The table of integrals consists of power functions, exponentials, logarithms, trigonometric, and inverse trigonometric functions. \newcoderef{function IntegralExpression.linearproperties(integral)}{return Expression|nil}{integral IntegralExpression} \addcontentsline{toc}{subsubsection}{\ttfamily IntegralExpression.linearproperties} Attempts to integrate \texttt{integral.expression} with respect to \texttt{integral.symbol} by using linearity properties (e.g. the integral of a sum/difference is the sum/difference of integrals); returns nil if any individual component cannot be integrated using \mintinline{lua}{IntegralExpression:integrate()}. For example: \begin{codebox} \begin{minted}[fontsize=\small]{latex} \begin{CAS} vars('x') f = int(sin(x) + e^x,x) g = f:table() f = f:linearproperties() \end{CAS} \[ f = \print*{f} \qquad g = \print*{g} \] \end{minted} \tcblower \begin{CAS} f = int(sin(x) + e^x,x) g = f:table() f = f:linearproperties() \end{CAS} \[ f = \print*{f} \qquad g = \print*{g} \] \end{codebox} \newcoderef{function IntegralExpression.substitutionmethod(integral)}{return Expression|nil}{integral IntegralExpression} \addcontentsline{toc}{subsubsection}{\ttfamily IntegralExpression.substitutionmethod} Attempts to integrate \texttt{integral.expression} with respect to \texttt{integral.symbol} via $u$-substitution; returns nil if no suitable substitution is found to be successful. \begin{codebox} \begin{minted}[fontsize=\small]{latex} \begin{CAS} vars('x') f = int(x*e^(x^2),x) g = int(x*e^x,x) f = f:substitutionmethod() g = g:substitutionmethod() \end{CAS} \[ f = \print*{f} \qquad g = \print*{g}.\] \end{minted} \tcblower \begin{CAS} vars('x') f = int(x*e^(x^2),x) g = int(x*e^x,x) f = f:substitutionmethod() g = g:substitutionmethod() \end{CAS} \[ f = \print*{f} \qquad g = \print*{g}.\] \end{codebox} \newcoderef{function IntegralExpression.enhancedsubstitutionmethod(integral)}{return Expression|nil}{integral IntegralExpression} \addcontentsline{toc}{subsubsection}{\ttfamily IntegralExpression.enhancedsubstitutionmethod} Attempts integrate \texttt{integral.expression} with respect to \texttt{integral.symbol} via $u$-substitutions. This method distinguishes itself from the \mintinline{lua}{.substitutionmethod} by attempted to solve $u= g(x)$ for the original variable and then substituting the result into the expression. This behavior is not included in \mintinline{lua}{.substitutionmethod} due to speed concerns. For example: \begin{codebox} \begin{minted}[fontsize=\small]{latex} \begin{CAS} vars('x') f = int(x^5*sqrt(x^3+1),x) g = f:substitutionmethod() h = f:enhancedsubstitutionmethod() \end{CAS} \[ g= \print*{g} \] \[ h= \print*{h} \] \end{minted} \tcblower \begin{CAS} vars('x') f = int(x^5*sqrt(x^3+1),x) g = f:substitutionmethod() h = f:enhancedsubstitutionmethod() \end{CAS} \[ g= \print*{g} \] \[ h= \print*{h} \] \end{codebox} \newcoderef{function IntegralExpression.trialsubstitutions(Expression)}{return table