diff options
Diffstat (limited to 'Master/texmf-dist/doc/latex/numerica/numerica-plus.tex')
-rw-r--r-- | Master/texmf-dist/doc/latex/numerica/numerica-plus.tex | 1973 |
1 files changed, 0 insertions, 1973 deletions
diff --git a/Master/texmf-dist/doc/latex/numerica/numerica-plus.tex b/Master/texmf-dist/doc/latex/numerica/numerica-plus.tex deleted file mode 100644 index 049418f1a11..00000000000 --- a/Master/texmf-dist/doc/latex/numerica/numerica-plus.tex +++ /dev/null @@ -1,1973 +0,0 @@ -%% LyX 2.4.0-alpha1 created this file. For more info, see https://www.lyx.org/. -%% Do not edit unless you really know what you are doing. -\documentclass[english,tableposition=top]{report} -\usepackage{lmodern} -\renewcommand{\sfdefault}{lmss} -\renewcommand{\ttdefault}{lmtt} -\usepackage[T1]{fontenc} -\usepackage{textcomp} -\usepackage[latin9]{inputenc} -\setcounter{secnumdepth}{3} -\usepackage{color} -\definecolor{shadecolor}{rgb}{0.667969, 1, 1} -\usepackage{babel} -\usepackage{array} -\usepackage{wrapfig} -\usepackage{booktabs} -\usepackage{framed} -\usepackage{url} -\usepackage{amsmath} -\usepackage[unicode=true,pdfusetitle, - bookmarks=true,bookmarksnumbered=true,bookmarksopen=true,bookmarksopenlevel=2, - breaklinks=true,pdfborder={0 0 1},backref=section,colorlinks=true] - {hyperref} - -\makeatletter - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands. -%% Because html converters don't know tabularnewline -\providecommand{\tabularnewline}{\\} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Textclass specific LaTeX commands. -\newenvironment{centred}% - {\begin{center}\baselineskip=13pt\parskip=1pt}{\end{center}} -\newenvironment{lyxcode} - {\par\begin{list}{}{ - \setlength{\rightmargin}{\leftmargin} - \setlength{\listparindent}{0pt}% needed for AMS classes - \raggedright - \setlength{\itemsep}{0pt} - \setlength{\parsep}{0pt} - \normalfont\ttfamily}% - \item[]} - {\end{list}} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands. -\usepackage[plus]{numerica} - -\newcommand\rel{\,\varrho\;} -\DeclareMathOperator{\erf}{erf} -\DeclareMathOperator{\gd}{gd} - -\reuse - -\usepackage{upquote} - -\makeatother - -\begin{document} -\title{\texttt{numerica-plus}~\\ -} -\author{Andrew Parsloe\\ -(\url{ajparsloe@gmail.com})} -\maketitle -\begin{abstract} -In this module of the \verb`numerica` package, commands are defined -which iterate and find fixed points of functions of a single variable, -which find the zeros or extrema of such functions, and which calculate -the terms of recurrence relations.\\ -\\ -\noindent\begin{minipage}[t]{1\columnwidth}% -\begin{shaded}% - -\paragraph*{Note:} -\begin{itemize} -\item {\normalsize This document applies to version 1.0.0 of }{\normalsize\texttt{numerica-plus}}{\normalsize .def.}{\small\par} -\item {\normalsize Reasonably recent versions of the \LaTeX 3 bundles }{\normalsize\texttt{l3kernel}}{\normalsize{} -and }{\normalsize\texttt{l3packages}}{\normalsize{} are required.}{\small\par} -\item {\normalsize I refer a number of times in this document to }{\normalsize\emph{Handbook -of Mathematical Functions}}{\normalsize , edited by Milton Abramowitz -and Irene A. Segun, Dover, 1965. This is abbreviated to }{\normalsize\emph{HMF}}{\normalsize .}{\small\par} -\end{itemize} -\end{shaded}% -\end{minipage} -\end{abstract} -\tableofcontents{} - -\chapter{Introduction} - -By calling \texttt{numerica} with the \texttt{plus} package option -in the preamble, -\begin{lyxcode} -\textbackslash usepackage{[}plus{]}\{numerica\} -\end{lyxcode} -a number of additional commands are loaded: -\begin{itemize} -\item \verb`\nmcIterate`, a command to iterate a function (apply it repeatedly -to itself), including finding fixed points (values $x$ where $f(x)=x$); -\item \verb`\nmcSolve`, a command to find the zeros of functions of a single -variable (values $x$ for which $f(x)=0$) or, failing that, local -maxima or minima of such functions; -\item \verb`\nmcRecur`, a command to calculate the values of terms in recurrence -relations in a single (recurrence) variable (like the terms of the -Fibonacci sequence or Legendre polynomials). -\end{itemize} -These commands are defined in the package \texttt{numerica-plus.def} -which is loaded with \texttt{numerica.sty} when the \texttt{plus} -option is used. The new commands all share the syntax of the \verb`\nmcEvaluate` -command. I will discuss them individually in later chapters but turn -first to an example that illustrates their use and gives a sense of -`what they are about'. - -\section{Example of use: the rotating disk} - -\label{sec:introExampleOfUse}Consider a disk rotating uniformly with -angular velocity $\omega$ in an anticlockwise sense in an inertial -system in which the disk's centre \textbf{0} is at rest. Three distinct -points \textbf{1}, \textbf{2}, \textbf{3} are fixed in the disk and, -in a co-rotating polar coordinate system centred at \textbf{0}, have -polar coordinates $(r_{i},\theta_{i})$ ($i,j=1,2,3$). Choose \textbf{01} -as initial line so that $\theta_{1}=0$. - -The cosine rule for solving triangles tells us that the time $t_{ij}$ -in the underlying inertial system for a signal to pass from \textbf{i} -to \textbf{j} satisfies the equation -\[ -t_{ij}=c^{-1}\sqrt{r_{i}^{2}+r_{j}^{2}-2r_{i}r_{j}\cos(\theta_{j}-\theta_{i}+\omega t_{ij})}\equiv f(t_{ij}), -\] -where $c$ is the speed of light. (Equally, we could be describing -an acoustic signal between points on a disk rotating uniformly in -a still, uniform atmosphere \textendash{} in which case $c$ would -be the speed of sound.) Although the equation doesn't solve algebraically -for the time $t_{ij},$ it does tell us that $t=t_{ij}$ is a \emph{fixed -point} of the function $f(t)$. To calculate fixed points we use the -command \verb`\nmcIterate`, or its short-name form \verb`\iter`, -with the star option, \verb`\iter*`. For \verb`\iter` the star option -means: continue iterating until a fixed point has been reached and, -as with the \verb`\eval` command, suppress all elements from the -display save for the numerical result. - -First, though, values need to be assigned to the various parameters. -Suppose we use units in which $c=30,$ $r_{1}=10$ and $r_{3}=20$; -also $\omega=0.2$ radians per second and $\theta_{13}\equiv\theta_{3}-\theta_{1}=0.2$ -radians. We shall give $t$ an initial value $1$ (plucked from the -air). Its position as the rightmost item in the vv-list tells \verb`\iter` -that $t$ is the iteration variable: -\begin{verbatim} - \iter*{ c^{-1}\sqrt{r_1^2+r_3^2-2r_1 r_3 - \cos(\theta_{13}+\omega t)} - }[ c=30,r_1=10,r_3=20,\theta_{13}=0.2, - \omega=0.2,t=1 ], \quad\info{iter}. -\end{verbatim} -$\Longrightarrow$ \iter*{ c^{-1}\sqrt{r_1^2+r_3^2-2r_1 r_3 - \cos(\theta_{13}+\omega t)} - }[ c=30,r_1=10,r_3=20,\theta_{13}=0.2, - \omega=0.2,t=1 ], -\quad\info{iter}. The \verb`\nmcInfo` command or, more briefly \verb`\info`, can -be used to display the number of iterations required to attain the -fixed-point value. - -To six figures, only five iterations are needed, which seems rapid -but we can check this by substituting $t=0.356899$ back into the -formula and \verb`\eval`-uating it: -\begin{verbatim} - \eval*{ c^{-1}\sqrt{r_1^2+r_3^2-2r_1 r_3 - \cos(\theta_{13}+\omega t)} - }[ c=30,r_1=10,r_3=20,\theta_{13}=0.2, - \omega=0.2,t=0.356899 ] -\end{verbatim} -$\Longrightarrow$ \eval*{ c^{-1}\sqrt{r_1^2+r_3^2-2r_1 r_3 - \cos(\theta_{13}+\omega t)} - }[ c=30,r_1=10,r_3=20,\theta_{13}=0.2, - \omega=0.2,t=0.356899 ], confirming that we have indeed calculated a fixed point. That it -took only $5$ iterations can be checked by omitting the asterisk -from the \verb`\iter` command and specifying the total number of -iterations to perform. I choose \texttt{do=}7 to show not just the -$5$th iteration but also the next two just to confirm that the result -is stable. We shall view all $7$: \texttt{see=7}. I have also suppressed -display of the vv-list by giving the key \texttt{vvd}\emph{ }an empty -value,\footnote{See the associated document \texttt{numerica-basics.pdf}, the chapter -on settings.} since there are too many variables to display on a line: -\begin{verbatim} - \iter[do=7,see=7,vvd=] - {\[ c^{-1}\sqrt{r_1^2+r_3^2-2r_1 r_3 - \cos(\theta_{13}+\omega t)} \]} - [ c=30,r_1=10,r_3=20,\theta_{13}=0.2, - \omega=0.2,t=1 ] -\end{verbatim} -$\Longrightarrow$ \iter[do=7,see=7,vvd=] - {\[ c^{-1}\sqrt{r_1^2+r_3^2-2r_1 r_3 - \cos(\theta_{13}+\omega t)} \]} - [ c=30,r_1=10,r_3=20,\theta_{13}=0.2, - \omega=0.2,t=1 ] -\noindent \begin{flushleft} -This display makes clear that on the $5$th iteration, the $6$-figure -value has been attained. -\par\end{flushleft} - -Alternatively, we could use the \verb`\nmcRecur` command, or its -short-name form \verb`\recur`, to view the successive iterations -since an iteration is a first-order recurrence: $f_{n+1}=f(f_{n})$: -\begin{verbatim} - \recur[do=8,see1=0,see2=5,vvd={,\\(vv)\\},*] - {\[ f_{n+1}=c^{-1}\sqrt{r_1^2+r_3^2-2r_1 r_3 - \cos(\theta_{13}+\omega f_{n})} \]} - [ c=30,r_1=10,r_3=20,\theta_{13}=0.2, - \omega=0.2, f_{0}=1 ] -\end{verbatim} -$\Longrightarrow$ \recur[do=8,see1=0,see2=5,vvd={\\(vv)\\},*] - {\[ f_{n+1}=c^{-1}\sqrt{r_1^2+r_3^2-2r_1 r_3 - \cos(\theta_{13}+\omega f_{n})} \]} - [ c=30,r_1=10,r_3=20,\theta_{13}=0.2, - \omega=0.2, f_{0}=1 ] - -\noindent I have specified \texttt{do=8} terms rather than $7$ since -the zero-th term ($f_{0}=1$) is included in the count. I've chosen -to view the last $5$ of them but none prior to those by writing \texttt{see1=0,see2=5}. -The vv-list has been suppressed from the display (\texttt{vvd=} ) -and the numerical results forced onto a new line (without an equation -number \textendash{} the \texttt{{*}} in the vv-list). - -Another and perhaps more obvious way to find the value of $t_{13}$, -is to look for a zero of the function $f(t)-t$. That means using -the command \verb`\nmcSolve` or its short-name form \verb`\solve`. -I shall do so with the star option \verb`\solve*` which suppresses -display of all but the numerical result. A trial value for $t$ is -required. I have chosen \texttt{t=0}: -\begin{verbatim} - \solve*{ c^{-1}\sqrt{r_1^2+r_3^2-2r_1 r_3 - \cos(\theta_{13}+\omega t)} - t } - [ c=30,r_1=10,r_3=20,\theta_{13}=0.2, - \omega=0.2,t=0 ], \quad\nmcInfo{solve}. -\end{verbatim} -$\Longrightarrow$ \solve*{ c^{-1}\sqrt{r_1^2+r_3^2-2r_1 r_3 - \cos(\theta_{13}+\omega t)}-t - }[ c=30,r_1=10,r_3=20,\theta_{13}=0.2, - \omega=0.2,t=0], -\quad\nmcInfo{solve}. - -Nearly the same answer as before is attained but this time many more -steps have been required. This is to be expected. The \verb`\solve` -command uses the bisection method. Since $1/2^{10}\approx1/10^{3}$ -or $10$ bisections for $3$ decimal places, we can expect about $20$ -bisections being needed for a $6$-decimal-place answer. The particular -form of the \verb`\nmcInfo` command display, `$1+20$ steps', indicates -that it took $1$ search step to find an interval in which the function -vanished and, having found that interval, $20$ bisections to narrow -the position of the zero to $6$-figures. - -\subsection{Circuits} - -Okay, so we can calculate the time taken in the underlying inertial -system for a signal to pass from one point of the rotating disk to -another. How long does it take to traverse the circuit \textbf{1} -to \textbf{2} to \textbf{3} back to \textbf{1}? That means forming -the sum $t_{12}+t_{23}+t_{31}$, hence calculating the separate $t_{ij}$ -and then using \verb`\eval` to calculate their sum. - -To make things neater and easier to read, I assume a little symmetry. -Let the coordinates of \textbf{1} be $(a,0),$ of \textbf{2} be $(r,-\theta)$, -and of \textbf{3} be $(r,\theta)$: \textbf{2} and \textbf{3} are -at the same radial distance from the centre \textbf{0} and at the -same angular distance but on opposite sides of the line \textbf{01}, -\textbf{3} an angle $\theta$ ahead of \textbf{1}, \textbf{2} an angle -$\theta$ behind \textbf{1}. The rotation is in the direction of positive -$\theta$. Rather than just calculate $t_{12}+t_{23}+t_{31}$ for -the circuit \textbf{1231}, I also calculate the time $t_{13}+t_{32}+t_{21}$ -for a signal to traverse the opposite circuit \textbf{1321} and compare -them (form the difference). - -Note that with \textbf{2} and \textbf{3} positioned as they are relative -to \textbf{1}, -\[ -t_{31}=c^{-1}\sqrt{r^{2}+a^{2}-2ra\cos(\theta-\omega t_{31})} -\] -and -\[ -t_{12}=c^{-1}\sqrt{a^{2}+r^{2}-2ar\cos(\theta-\omega t_{12})}. -\] -Both $t_{12}$ and $t_{31}$ are fixed points of the same function -\[ -F_{-1}(t)=c^{-1}\sqrt{r^{2}+a^{2}-2ra\cos(\theta-\omega t).} -\] -Similarly, both $t_{13}$ and $t_{21}$ are fixed points of -\[ -F_{+1}(t)=c^{-1}\sqrt{r^{2}+a^{2}-2ra\cos(\theta+\omega t)}. -\] - Geometrically one can show that $t_{31}=t_{12}$ and $t_{13}=t_{21}$. -Analytically, with the values $c=30,a=10,r=20$, -\[ -0<F_{\pm1}(t)\le c^{-1}\sqrt{r^{2}+a^{2}+2ar}=c^{-1}(r+a)=1, -\] -so that we need look for fixed points only in the interval $[0,1]$. -Differentiating $F_{-1}(t)$ shows the derivative is negative on $[0,1]$, -hence that $F_{-1}$ is strictly decreasing there and can intersect -the identity mapping at most once on the interval. Similarly, differentiating -$F_{+1}(t)$ shows the derivative -\[ -\frac{ar\omega\sin(\theta+\omega t)}{c\sqrt{r^{2}+a^{2}-2ar\cos(\theta+\omega t)}} -\] -is positive on $[0,1]$, but with the given values for $c,a$ and -$r$, and with $\theta=0.2,\omega=0.2$, $F'_{+1}(t)<0.1$ on $[0,1]$: -hence $F_{+1}$ increases sufficiently slowly on the interval that -the identity mapping can intersect it at most once there. In both -cases, there can be at most one fixed point. - -It follows that $t_{12}=t_{31}$ and $t_{13}=t_{21}$ and the round -trip times are $2t_{12}+t_{23}$ and $2t_{13}+t_{32}$. - -\subsubsection{Nesting commands} - -The calculation to compare the round trip times can be done `in one -go' by nesting the \verb`\iter*` commands to calculate the $t_{ij}$ -inside an \verb`\eval*` command to form the sum of their results -and then take the difference. -\begin{verbatim} - $ - \eval*{ % circuit 1231 - 2\iter*{ c^{-1}\sqrt{a^2+r^2-2ar - \cos(\theta-\omega t)} } - + \iter*{ c^{-1}\sqrt{2r^2-2r^2 - \cos(2\theta+\omega t)} } - % circuit 1321 - - 2\iter*{ c^{-1}\sqrt{a^2+r^2-2ar - \cos(\theta+\omega t)} } - - \iter*{ c^{-1}\sqrt{2r^2-2r^2 - \cos(2\theta-\omega t)} } - }[ c=30,a=10,r=20,\theta=0.2,\omega=0.2, t=1 ] - $ -\end{verbatim} -$\Longrightarrow$ $ - \eval*{ % circuit 1231 - 2\iter*{ c^{-1}\sqrt{a^2+r^2-2ar - \cos(\theta-\omega t)} } - + \iter*{ c^{-1}\sqrt{2r^2-2r^2 - \cos(2\theta+\omega t)} } - % circuit 1321 - - 2\iter*{ c^{-1}\sqrt{a^2+r^2-2ar - \cos(\theta+\omega t)} } - - \iter*{ c^{-1}\sqrt{2r^2-2r^2 - \cos(2\theta-\omega t)} } - }[ c=30,a=10,r=20,\theta=0.2,\omega=0.2, t=1 ] - $. - -By itself this result is of little interest beyond seeing that \texttt{numerica} -can handle it. What \emph{is} interesting is to find values of $\theta$, -say, given the other parameters and especially the value of $r$, -such that the time difference vanishes. Is there a circuit, despite -the rotation of the disk, such that it takes a signal the same time -to travel in opposite directions around the circuit? That is a job -for \verb`\nmcSolve` (or \verb`\solve`): -\begin{verbatim} - \solve[p=.,var=\theta,vvi=]{$ % circuit 1231 - 2\times\iter*[var=t]{ c^{-1}\sqrt{a^2+r^2-2ar - \cos(\theta-\omega t)} } - + \iter*[var=t]{ c^{-1}\sqrt{2r^2-2r^2 - \cos(2\theta+\omega t)} } - % circuit 1321 - - 2\times\iter*[var=t]{ c^{-1}\sqrt{a^2+r^2-2ar - \cos(\theta+\omega t)} } - - \iter*[var=t]{ c^{-1}\sqrt{2r^2-2r^2 - \cos(2\theta-\omega t)} } - $}[ c=30,a=10,r=20,\theta=0.1,\omega=0.2, {t}=1 ] -\end{verbatim} -$\Longrightarrow$ \solve[p=.,var=\theta,vvi=]{$ % circuit 1231 - 2\times\iter*[var=t]{ c^{-1}\sqrt{a^2+r^2-2ar - \cos(\theta-\omega t)} } - + \iter*[var=t]{ c^{-1}\sqrt{2r^2-2r^2 - \cos(2\theta+\omega t)} } - % circuit 1321 - - 2\times\iter*[var=t]{ c^{-1}\sqrt{a^2+r^2-2ar - \cos(\theta+\omega t)} } - - \iter*[var=t]{ c^{-1}\sqrt{2r^2-2r^2 - \cos(2\theta-\omega t)} } - $}[ c=30,a=10,r=20,\theta=0.1,\omega=0.2, {t}=1 ] - -One point to note here is the use of \verb`\times` (in \verb`2\times\iter*`) -as against the previous example with \verb`\eval*` where \verb`\times` -was not used. In the present case the formula is displayed (\verb`\solve` -wraps around math delimiters); the star on the \verb`\eval` command -in the previous example suppressed display of the formula. Without -the \verb`\times` the `$2$'s would be juxtaposed against the following -decimals, making it look as if the signal travel times were $20.537778$ -and $20.614419$ and no doubt causing perplexity. Also note the \texttt{vvi=} -to suppress display of the vv-list. - -But this is not a research paper on the rotating disk. I wished to -show how the different commands of \texttt{numerica-plus} can be used -to explore a meaningful problem. And although it looks as if a lot -of typing is involved, once $c^{-1}\sqrt{r^{2}+a^{2}-2ra\cos(\theta-\omega t)}$ -has been formed in \LaTeX{} and values specified in the vv-list, much -of the rest is copy-and-paste followed by minor editing. - -\section{Shared syntax of the new commands} - -\texttt{numerica-plus} offers three new commands for three processes: -\verb`\nmcIterate` (short-name form \verb`\iter`) for iterating -functions, \verb`\nmcSolve` (short-name form \verb`\solve`) for -finding the zeros or (local) extrema of functions, and \verb`\nmcRecur` -(short-name form \verb`\recur`) for calculating terms of recurrence -relations. - -All three commands share the syntax of the \verb`\nmcEvaluate` (or -\verb`\eval`) command detailed in the associated document \texttt{numerica-basics.pdf}. -When all options are used then the command looks like -\begin{centred} -\noindent \verb`\nmcIterate*[settings]{expr.}[vv-list][num. format]` -\end{centred} -You can substitute \verb`\nmcSolve`, or \verb`\nmcRecur` for \verb`\nmcIterate` -here. The arguments are similar to those for \verb`\nmcEvaluate`. -\begin{enumerate} -\item \verb`*` optional switch; if present ensures a single number output -with no formatting, or an appropriate error message if the single -number cannot be produced; -\item \verb`[settings]` optional comma-separated list of \emph{key=value -}settings for this particular command and calculation; -\item \verb`{expr.}` the only mandatory argument; the mathematical expression -in \LaTeX{} form that is the object of interest; -\item \verb`[vv-list]` optional comma-separated list of \emph{variable=value -}items; for \verb`\iter` and \verb`\solve` the \emph{rightmost} -(or innermost) variable in the vv-list may have special significance; -\item \verb`[num. format]` optional format specification for presentation -of the numerical result (rounding, padding with zeros, scientific -notation); boolean output is suppressed for these commands. -\end{enumerate} -Boolean output makes little sense for these three commands and is -turned \emph{off}. Entering a question mark in the trailing number-format -option of each command has no effect \textendash{} see §. - -All commands also share with \verb`\nmcEvaluate` changes in the way -the result is displayed depending on whether they wrap around math -delimiters, or are wrapped within math delimiters, or are employed -in the absence of math delimiters. These distinctions are relevant\emph{ -only if the optional star {*} is absent.} -\begin{itemize} -\item When the star option is used, the \emph{result} is a number only without -any formatting or vv-list display, or an error message is displayed. -\item When the star option is not used and one of the following is the case -\begin{itemize} -\item the command wraps around math delimiters, e.g. \verb`\iter{$ expr. $}`, -then the result is displayed in the form \emph{expression~=~result} -or the form \emph{expression~$\rightarrow$~result} as appropriate, -where \emph{result} may be multi-line and may include the vv-list, -\item the command is used within math delimiters, e.g. \verb`\[\iter...\]`, -then only the \emph{result} is presented, where \emph{result} may -be multi-line and may include the vv-list, -\item the command is used in the absence of delimiters, then the result -is presented as if it had been used between \verb`\[` and \verb`\]`. -\end{itemize} -\end{itemize} -Looking at the various examples in the preceding section on the rotating -disk you will see illustrations of all these situations. - -\subsection{Settings} - -\begin{table} -\noindent \centering{}\caption{\protect\label{tab:introSettingsInherited}Inherited settings options} -\noindent \begin{center} -\begin{tabular}{ll>{\raggedright}p{4cm}>{\raggedright}p{4cm}} -\toprule -{\small key} & {\small type} & {\small meaning} & {\small default}\tabularnewline -\midrule -{\small\texttt{dbg}} & {\small int} & {\small debug `magic' integer} & {\small\texttt{0}}\tabularnewline -{\small\texttt{\textasciicircum}} & {\small char} & {\small exponent mark for sci. notation input} & {\small\texttt{e}}\tabularnewline -{\small\texttt{xx}} & {\small int (0/1)} & {\small multi-token variable switch} & {\small\texttt{1}}\tabularnewline -{\small\texttt{()}} & {\small int (0/1/2)} & {\small trig. function arg. parsing} & {\small\texttt{0}}\tabularnewline -{\small\texttt{o}} & & {\small degree switch for trig. funcions} & \tabularnewline -{\small\texttt{log}} & {\small num} & {\small base of logarithms for }{\small{\small\verb`\log`}} & {\small\texttt{10}}\tabularnewline -{\small\texttt{vvmode}} & {\small int (0/1)} & {\small vv-list calculation mode} & {\small\texttt{0}}\tabularnewline -{\small\texttt{vvd}} & {\small tokens} & {\small vv-list display-style spec.} & {\small\texttt{\{,\}\textbackslash mskip 12mu plus 6mu minus 9mu(vv)}}\tabularnewline -{\small\texttt{vvi}} & {\small token(s)} & {\small vv-list text-style spec.} & {\small\texttt{\{,\}\textbackslash mskip 36mu minus 24mu(vv)}}\tabularnewline -{*} & & {\small suppress equation numbering if }{\small\texttt{\textbackslash\textbackslash}}{\small{} -in }{\small\texttt{vvd}} & \tabularnewline -{\small\texttt{p}} & char(s) & {\small punctuation (esp. in display-style)} & {\small\texttt{, (comma)}}\tabularnewline -{\small\texttt{S+}} & {\small int} & {\small extra rounding for stopping criterion for sums} & {\small\texttt{2}}\tabularnewline -{\small\texttt{S?}} & {\small$\text{int}\ge0$} & {\small stopping criterion query terms for sums} & {\small\texttt{0}}\tabularnewline -{\small\texttt{P+}} & {\small int} & {\small extra rounding for stopping criterion for products} & {\small\texttt{2}}\tabularnewline -{\small\texttt{P?}} & {\small$\text{int}\ge0$} & {\small stopping criterion query terms for products} & {\small\texttt{0}}\tabularnewline -\bottomrule -\end{tabular} -\par\end{center} -\end{table} -Nearly all the settings available to the \verb`\eval` command are -available to these other commands. To save switching between documents -I reproduce in Table~\ref{tab:introSettingsInherited} the options -found in \texttt{numerica-basics.pdf}, although for discussion of -the options you will need to refer to that document. In addition, -each of the present commands also has settings of its own, discussed -at the relevant parts of the following chapters. - -\subsection{Nesting} - -Provided the starred form of a command actually does produce a numerical -result and not an error message then it can be nested within the main -argument of any one of the commands, including itself. The example -of use, §\ref{sec:introExampleOfUse} above, shows several examples -of this. The starred form can also be used in the vv-list of any one -of the commands, including itself. The associated document \texttt{numerica-basics.pdf} -shows examples of an \verb`\eval*` command being used in the vv-list -of an \verb`\eval` command. - -\chapter{Iterating functions: \texttt{\textbackslash nmcIterate}} - -\label{chap:Iterating-functions}Only in desperation would one try -to evaluate a continued fraction by stacking fraction upon fraction -upon fraction like so: -\[ -1+\frac{1}{1+\frac{1}{1+\frac{1}{1+\frac{1}{1+\frac{1}{1+\frac{1}{1+\frac{1}{1+\frac{1}{1+\frac{1}{1+\frac{1}{1+\frac{1}{1+\frac{1}{1}}}}}}}}}}}} -\] -\texttt{numerica-plus} provides a command for tackling problems like -this sensibly. In such problems a function is repeatedly applied to -itself (\emph{iterated}). This can be achieved in \texttt{numerica} -through the command \verb`\nmcIterate` or (short-name form) \verb`\iter`. -Thus to evaluate this continued fraction we write -\begin{centred} -\verb`\iter[do=15,see=5]{\[ 1+1/x \]}[x=1]` $\Longrightarrow$ \iter[do=15,see=5]{\[ 1+1/x \]}[x=1] -\end{centred} -The \verb`\iter` command evaluates $1+1/x$ when $x=1$ and then -uses this value as a new $x$-value to substitue into $1+1/x$, to -once again evaluate and use as a new $x$-value, and so on. It looks -as if the repeated iterations are approaching \verb`\eval{$ \tfrac{\sqrt{5}+1}2 $}` -$\Longrightarrow$ \eval{$ \tfrac{\sqrt{5}+1}2 $}. - -Increasing the number of iterations in the example from \texttt{do=15} -to, say, \texttt{do=18}, shows that this is indeed the case. I've -taken the opportunity to also put a question mark in the number-format -option to get boolean output in order to show that it has \emph{no} -effect: -\begin{centred} -\verb`\iter[do=18,see=5]{\[ 1+1/x \]}[x=1][?]` $\Longrightarrow$ -\iter[do=18,see=5]{\[ 1+1/x \]}[x=1][?] -\end{centred} -But iteration of functions is not limited to continued fractions. -Particularly since the emergence of chaos theory, iteration has become -an important study in its own right. Any function whose range lies -within its domain can be iterated \textendash{} repeatedly applied -to itself. The cosine, for instance, -\begin{centred} -\verb`\iter[do=20,see=4]{\[ \cos x \]}[x=\pi/2]` $\Longrightarrow$ -\iter[do=20,see=4]{\[ \cos x \]}[x=\pi/2] -\end{centred} -which displays the first one and last four of 20 iterations of $\cos x$ -when $x=\tfrac{\pi}{2}$. It looks as if the cosine is `cautiously' -approaching a limit, perhaps around $0.738$ or $0.739$. You need -to nearly double the number of iterations (\texttt{do=40}) to confirm -that this is so. - -The logistic function $kx(1-x)$ exhibits a variety of behaviours -depending on the value of $k$. For instance, with $k=3.5$ we get -a period-4 cycle: -\begin{centred} -\verb`\iter[do=12,see=8]{\[ kx(1-x) \]}[k=3.5,x=0.5]` $\Longrightarrow$ - \iter[do=12,see=8]{\[ kx(1-x) \]}[k=3.5,x=0.5] -\end{centred} -and with $k=3.1$ we get a period-2 cycle, although it takes many -more iterations to stabilize there: -\begin{centred} -\verb`\iter[do=44,see=8]{\[ kx(1-x) \]}[k=3.1,x=0.5]` $\Longrightarrow$ -\iter[do=44,see=8]{\[ kx(1-x) \]}[k=3.1,x=0.5] -\end{centred} - -\section{Star (\texttt{{*}}) option: fixed points} - -In the first two of these examples, iteration eventually ended at -a \emph{fixed point}. This is a point $x$ where $f(x)=x$ and, by -induction, $f^{n}(x)=x$. Appending a star (asterisk) to the \verb`\iter` -command is the signal for iteration to continue until a fixed point -has been reached at the specified rounding value: -\begin{centred} -\verb`\iter*{ 1+a/x }[a=n(n+1),n=1,x=1]` $\Longrightarrow$ \iter*{ 1+a/x }[a=k(k+1),k=1,x=1] -\end{centred} -(with the default rounding value $6$).\footnote{For your own interest try also putting $n=2,3,4,\ldots$ .} -The star overrides any value for the number of iterations to perform -(the \texttt{do} key) that may have been entered in the settings option. -It also overrides any elements of the display other than the numerical -result. With the star option math delimiters are irrelevant \textendash{} -other than displaying minus signs correctly when \verb`\iter*` is -between them. - -A function may not approach a fixed point when iterated \textendash{} -see the examples with the logistic function above. To prevent an infinite -loop \verb`\iter*` counts the number of iterations performed and -when that number reaches a certain cut-off value \textendash{} the -default is $100$ \textendash{} the loop terminates and a message -is displayed: -\begin{centred} -\verb`\iter*{kx(1-x)}[k=3.5,x=0.5]` $\Longrightarrow$ \iter*{kx(1-x)}[k=3.5,x=0.5] -\end{centred} -In this case we \emph{know} that a fixed point does not exist, but -that may not always be the case. One response is to change parameter -values or starting value of the iteration variable. For instance, -changing the parameter value to $k=1.5$, -\begin{centred} -\verb`\iter*{kx(1-x)}[k=1.5,x=0.5]` $\Longrightarrow$ \iter*{kx(1-x)}[k=1.5,x=0.5], -\end{centred} -and a fixed point is now attained. - -But should a fixed point still not eventuate after `fiddling' with -parameter and start values, there are two general adjustments one -might try: either -\begin{enumerate} -\item reduce the rounding value, from the default $6$ (or the one specified), -to a smaller value, or -\item increase the cut-off figure from the default 100 to some higher value. -\end{enumerate} -The former is done via the trailing \verb`[num format]` optional -argument; the latter is done via the settings option, see §\ref{sec:iterSettings-option}. - -\subsection{Use with \texttt{\textbackslash nmcInfo}} - -It is of interest to know how many iterations are required to reach -a fixed point at a particular rounding value. That knowledge allows -a good guess as to whether a fixed point will be attained at a greater -rounding value. Thus when iterating the function -\[ -f(t_{ij})=c^{-1}\sqrt{r_{i}^{2}+r_{j}^{2}-2r_{i}r_{j}\cos(\theta_{j}-\theta_{i}+\omega t_{ij})} -\] -in §\ref{sec:introExampleOfUse} only $5$ iterations were required -to attain $6$-figure accuracy for the fixed point. That information -came by following the \verb`\iter*` command with \verb`\nmcInfo` -(or \verb`\info`) with the argument \verb`iter`. And generally, -for any `infinite' process, follow the command with an \verb`\info` -command if you want to know how many `steps' \textendash{} in the -present case iterations \textendash{} are required to achieve the -result. So, if $5$ iterations achieve $6$-figure accuracy, presumably -something like $10$ iterations will achieve $12$-figure accuracy: -\begin{verbatim} - \iter*{ c^{-1}\sqrt{r_i^2+r_j^2-2r_i r_j - \cos(\theta_{ij}+\omega t)} - }[ c=30,r_i=10,r_j=20,\theta_{ij}=0.2, - \omega=0.2,t=1 ][12], - \quad\info{iter}. -\end{verbatim} -$\Longrightarrow$ \iter*{ c^{-1}\sqrt{r_i^2+r_j^2-2r_i r_j - \cos(\theta_{ij}+\omega t)} - }[ c=30,r_i=10,r_j=20,\theta_{ij}=0.2, - \omega=0.2,t=1 ][12], -\quad\info{iter}. Only $9$ iterations suffice to achieve $12$-figure accuracy. Or -again, with another earlier example, -\begin{centred} -\verb`$ \iter*{\cos x}[x=\pi/2] $,\ \info{iter}.` $\Longrightarrow$ -$\iter*{\cos x}[x=\pi/2] $,\ \info{iter}. -\end{centred} -That suggests that around $74$ iterations will give $12$-figure -accuracy, well within the cut-off figure of $100$: -\begin{centred} -\verb`$ \iter*{\cos x}[x=\pi/2][12] $,\ \info{iter}.` $\Longrightarrow$ -$\iter*{\cos x}[x=\pi/2][12] $,\ \info{iter}. -\end{centred} - -\section{Settings option} - -\label{sec:iterSettings-option}The settings option is a comma-separated -list of items of the form \emph{key~=~value}. - -\subsection{Inherited settings} - -Nearly all of the keys discussed in the settings\emph{ }option for -\verb`\nmcEvaluate` are available for \verb`\nmcIterate`. Table~\ref{tab:introSettingsInherited} -above lists these, repeating a table from \texttt{numerica-basics.pdf}. -Thus should a quantity in the vv-list depend on the iteration variable, -forcing an implicit mode calculation, simply enter (as with \verb`\eval`) -\texttt{vvmode=1} in the settings option: -\begin{centred} -\verb`\iter*[vvmode=1]{$ 1+f(x) $}[f(x)=a/x,a=12,x=1]` $\Longrightarrow$ -\iter*[vvmode=1]{$ 1+f(x) $}[f(x)=a/x,a=12,x=1]. -\end{centred} -Implicit in this example is the default multi-token setting \texttt{xx=1} -inherited from \verb`\eval` and ensuring that the multi-token variable -$f(x)$ is treated correctly. - -Let's add \verb`dbg=1` to the example: -\begin{centred} -\verb`\iter*[dbg=1,vvmode=1]{$ 1+f(x) $}[f(x)=a/x,a=12,x=1]` $\Longrightarrow$ -\iter*[dbg=1,vvmode=1]{$ 1+f(x) $}[f(x)=a/x,a=12,x=1] -\end{centred} -The multi-token variable \verb`f(x)` has been changed to the single-token -\verb`\_nmcu`. The values of \verb`x` and \verb`\_nmcu` shown are -those of the \emph{final} iteration. - -\subsection{\texttt{\textbackslash iter}-specific settings} - -In addition to the inherited settings there are some specific to \verb`\nmcIterate`. -These are listed in Table~\ref{tab:iterSettings}. - -\subsubsection{Iteration variable} - -In nearly all of the examples so far, the iteration variable has been -the rightmost variable in the vv-list and has not needed to be otherwise -specified. However it is sometimes not feasible to indicate the variable -in this way. In that case, entering -\begin{lyxcode} -var~=~<variable~name> -\end{lyxcode} -in the settings option enables the variable to be specified, irrespective -of what the rightmost variable in the vv-list is. Here, \texttt{<variable -name>} will generally be a character like \texttt{x} or \texttt{t} -or a token like \verb`\alpha`, but it could also be a multi-token -name like {\ttfamily\verb`x'`}\texttt{ }or \texttt{\textbackslash beta\_\{ij\}} -(or even \texttt{Fred} if you so chose). Although the iteration variable -can be independently specified like this, it must still be given an -initial \emph{value} in the vv-list \textendash{} only it need not -be the rightmost variable. - -In the following example the rightmost variable is $a$ which is clearly -\emph{not} the iteration variable: -\begin{centred} -\verb`\iter[var=x'',do=40,see=5]{$ 1+a/x'' $}[x''=a/6,a=6][*]` $\Longrightarrow$ -\iter[var=x'',do=40,see=5]{$ 1+a/x'' $}[x''=a/6,a=6][*] -\end{centred} - -\subsubsection{Extra rounding for fixed-point calculations} - -\begin{table} -\centering{}\caption{\protect\label{tab:iterSettings}Settings for \texttt{\textbackslash nmcIterate}} -\begin{center} -\begin{tabular}{llll} -\toprule -{\small key} & {\small type} & {\small meaning} & {\small default}\tabularnewline -\midrule -{\small\texttt{var}} & {\small token(s)} & {\small iteration variable} & \tabularnewline -{\small\texttt{+}} & {\small int} & {\small fixed point extra rounding} & {\small\texttt{0}}\tabularnewline -{\small\texttt{max}} & {\small int > 0} & {\small max. iteration count (fixed points)} & {\small\texttt{100}}\tabularnewline -{\small\texttt{do}} & {\small int > 0} & {\small number of iterations to perform} & {\small\texttt{5}}\tabularnewline -{\small\texttt{see}} & {\small int > 0} & {\small number of final iterations to view} & {\small\texttt{4}}\tabularnewline -{\small\texttt{reuse}} & {\small int ($\mathtt{0}/\mathtt{1}/\mathtt{2}$)} & {\small form of result saved with }{\small{\small\verb`\reuse`}} & {\small\texttt{0}}\tabularnewline -\bottomrule -\end{tabular} -\par\end{center} -\end{table} -\texttt{numerica} determines that a fixed point has been reached when -the difference between successive iterations vanishes when rounded -to the current rounding value. One might want reassurance that this -really is the correct value by seeking a fixed point at a higher rounding -value than that displayed. This extra rounding is achieved by entering -\begin{lyxcode} -+~=~<integer> -\end{lyxcode} -in the settings option. By default this extra rounding is set to zero. - -We have seen before that $\cos x$ starting at $x=\tfrac{1}{2}\pi$ -takes $37$ iterations to reach a $6$-figure fixed point $0.739085$, -about $6$ iterations per decimal place. By entering \texttt{+=1} -in the settings option the number of iterations is increased to $43$, -$6$ more than $37$ but, reassuringly, the $6$-figure result that -is displayed remains unchanged: -\begin{centred} -\verb`$ \iter*[+=1]{\cos x}[x=\pi/2] $,\ \info{iter}.` $\Longrightarrow$ -$ \iter*[+=1]{\cos x}[x=\pi/2] $,\ \info{iter}. -\end{centred} - -\subsubsection{Maximum {\small iteration count for fixed point searches}} - -To prevent a fixed-point search from continuing indefinitely when -no fixed point exists, there needs to be a maximum number of iterations -specified after which point the search is called off. By default this -number is $100$. To change it enter -\begin{lyxcode} -max~=~<positive~integer> -\end{lyxcode} -in the settings option. - -\subsubsection{Number of iterations to perform} - -To specify the number of iterations to perform enter -\begin{lyxcode} -do~=~<positive~integer> -\end{lyxcode} -in the settings option. Note that if the \verb`*` option is present -this value will be ignored and iteration will continue until either -a fixed point or the maximum iteration count is reached. By default -\texttt{do} is set to $5$. (Note that \texttt{do} can be set to a -greater number than \texttt{max}; \texttt{max} applies only to \verb`\iter*`.) - -\subsubsection{Number of iterations to view} - -To specify the number of final iteations to view enter -\begin{lyxcode} -see~=~<positive~integer> -\end{lyxcode} -in the settings option. By default \texttt{see} is set to $4$. Always -it is the \emph{last} \texttt{see} iterations that are displayed. -If \texttt{see} is set to a greater value than \texttt{do}, all iterations -are shown. If the star option is used the \texttt{see} value is ignored. - -\subsubsection{Form of result saved by \texttt{\textbackslash reuse}} - -By entering -\begin{lyxcode} -reuse~=~<integer> -\end{lyxcode} -in the settings option of the \verb`iter` command it is possible -to specify the form of result that is saved when using \verb`\nmcReuse`. -(This setting has no effect when the star option is used with \verb`\nmcIterate`. -In that case only the numerical result of the fixed point calculation -\textendash{} if successful \textendash{} is saved.) The possibilities -are: -\begin{itemize} -\item \texttt{int=0} (or any integer $\mathtt{\ne1,2}$) saves the display -resulting from the \verb`\iter` command (the default); -\item \texttt{int=1} saves a comma-separated list of pairs of the form:\texttt{ }~\\ -\texttt{\{$k$, value-of-$k$-th-iterate\}}; -\item \texttt{int=2} saves a comma-separated list of iterate values. -\end{itemize} -Note that the number and content of the items in the lists are those -resulting from the \texttt{see} setting (the number of iterations -to view). -\begin{verbatim} - \iter[reuse=1,do=12,see=4] - {\[ kx(1-x) \]}[k=3.5,x=0.5] - \reuse[logistic] -\end{verbatim} -$\Longrightarrow$ \iter[reuse=1,do=12,see=4]{\[ kx(1-x) \]}[k=3.5,x=0.5] \reuse[logistic] - -\noindent whence \verb`\logistic` $\Longrightarrow$ \logistic. -As you can see the control sequence \verb`\logistic` displays as -a comma-separated list of numbers, alternating between the ordinal -of the iterate, and the iterate value. In fact these values are grouped -as braced pairs separated by commas in \verb`\logistic`, as can be -seen by using \TeX 's \verb`\meaning` command: -\begin{centred} -\verb`\meaning\logistic` $\Longrightarrow$ \meaning\logistic -\end{centred} - -\subsection{Changing default values} - -\begin{wraptable}[12]{o}{0.5\columnwidth}% -\centering{}\caption{\protect\label{tab:iterSettingsDefaults}Defaults for \texttt{\textbackslash nmcIterate}} -\begin{center} -\begin{tabular}{ll} -\toprule -{\small key} & {\small default}\tabularnewline -\midrule -{\small iter-extra-rounding} & {\small\texttt{0}}\tabularnewline -{\small iter-max-iterations} & {\small\texttt{100}}\tabularnewline -{\small iter-do} & {\small\texttt{5}}\tabularnewline -{\small iter-see-last} & {\small\texttt{4}}\tabularnewline -{\small iter-reuse} & {\small\texttt{0}}\tabularnewline -\bottomrule -\end{tabular} -\par\end{center}\end{wraptable}% -If you wish to change the default values of the various settings for -\verb`\nmcIterate` this can be done by entering new values in a configuration -file \texttt{numerica.cfg} as described in the chapter on settings -in the associated document \texttt{numerica-basics.pdf}. The relevant -keys are listed in Table~\ref{tab:iterSettingsDefaults}, corresponding -to the \verb`+`, \verb`max`, \verb`do`, \verb`see` and \verb`reuse` -settings of the \verb`\iter` command. (Obviously it makes no sense -to have a default setting for the iteration variable. That will change -from case to case.) - -\section{Errors} - -By errors I refer to \texttt{numerica} errors rather than \LaTeX{} -errors. We have already met one in the discussion of fixed points: -\begin{centred} -\verb`\iter*{kx(1-x)}[k=3.5,x=0.5]` $\Longrightarrow$ \iter*{kx(1-x)}[k=3.5,x=0.5] -\end{centred} -For a function to be iterated indefinitely, its range must lie within -or be equal to its domain. If even part of the range of a function -lies outside its domain, then on repeated iteration there is a chance -that a value will eventually be calculated which lies in this `outside' -region. Iteration cannot continue beyond this point and an error message -is generated. As an example consider the inverse cosine, \verb`\arccos`. -This can be iterated only so far as the iterated values lie between -$\pm1$ inclusive. If we try to iterate \verb`\arccos` at 0 for example, -since $\cos\frac{1}{2}\pi=0$, $\arccos0=\eval{0.5\pi}[4]$ (which -is $\tfrac{1}{2}\pi$) so only a first iterate is possible. But we -could choose an initial value more carefully; $37$ iterations of -the cosine at $\tfrac{1}{2}\pi$ led to a fixed point $0.739085$, -so let's choose $0.739085$ as initial point and perform $37$ iterations: -\begin{centred} -\verb`\iter[do=37,see=4]{\[ \arccos x \]}[x=0.739085]` $\Longrightarrow$ -\iter[do=37,see=4]{\[ \arccos x \]}[x=0.739085] -\end{centred} -The result of the $37$th iteration is greater than $1$. Thus increasing -the number of iterations to 38 should generate an error message: -\begin{centred} -\verb`\iter[do=38,see=4]{\[ \arccos x \]}[x=0.739085]` $\Longrightarrow$\iter[do=38,see=4]{\[ \arccos x \]} [x=0.739085] -\end{centred} -\verb`l3fp` objects when asked to find the inverse cosine of a number -greater than $1$. - -\chapter{Finding zeros and extrema: \texttt{\textbackslash nmcSolve}} - -\texttt{numerica} provides a command\textbf{ }\verb`\nmcSolve` (short-name -form \verb`\solve`) for finding a zero of a function, should it have -one. In the following example, -\begin{centred} -\verb`\solve[p]{\[ e^{ax}-bx^2 \]}[a=2,b=3,{x}=0]` $\Longrightarrow$ -\solve[p]{\[ e^{ax}-bx^2 \]}[a=2,b=3,{x}=0] -\end{centred} -I have sought and found a solution $x$ to the equation $e^{ax/2}-bx^{2}=0$ -when $a=2$ and $b=3$, starting with a trial value $x=0$, entered -as the \emph{rightmost} variable in the vv-list (and em-braced since -I don't want this trial value displaying in the presentation of the -result). Although $x$ has been found to the default six-figure accuracy, -it is evident that the function vanishes only to five figures. Let's -check: -\begin{centred} -\verb`\eval{$ bx^2 $}[b=3,x=x=-0.390647]` $\Longrightarrow$ \eval{$ bx^2 $}[b=3,x=-0.390647], - -\verb`\eval{$ e^{ax} $}[a=2,x=-0.390646]` $\Longrightarrow$ \eval{$ e^{ax} $}[a=2,x=-0.390647]; -\end{centred} -the values agree save in the final digit. - -This discrepancy in the final decimal place or places is a general -feature of solutions found by \verb`\solve`. It is the value of $x$, -not the value of $f(x)$, that is being found (in this case) to six -figures. If the graph of a function crosses the $x$-axis steeply -then the $x$ value (the zero) may be located to a higher precision -than the function value. Conversely, if the graph of a function crosses -the $x$-axis gently (at a shallow angle) then the function value -will vanish to a greater number of decimal places than the zero (the -$x$ value) is located. - -A second example, which we can check with values tabulated in \emph{HMF}, -is -\begin{centred} -\verb`\solve{$ \tan x - \lambda x $}[\lambda=-1/0.8,{x}=1][5]` $\Longrightarrow$ -\solve{$ \tan x - \lambda x $}[\lambda=-1/0.8,{x}=1][5]. -\end{centred} -Table 4.19 of \emph{HMF }lists values of $x$ against $\lambda$ and -this is the value tabulated there. - -\section{Extrema} - -A function may not have a zero or for the given initial trial value -and initial step in the search for a zero there may be a local extremum -in the way. In that case \texttt{numerica} may well locate the local -extremum (maximum or minimum but not a saddle point). For example -for the quadratic $(2x-1)^{2}+3x+1$ the \verb`\solve` command gives -the result -\begin{centred} -\verb`\solve[vvi=]{$ (2x-1)^2+3x+1 $}[x=2]` $\Longrightarrow$\solve[vvi=]{$ (2x-1)^2+3x+1 $}[{x}=2]. -\end{centred} -Since $(2x-1)^{2}+3x+1\ne0$ for any (real number) $x$, we deduce -that the quadratic takes a minimum value $1.9375$ at $x=0.125$ \textendash{} -easily confirmed analytically. This particular minimum is a global -minimum but in general any extremum found is only \emph{local}. The -function may well take larger or smaller values (or vanish for that -matter) further afield. - -It is also worth noting in this example the \verb`vvi=` in the settings -option which suppresses display of the vv-list. (The only member of -the vv-list is the trial value \verb`x=2` which we do not want to -display.) - -\noindent\begin{minipage}[t]{1\columnwidth}% -\begin{shaded}% -Note that the function for which a zero is being sought is \emph{not} -equated to zero when entered in the \verb`\solve` command. It is -\verb`\solve{ f(x) }`, not \verb`\solve{ f(x)=0 }`. This is precisely -because it may be an extremum that is found rather than a zero (if -extremum or zero is found at all \textendash{} think $e^{x}$). The -display of the result makes clear which is which, equating $f(x)$ -to its value, zero or extremum depending on what has been found, as -you can see in the preceding examples.\end{shaded}% -\end{minipage} - -\subsection{The search strategy} - -\label{subsec:solveSearch-strategy}If you have some sense of where -a function has a zero, then choose a trial value in that vicinity. -\verb`\solve` uses a bisection method to home in on the zero. It -therefore needs \emph{two} initial values. For the first it uses the -trial value you specify, call it $a$ and for the second, by default, -it uses $a+1$. (The default value $1$ for the initial step from -the trial value can be changed in the settings option; see §\ref{sec:solveSettings-option}.) -If $f(a)$ and $f(a+1)$ have opposite signs then that is good. Bisection -of the interval $[a,a+1]$ can begin immediately in order to home -in on the precise point where $f$ vanishes. Write $b=a+1$. -\begin{itemize} -\item Let $c=\tfrac{1}{2}(a+b)$; if $f(c)=0$ the zero is found; otherwise -either $f(a),f(c)$ are of opposite signs or $f(c),f(b)$ are of opposite -signs. In the former case write $a_{1}=a,$ $b_{1}=c$; in the latter -case write $a_{1}=c$, $b_{1}=b$ and then redefine $c=\tfrac{1}{2}(a_{1}+b_{1})$. -Continue the bisection process, either until an exact zero $c$ of -$f$ is reached ($f(c)=0$) or a value $c$ is reached where the difference -between $a_{n+1}$ and $b_{n+1}$ is zero at the specified rounding -value. (But note, $f(c)$ may not vanish at that rounding value \textendash{} -the zero might be elsewhere in the interval and $f$ might cross the -axis at a steep slope.) -\end{itemize} -However $f(a)$ and $f(b)=f(a+1)$ may not have opposite signs. If -we graph the function $y=f(x)$ and suppose $f(a),f(b)$ are distinct -but of the same sign, then the line through the points $(a,f(a))$, -$(b,f(b))$ will intersect the $x$-axis to the left of $a$ or the -right of $b$ depending on its slope. We search always \emph{towards -the $x$-axis} in steps of $b-a$ ($=1$ with default values). -\begin{itemize} -\item If the line intersects the axis to the left of $a$ then $c=a-(b-a)$ -and we set $a_{1}=c,b_{1}=a$; if the line intersects the axis to -the right of $b$ then $c=b+(b-a)$ and we set $b_{1}=c,a_{1}=b$. -The hope is that by always taking steps in the direction towards the -$x$-axis that eventually $f(c)$ will be found to lie on the \emph{opposite} -side of the axis from $f(a_{n})$ or $f(b_{n})$, at which point the -bisection process begins. -\item Of course this may not happen. At some point $c$ may lie to the left -of $a_{n}$ but $\left|f(c)\right|>\left|f(a_{n})\right|$, or $c$ -may lie to the right of $b_{n}$ but $\left|f(c)\right|>\left|f(b_{n})\right|$. -The slope has reversed. In that case we halve the step value to $\tfrac{1}{2}(b-a)$ -and try again in the same direction as before from the same point -as before ($a_{n}$ or $b_{n}$ as the case may be). -\item Should we find at some point that $f(a_{n})=f(b_{n})$ then the previous -strategy does not apply. In this case we choose $a_{n+1}$ and \textbf{$b_{n+1}$} -at the quarter and three-quarter marks between $a_{n}$ and $b_{n}$. -Either $f(a_{n+1})$ and $f(b_{n+1})$ will differ and the previous -search strategy can start again or we are on the way to finding an -extremum of $f$. -\end{itemize} -As already noted it is also possible that our function has neither -zeros nor extrema. To prevent the search continuing indefinitely, -\texttt{numerica} uses a cut-off value for the maximum number of steps -pursued \textendash{} by default set at 100. - -\subsubsection{Elusive extrema} - -The strategy `search always towards the $x$-axis' has a consequence: -it means that a local maximum above the $x$-axis will almost certainly -not be found, since `towards the $x$-axis' pulls the search away -from the maximum. Similarly a local minimum below the $x$-axis will -also not be found since `towards the $x$-axis' pulls the search -away from the minimum. - -One way of countering this elusiveness is to add a constant value -(possibly negative) to the function whose zeros and extrema are being -sought. The zeros of the function will change but the abscissae ($x$ -values) of the extrema remain unchanged. If the constant is big enough -it will push a local minimum above the axis where it can be found -or, for a negative constant, push a local maximum below the axis where -it can be found. - -For example $f(x)=x^{3}-x$ has roots at $-1,0,1$, a local maximum -at $-\tfrac{1}{\surd3}$ and a local minimum at $\tfrac{1}{\surd3}$. -To locate the minimum, I have added an unnecessarily large constant -$k$ to $f(x)$. ($k=1$ would have sufficed, but note, $k=0$ fails.) -\begin{centred} -\verb`\solve{$ x^3-x+k $}[k=5,{x}=0.5]` $\Longrightarrow$ \solve{$ x^3-x+k $}[k=5,{x}=0.5]. -\end{centred} -Checking, \verb`\eval{$\tfrac1{\surd 3}$}` $\Longrightarrow$ \eval{$\tfrac1{\surd 3}$}. -There is a discrepancy in the $6$th decimal place which can be eliminated -by using the extra rounding setting; see §\ref{subsec:solveExtraRounding}. - -\section{Star (\texttt{{*}}) option} - -A starred form of the\textbf{ }\verb`\nmcSolve` command suppresses -all elements of display of the result apart from the numerical value. -When nesting a \verb`\solve` command within another command this -is the form to use. Thus with the `elusive' extremum example above, -we can find the actual value of the minimum by nesting the starred -\verb`\solve` command within the vv-list of an \verb`\eval` command: -\begin{centred} -\verb`\eval{$ x^3-x $}[x={\solve*{y^3-y+k}[k=5,y=0.5]}]` $\Longrightarrow$ -\eval{$ x^3-x $}[x={\solve*{y^3-y+k}[k=5,y=0.5]}]. -\end{centred} -(Note the braces around the \verb`\solve*` and arguments to hide -\emph{its} square-bracketed vv-list from the parsing of the vv-list -of the \verb`\eval` command.) The result is to be compared with \verb`$\eval*{x^3-x}[x=\tfrac1{\surd3}]$` -$\Longrightarrow$ $\eval*{x^3-x}[x=\tfrac1{\surd3}]$. - -\section{Settings option} - -\label{sec:solveSettings-option}The settings option is a comma-separated -list of items of the form \emph{key~=~value}. - -\subsection{Inherited settings} - -The keys discussed in the settings\emph{ }option for \verb`\nmcEvaluate` -are also available for \verb`\nmcSolve`. The very first example in -this chapter used the punctuation option \texttt{p} (\verb`\solve[p]{\[... `) -inherited from the \verb`\eval` command to ensure a comma after the -display-style presentation of the result. We also saw in the quadratic -example illustrating extrema the use of \texttt{vvi} with no value -to suppress display of the vv-list: \verb`\solve[vvi=]{$ ...`. - -Putting \verb`dbg=1` produces a familiar kind of display. Using the -function -\[ -ct-\sqrt{a^{2}+b^{2}-2ab\cos(\beta+\omega t)} -\] -from the rotating disk problem, -\begin{verbatim} - \solve[dbg=1,var=t,p=.,vvd={,}\\(vv)\\,*] - {$ ct-\sqrt{a^{2}+b^{2}-2ab\cos(\beta+\omega t)} - $}[c=30,a=10,b=20,\beta=1,\omega=0.1,{t}=0][4] -\end{verbatim} -$\Longrightarrow$ \solve[dbg=1,var=t,p=.,vvd={,}\\(vv)\\,*] - {$ ct-\sqrt{a^{2}+b^{2}-2ab\cos(\beta+\omega t)} - $}[c=30,a=10,b=20,\beta=1,\omega=0.1,{t}=1][4] - -\subsubsection{Multi-line display of the result} - -\label{subsec:solveMulti-line-display}By default the result is presented -on a single line. Unless the star option is being used, this can be -of the form \emph{function = function value, (vv-list) $\rightarrow$ -result}. It takes only a slightly complicated formula and only a few -variables in the vv-list before this becomes a crowded line, likely -to exceed the line width and extend into the margin. To split the -display over two lines choose a \texttt{vvd} specification in the -vv-list like, for instance, \texttt{vvd=\{,\}\textbackslash\textbackslash (vv)}. -The \texttt{\textbackslash\textbackslash} is a trigger for \texttt{numerica} -to replace whatever environment the \texttt{\textbackslash eval} -command is wrapped around with a \texttt{multline} environment. An -asterisk in the vv-list replaces \texttt{multline} with \texttt{multline{*}} -so that no equation number is used: -\begin{verbatim} - \solve[p=.,vvd={,}\\(vv),*] - {$ ct-\sqrt{a^{2}+b^{2}-2ab\cos(\beta+\omega t)} - $}[c=30,a=10,b=20,\beta=1,\omega=0.1,{t}=0][4] -\end{verbatim} -$\Longrightarrow$ \solve[p=.,vvd={,}\\(vv),*] - {$ ct-\sqrt{a^{2}+b^{2}-2ab\cos(\beta+\omega t)} - $}[c=30,a=10,b=20,\beta=1,\omega=0.1,{t}=0][4] -\begin{verbatim} - -\end{verbatim} -You could introduce a third line if you wished to display the result -on a line of its own by using the spec. \texttt{vvd=\{,\}\textbackslash\textbackslash (vv)\textbackslash\textbackslash}: -\begin{verbatim} - \solve[p=.,vvd={,}\\(vv)\\,*] - {$ ct-\sqrt{a^{2}+b^{2}-2ab\cos(\beta+\omega t)} - $}[c=30,a=10,b=20,\beta=1,\omega=0.1,{t}=0][4] -\end{verbatim} -$\Longrightarrow$ \solve[p=.,vvd={,}\\(vv)\\,*] - {$ ct-\sqrt{a^{2}+b^{2}-2ab\cos(\beta+\omega t)} - $}[c=30,a=10,b=20,\beta=1,\omega=0.1,{t}=0][4] - -The function evaluates to $-0.0015$. Is this a zero that has been -found or an extremum? To find out, the calculation needs to be carried -out to a higher rounding value which is the reason why \verb`\nmcSolve` -has an extra rounding setting; see §\ref{subsec:solveExtraRounding} -below. - -\subsection{\texttt{\textbackslash solve}-specific settings} - -In addition there are some settings peculiar to \verb`\nmcSolve`. -These are listed in Table~\ref{tab:solveSettings}. - -\begin{table} -\centering{}\caption{\protect\label{tab:solveSettings}Settings for \texttt{\textbackslash nmcSolve}} -\begin{center} -\begin{tabular}{llll} -\toprule -{\small key} & {\small type} & {\small meaning} & {\small default}\tabularnewline -\midrule -{\small\texttt{var}} & {\small token(s)} & {\small equation variable} & \tabularnewline -{\small\texttt{dvar}} & {\small real $\ne0$ } & {\small initial step size} & {\small\texttt{1}}\tabularnewline -{\small\texttt{+}} & {\small int} & {\small extra rounding} & {\small\texttt{0}}\tabularnewline -{\small\texttt{max}} & {\small int > 0} & {\small max. number of steps before cut off} & {\small\texttt{100}}\tabularnewline -{\small\texttt{reuse}} & {\small int ($\mathtt{0}/\mathtt{1}$)} & {\small form of result saved with }{\small{\small\verb`\reuse`}} & {\small\texttt{0}}\tabularnewline -\bottomrule -\end{tabular} -\par\end{center} -\end{table} - - -\subsubsection{Equation variable} - -By default the equation variable is the \emph{rightmost} variable -in the vv-list. This may not always be convenient. A different equation -variable can be specified by entereing -\begin{lyxcode} -var~=~<variable~name> -\end{lyxcode} -in the vv-list. \texttt{<variable name>} will generally be a single -character or token \textendash{} $x$, $t$, $\alpha$, $\omega$ -\textendash{} but is not necessarily of this kind. Multi-token names -are perfectly acceptable (with the default \texttt{xx=1} multi-token -setting). - -\subsubsection{Initial step size} - -The vv-list must contain the equation variable set to some trial value. -But \verb`\solve` needs \emph{two} initial values to begin its search -for a zero or extremum; see §\ref{subsec:solveSearch-strategy}. If -the equation variable is set to a trial value $a$ then by default -the second value is $a+1$. The `$+1$' here can be changed by entering -in the settings option -\begin{lyxcode} -dvar~=~<non-zero~real~number> -\end{lyxcode} -For instance, \texttt{dvar=-1}, or \texttt{dvar=\textbackslash pi} -are two valid specifications of initial step size. - -The notation is prompted by the use of expressions like $x+dx$ in -calculus. - -An example where the default step value is too big and a smaller one -needs to be specified is provided by Planck's radiation function (\emph{HMF -}Table 27.2), -\[ -f(x)=\frac{1}{x^{5}(e^{1/x}-1)}. -\] -From the (somewhat coarse-grained) table in \emph{HMF }it is clear -that there is a maximum of about 21.2 when $x$ is a little more than -$0.2$. This is a maximum above the $x$-axis and hence `elusive'. -To find it, substract $100$ (say) from the formula and again use -the ability to nest commands to display the result. Note the \verb`dvar=0.1` -in the settings option of the \verb`\solve*` command: -\begin{verbatim} - \eval[p=.]{\[ \frac1{x^5(e^{1/x}-1)} \]} - [ x={ \solve*[dvar=0.1] - { \frac1{y^5(e^{1/y}-1)}-100 }[y=0.1] - } ] -\end{verbatim} -$\Longrightarrow$ \eval[p=.]{\[ \frac1{x^5(e^{1/x}-1)} \]} - [ x={ \solve*[dvar=0.1] - { \frac1{y^5(e^{1/y}-1)}-100 }[y=0.1] - } ] - -\noindent The maximum is indeed a little over $21.2$ and the $x$ -value a little more than $0.2$. - -The default \verb`dvar=1` is too big for this problem. From the table -in \emph{HMF},\emph{ }$f(0.1)=4.540$ and $f(1.1)=0.419$. By subtracting -$100$ from $f(x)$ the `towards the $x$-axis' search strategy -leads to negative values of $x$, an artifact of the subtraction. - -\subsubsection{Extra rounding} - -\label{subsec:solveExtraRounding}\verb`\solve` determines that a -zero or an extremum has been reached when the difference between two -successive bisection values or step values vanishes at the specified -rounding value (the value in the final trailing optional argument -of the \verb`\solve` command; $6$ by default). If our function is -$f(x)$ then $\abs{x_{n+1}-x_{n}}=0$ to the specified rounding value -and (assuming $x_{n+1}>x_{n}$) there is a critical value $x_{c}\in[x_{n},x_{n+1}]$ -such that $f(x_{c})=0$ (to all 16 places of decimals that \texttt{l3fp} -works to). But in general the critical value $x_{c}$ will not coincide -with $x_{n}$ or $x_{n+1}$. If $f(x)$ crosses the $x$-axis at a -steep angle it may well be that although $f(x_{c})$ vanishes to all -$16$ places of decimals, $f(x_{n}),f(x_{n+1})$ may well not vanish -at the (generally smaller) specified rounding value. For instance, -suppose $f(x)=1000x-3000$. -\begin{centred} -\verb`\solve[vvi=]{$ 1000x-3000 $}[x=e][4*]` $\Longrightarrow$ \solve[vvi=]{$ 1000x-3000 $}[x=e][4*]. -\end{centred} -In this example, although the difference between successive $x$ values -vanishes to $4$ places of decimals, $f(x)$ does not, not even to -$2$ places. - -This suggests it would be helpful to be able to use two rounding values, -one to determine when a zero has been found and one for the visible -display. This is done through the extra rounding key in the settings -option. Enter -\begin{lyxcode} -+~=~<integer> -\end{lyxcode} -in the settings option of the \verb`\solve` command to add \texttt{<integer>} -to the rounding value determining the conclusion of the calculation. -By default the setting is \texttt{+=}0. The extra rounding setting -leaves the display rounding unaffected. - -With this option available it is easy to check that \verb`+=3` suffices -to ensure that both $x$ and $f(x)$ vanish to $4$ places of decimals, -\begin{centred} -\verb`\solve[+=3]{$ 1000x-3000 $}[x=e][4*]` $\Longrightarrow$ \solve[+=3]{$ 1000x-3000 $}[x=e][4*], -\end{centred} -and that \texttt{+=2} does not, i.e., we need to locate the zero to -$4+3=7$ figures to ensure the function vanishes to $4$ figures. - -There is no need for the \texttt{<integer>} to be positive. In fact -negative values can illuminate what is going on. In the first of the -following, the display is to $10$ places but the calculation is only -to $10-4=6$ places. In the second, the display is again to $10$ -places, but the calculation is to $10-3=7$ places. -\begin{centred} -\verb`\solve[+=-4]{$ 1000x-3000 $}[x=e][10*]` $\Longrightarrow$ -\solve[+=-4]{$ 1000x-3000 $}[x=e][10*], - -\verb`\solve[+=-3]{$ 1000x-3000 $}[x=e][10*]` $\Longrightarrow$ -\solve[+=-3]{$ 1000x-3000 $}[x=e][10*]. -\end{centred} -Only in the second does $f(x)=1000x-3000$ vanish when rounded to -$4$ figures. - -Returning to an earlier example (§\ref{subsec:solveMulti-line-display}) -in which it was not entirely clear whether a zero or an extremum had -been found, we can now resolve the confusion. Use the extra rounding -setting (and pad with zeros to emphasize the $4$-figure display by -adding an asterisk in the trailing optional argument): -\begin{verbatim} - \solve[+=2,vvd={,}\\(vv),*] - {$ - ct-\sqrt{a^{2}+b^{2}-2ab\cos(\beta+\omega t)} - $}[c=30,a=10,b=20,\beta=1,\omega=0.1,{t}=0][4*] -\end{verbatim} -$\Longrightarrow$ \solve[+=2,vvd={,}\\(vv),*] - {$ - ct-\sqrt{a^{2}+b^{2}-2ab\cos(\beta+\omega t)} - $}[c=30,a=10,b=20,\beta=1,\omega=0.1,{t}=0][4*] - -\subsubsection{Maximum number of steps before cut-off} - -Once two function values have been found of opposite sign, bisection -is guaranteed to arrive at a result. The problem is the \emph{search} -for two such values. This may not terminate \textendash{} think of -functions like $e^{x}$or $1/x$ which lack both zeros and extrema. -To prevent an infinite loop, \verb`\solve` cuts off the search after -$100$ steps. This cut-off value can be changed for a calculation -by entering -\begin{lyxcode} -max~=~<positive~integer> -\end{lyxcode} -in the settings option. - -To illustrate, we know that $1/x$ has neither zero nor extremum, -but we do not get an infinite loop; we get an error message if we -attempt to `solve' $1/x$: -\begin{centred} -\verb`\solve{ 1/x }[x=1]` $\Longrightarrow$ \solve{ 1/x }[x=1] -\end{centred} - -\subsubsection{Form of result saved by \texttt{\textbackslash reuse}} - -As wth \verb`\eval` and \verb`\iter` it is possible to specify to -some extent what is saved to file when using \verb`\reuse` after -a \verb`\solve` command. The form of entry in the settings option -is -\begin{lyxcode} -reuse~=~<integer> -\end{lyxcode} -If the star option is used with the \verb`\solve` command the numerical -result is the only thing saved, but in the absence of the star option, -\begin{itemize} -\item \texttt{reuse=0} saves\emph{ the form that is displayed}. For example, -if the display is of the form \emph{function = function value, (vv-list) -$\rightarrow$ result} then that is what is saved; this is the default -behaviour; -\item \texttt{reuse=1} (or any non-zero integer) saves only the numerical -result. -\end{itemize} - -\subsection{Changing default values} - -\begin{wraptable}[12]{o}{0.5\columnwidth}% -\centering{}\caption{\protect\label{tab:solveSettingsDefaults}Defaults for \texttt{\textbackslash nmcSolve}} -\begin{center} -\begin{tabular}{ll} -\toprule -{\small key} & {\small default}\tabularnewline -\midrule -{\small solve-first-step} & 1\tabularnewline -{\small solve-extra-rounding} & {\small\texttt{0}}\tabularnewline -{\small solve-max-steps} & {\small\texttt{100}}\tabularnewline -{\small solve-reuse} & {\small\texttt{0}}\tabularnewline -\bottomrule -\end{tabular} -\par\end{center}\end{wraptable}% -If you wish to change the default values of the various settings for -\verb`\nmcSolve` this can be done by entering new values in a configuration -file \texttt{numerica.cfg} as described in the chapter on settings -in the associated document \texttt{numeric-basics.pdf}. The relevant -keys are listed in Table~\ref{tab:solveSettingsDefaults}, corresponding -to the \verb`dvar`, \verb`+`, \verb`max` and \verb`reuse` settings -of the \verb`\solve` command. (Obviously it makes no sense to have -a default setting for the solution variable. That will change from -case to case.) - -\chapter{Recurrence relations: \texttt{\textbackslash nmcRecur}} - -One of the simplest recurrence relations is that determining the Fibonacci -numbers, $f_{n+2}=f_{n+1}+f_{n}$, with initial values $f_{0}=f_{1}=1$. -The command \verb`\nmcRecur`, short-name form \verb`\recur`, allows -calculation of the terms of this sequence: -\begin{verbatim} - $ \nmcRecur[do=8,see1=8,...] - { f_{n+2}=f_{n+1}+f_{n} } - [f_{1}=1,f_{0}=1] $ -\end{verbatim} -$\Longrightarrow$ $\nmcRecur[do=8,see1=8,...] - { f_{n+2}=f_{n+1}+f_{n} } - [f_{1}=1,f_{0}=1]$ - -The recurrence relation is entered in the main argument (between braces), -the initial values in the vv-list trailing the main argument, and -the display specification is placed in the settings option: \texttt{do=8} -terms to be calculated, all $8$ to be viewed (\texttt{see1=8}), and -the display to be concluded by an ellipsis to indicate that the sequence -continues (but those are three dots/periods/full stops in the settings -option). - -A more complicated recurrence relation determines the Legendre polynomials: -\[ -(n+2)P_{n+2}(x)-(2n+3)xP_{n+1}(x)+(n+1)P_{n}(x)=0. -\] -For the purposes of \verb`\recur` we need $P_{n+2}$ expressed in -terms of the lower order terms: -\[ -P_{n+2}(x)=\frac{1}{n+2}\left((2n+3)xP_{n+1}(x)-(n+1)P_{n}(x)\right). -\] - It is this standard form \textendash{} the term to be calculated -on the left, equated to an expression involving a fixed number of -lower-order terms on the right \textendash{} that \texttt{numerica} -works with. For $P_{0}(x)=1,~P_{1}(x)=x$ and $x=0.5$, the terms -are calculated thus: -\begin{verbatim} - \recur[p,do=11,see1=4,see2=2,vvd={,}\\(vv)\\,*] - {\[ P_{n+2}(x)=\frac{1}{n+2} - \Bigl((2n+3)xP_{n+1}(x)-(n+1)P_{n}(x)\Bigr) - \]}[P_{1}(x)=x,P_{0}(x)=1,x=0.5] -\end{verbatim} -$\Longrightarrow$ \recur[p,do=11,see1=4,see2=2,vvd={,}\\(vv)\\,*] - {\[ P_{n+2}(x)=\frac{1}{n+2} - \Bigl((2n+3)xP_{n+1}(x)-(n+1)P_{n}(x)\Bigr) - \]}[P_{1}(x)=x,P_{0}(x)=1,x=0.5] - -\noindent where $P_{9}(0.5)$ and $P_{10}(0.5)$ are the last two -displayed values (and to $6$-figures are the values listed in \emph{HMF -}Table 8.1). - -These examples also illustrate a common behaviour of the \texttt{numerica} -commands: when wrapped around math delimiters: the display is of the -\emph{expression=result} form, and when placed between math delimiters -the display is simply of the \emph{result}. When used without math -delimiters, \texttt{numerica} treats the command as if it had been -placed between \texttt{\textbackslash{[} \textbackslash}{]}. - -\section{Notational niceties} - -More than the other commands in \texttt{numerica}, \verb`\nmcRecur` -depends on getting the notation into a standard form. -\begin{itemize} -\item The terms of the recurrence must be \emph{subscripted}: $f_{n}$, -$P_{n}(x)$ are examples. -\item The recurrence relation is placed in the main (mandatory) argument -of \verb`\nmcRecur` in the form: \emph{high-order term=function of -lower-order terms}. -\item The initial-value terms in the vv-list must occur left-to-right in -the order \emph{high }to \emph{low} order. -\item The recurrence variable changes by $1$ between successive terms. -\end{itemize} -The example for Legendre polynomials in particular shows what is required. -The Fibonacci example is simpler, since the recurrence variable does -not occur independently in the recurrence relation as it does with -the Legendre polynomials. In both cases though the recurrence variable -is absent from the vv-list. - -\subsection{Vv-list and recurrence variable} - -The recurrence variable is required in the vv-list only when an implicit -mode calculation is undertaken. Suppose we write $A$ and $B$ for -the coefficients $2n+3$ and $n+1$ respectively in the Legendre recurrence. -$A$ and $B$ will now need entries in the vv-list which means the -recurrence variable will need a value assigned to it there too, and -we will need to add \texttt{vvmode=1} to the settings option. -\begin{verbatim} - \recur[p,vvmode=1,do=11,see1=4,see2=2,vvd={,}\\(vv)\\,*] - {\[ P_{n+2}(x)=\frac{1}{n+2} - \Bigl(AxP_{n+1}(x)-BP_{n}(x)\Bigr) - \]}[P_{1}(x)=x,P_{0}(x)=1,x=0.5,A=2n+3,B=n+1,n=0] -\end{verbatim} -$\Longrightarrow$ \recur[p,vvmode=1,do=11,see1=4,see2=2,vvd={,}\\(vv)\\,*] - {\[ P_{n+2}(x)=\frac{1}{n+2} - \Bigl(AxP_{n+1}(x)-BP_{n}(x)\Bigr) - \]}[P_{1}(x)=x,P_{0}(x)=1,x=0.5,A=2n+3,B=n+1,n=0] - -Since the vv-list is evaluated from the right, the left-to-right high-to-low -ordering of the initial-value terms means the value of the lowest -order term is read first. Although \texttt{numerica} depends on this -order of occurrence of the terms, they do not need to be \emph{consecutive} -as in the examples so far (although it is natural to enter them in -this way). \texttt{numerica} reads the value of the subscript of only -the right-most term (the lowest order term), increments it by $1$ -when reading the next recurrence term to the left, and so on. The -reading of the subscript of the lowest order term in the vv-list provides -the initial value of the recurrence variable. - -In the following example I have placed other items between $P_{1}(x)$ -and $P_{0}(x)$ in the vv-list (but maintained their left-to-right -order) and given the recurrence variable $n$ a ridiculous initial -value $\pi^{2}/12$. (Because of the order in which things get done -`behind the scenes', \emph{some} value is necessary so that the -$n$ in `$B=n+1$' does not generate an `unknown token' message.) -The result is unchanged. -\begin{verbatim} - \recur[p,vvmode=1,do=11,see1=4,see2=2,vvd={,}\\(vv)\\,*] - {\[ P_{n+2}(x)=\frac{1}{n+2} - \Bigl(AxP_{n+1}(x)-BP_{n}(x)\Bigr) - \]}[A=2n+3,P_{1}(x)=x,B=n+1,n=\pi^2/12,P_{0}(x)=1,x=0.5] -\end{verbatim} -$\Longrightarrow$ \recur[p,vvmode=1,do=11,see1=4,see2=2,vvd={,}\\(vv)\\,*] - {\[ P_{n+2}(x)=\frac{1}{n+2} - \Bigl(AxP_{n+1}(x)-BP_{n}(x)\Bigr) - \]}[A=2n+3,P_{1}(x)=x,B=n+1,n=\pi^2/12,P_{0}(x)=1,x=0.5] - -\subsection{Form of the recurrence relation} - -As noted earler, the form of the recurrence must be entered in the -main argument in the form: \emph{highest order term = function of -consecutive lower order terms}. The number of lower\emph{ }order terms -is the order of the recurrence. The Fibonacci and Legendre polynomial -recurrences are both second order and presented in the form: \emph{$n+2$-th -term = function of $n+1$-th term and $n$-th term}. We could equally -have done -\begin{verbatim} - \nmcRecur[p,do=8,see1=8,...] - {$ f_{n}=f_{n-1}+f_{n-2} $} - [f_{1}=1,f_{0}=1] -\end{verbatim} -$\Longrightarrow$ \nmcRecur[p,do=8,see1=8,...] - {$ f_{n}=f_{n-1}+f_{n-2} $} - [f_{1}=1,f_{0}=1] where now the recurrence is of the form $n$\emph{-th term = function -of $n-1$-th term and $n-2$-th term}, or (adjusting the coefficients -as well as the recurrence terms), -\begin{verbatim} - \recur[p=.,do=10,see1=4,see2=2,vvd={,}\\(vv)\\,*]{\[ - P_{n+1}(x)=\frac{1}{n+1} - \Bigl((2n+1)xP_{n}(x)-nP_{n-1}(x)\Bigr) - \]}[P_{2}(x)=-0.125,P_{1}(x)=x,x=0.5] -\end{verbatim} -$\Longrightarrow$ \recur[p=.,do=10,see1=4,see2=2,vvd={,}\\(vv)\\,*]{\[ - P_{n+1}(x)=\frac{1}{n+1} - \Bigl((2n+1)xP_{n}(x)-nP_{n-1}(x)\Bigr) - \]}[P_{2}(x)=-0.125,P_{1}(x)=x,x=0.5] - -\noindent The recurrence here is of the form $n+1$\emph{-th term -= function of $n$-th term and $n-1$-th term}. This last example -has one further `wrinkle'. I've made $P_{1}(x)$ the lowest order -term and decreased the number of terms to calculate by $1$ accordingly. - -\subsection{First order recurrences (iteration)} - -The recurrence relations for both the Fibonacci sequence and Legendre -polynomials are second order. There is no reason why the recurrence -should not be of third or higher order or, indeed, lower. A first -order recurrence provides an alternative means of iterating functions. -\verb`\recur` therefore provides a means to display the results of -an iteration in a different form from \verb`\iter`. - -Iterating $1+a/x$ in this way, $16$ terms gives the sequence -\begin{verbatim} - \recur[do=16,see1=0,see2=3,...]{$ - x_{n+1}=1+a/x_{n} - $}[x_{0}=1,a=1] -\end{verbatim} -$\Longrightarrow$ \recur[do=16,see1=0,see2=3,...]{$ - x_{n+1}=1+a/x_{n} - $}[x_{0}=1,a=1] - -\noindent to be compared with the example near the start of Chapter~\ref{chap:Iterating-functions}. -(\emph{That} effected $15$ iterations; \emph{this} uses $16$ terms -because of the extra $x_{0}=1$ term.) - -\section{Star (\texttt{{*}}) option} - -When the star option is used with the \verb`\nmcRecur` command, only -a single term, the \emph{last}, is presented as the result. Repeating -the last calculation, but with the star option produces -\begin{verbatim} - \recur*[p=.,do=10]{\[ - P_{n+1}(x)=\frac{1}{n+1} - \Bigl((2n+1)xP_{n}(x)-nP_{n-1}(x)\Bigr) - \]}[P_{2}(x)=-0.125,P_{1}(x)=x,x=0.5] -\end{verbatim} -$\Longrightarrow$ \recur*[p=.,do=10]{\[ - P_{n+1}(x)=\frac{1}{n+1} - \Bigl((2n+1)xP_{n}(x)-nP_{n-1}(x)\Bigr) - \]}[P_{2}(x)=-0.125,P_{1}(x)=x,x=0.5] - -Although punctuation (a full stop) was specified in the settings, -it has been ignored in the display of the result. Other settings would -also have been ignored with the exception of the \verb`do` key which -is required to know exactly which term to calculate. The star option -produces a purely numerical answer without any trimmings. - -\section{Settings} - -The settings option is a comma-separated list of items of the form -\emph{key~=~value}. - -\subsection{Inherited settings} - -Because recurrence terms are necessarily multi-token, the multi-token -key is hard-coded in \verb`\recur` to \texttt{xx=1}. - -\subsubsection{Multi-line formatting of result} - -When the \verb`\recur` command wraps around math delimiters, the -\texttt{vvd} setting is available to split display of the result over -two or more lines. For example, \texttt{vvd=\{,\}\textbackslash\textbackslash (vv)}pushes -the vv-list and sequence of calculated values to a second line; or, -\texttt{vvd=\{,\}\textbackslash qquad(vv)\textbackslash\textbackslash} -pushes only the sequence of calculated values to a second line; or -\texttt{vvd=\{,\}\textbackslash\textbackslash (vv)\textbackslash\textbackslash} -pushes the vv-list, centred, to a second line and the sequence of -values, right aligned, to a third line. The \texttt{{*}} setting is -available to suppress equation numbering (by substituting \verb`multline*` -for \verb`multline`). -\begin{verbatim} - \nmcRecur[do=8,see1=8,...,vvd={,}\qquad(vv)\\,*] - {$ f_{n+2}=f_{n+1}+f_{n} $} - [f_{1}=1,f_{0}=1] -\end{verbatim} -$\Longrightarrow$ \nmcRecur[do=8,see1=8,...,vvd={,}\qquad(vv)\\,*] - {$ f_{n+2}=f_{n+1}+f_{n} $} - [f_{1}=1,f_{0}=1] - -\subsection{\texttt{\textbackslash recur}-specific settings} - -\label{subsec:recurSpecific-settings} - -\subsubsection{Number of terms to calculate} - -By entering -\begin{lyxcode} -do~=~<integer> -\end{lyxcode} -in the settings option you can specify how many terms of a recurrence -to calculate. The default is set to $7$ (largely to show a sufficient -number of terms of the Fibonacci series to begin to be interesting). -Note that \texttt{<integer>} will generally not correspond to the -subscript on the last term calculated since that also depends on the -value of the subscript of the lowest order term in the vv-list. - -\subsubsection{Number of terms to display} - -\begin{table} -\centering{}\caption{\protect\label{tab:solveSettings-1}Settings for \texttt{\textbackslash nmcRecur}} -\begin{center} -\begin{tabular}{llll} -\toprule -{\small key} & {\small type} & {\small meaning} & {\small default}\tabularnewline -\midrule -{\small\texttt{do}} & {\small int$\ge0$} & {\small number of terms to calculate} & {\small\texttt{7}}\tabularnewline -{\small\texttt{see1}} & {\small int$\ge0$} & {\small number of initial terms to display} & {\small\texttt{3}}\tabularnewline -{\small\texttt{see2}} & {\small int$\ge0$} & {\small number of final terms to display} & {\small\texttt{2}}\tabularnewline -{\small\texttt{...}} & {\small chars} & {\small follow display of values with an ellipsis} & \tabularnewline -{\small\texttt{reuse}} & {\small int ($\mathtt{0}/\mathtt{1}/\mathtt{2}$)} & {\small form of result saved with }{\small{\small\verb`\reuse`}} & {\small\texttt{0}}\tabularnewline -\bottomrule -\end{tabular} -\par\end{center} -\end{table} -By entering -\begin{lyxcode} -see1~=~<integer1>,~see2=<integer2> -\end{lyxcode} -in the settings option, you can specify how many initial terms of -the recurrence and how many of the final terms calculated you want -to view. If the sum of these settings is less than the \texttt{do} -setting, then the terms are displayed with an intervening ellipsis. -If the sum is greater than the \texttt{do} setting, then the values -are adjusted so that their sum equals the \texttt{do} setting and -all terms are displayed. - -The adjustment is preferentially to \texttt{see1}. Suppose \texttt{do=}7, -\texttt{see1=5}, \texttt{see2=4}. Then \texttt{see2} is left unchanged -but \texttt{see1} is reduced to \texttt{7-4=3}. If, say, \texttt{do=}7, -\texttt{see1=5}, \texttt{see2=8}, then \texttt{see2} is reduced to -\texttt{7} and \texttt{see1} to \texttt{-1} (rather than zero, for -technical reasons). The reason for preserving \texttt{see2} over \texttt{see1} -is for the functioning of the \texttt{reuse} setting (see above). - -The default value for \texttt{see1} is $3$; the default value for -\texttt{see2} is $2$. - -\subsubsection{Ellipsis} - -Including three dots in the settings option -\begin{lyxcode} -... -\end{lyxcode} -ensures that a (proper) ellipsis is inserted after the final term -is displayed. An example is provided by the display of the Fibonacci -sequence at the start of this chapter. By default this option is turned -off. - -\subsubsection{Form of result saved by \texttt{\textbackslash reuse}} - -By entering -\begin{lyxcode} -reuse~=~<integer> -\end{lyxcode} -it is possible to specify the form of result that is saved when using -\verb`\nmcReuse`. (This setting has no effect when the star option -is used with \verb`\nmcRecur`. In that case only the numerical result -of the final term calculated is saved.) There are three different -outputs possible: -\begin{itemize} -\item \texttt{int=0} (or any integer $\mathtt{\ne1,2}$) saves the full -display (the default); -\item \texttt{int=1} saves a comma-separated list of braced pairs of the -form: \texttt{\{$k$, value-of-term-$k$\}} for the last \texttt{see2} -terms calculated; -\item \texttt{int=2} saves a comma-separated list of the values of the last -\texttt{see2} terms calculated. -\end{itemize} -As an example, using \texttt{reuse=1}, -\begin{verbatim} - \recur[reuse=1,p=.,vvmode=1,do=11,see1=4,see2=2, - vvd={,}\\(vv)\\,*] - {\[ P_{n+2}(x)=\frac{1}{n+2} - \Bigl(kxP_{n+1}(x)-(n+1)P_{n}(x)\Bigr) - \]}[k=2n+3,n=123,P_{1}(x)=x,P_{0}(x)=1,x=0.5] - \reuse[legendre] -\end{verbatim} -$\Longrightarrow$ \recur[reuse=1,p=.,vvmode=1,do=11,see1=4,see2=2, - vvd={,}\\(vv)\\,*] - {\[ P_{n+2}(x)=\frac{1}{n+2} - \Bigl(kxP_{n+1}(x)-(n+1)P_{n}(x)\Bigr) - \]}[k=2n+3,n=123,P_{1}(x)=x,P_{0}(x)=1,x=0.5] - \reuse[legendre] - -\noindent Now check to see what has been saved: -\begin{centred} -\verb`$\legendre$` $\Longrightarrow$ $ \legendre$. -\end{centred} -As you can see, the final two (because of \texttt{see2=2}) of the -$12$ Legendre polynomials calculated have been saved, each value -preceded by its index value. If the setting had been \texttt{reuse=2}, -only the two values would have been saved. The \verb`\legendre` control -sequence contains the values as comma-separated braced pairs, as can -be seen by using \TeX 's \verb`\meaning` command: -\begin{centred} -\verb`\meaning\legendre` $\Longrightarrow$ \meaning\legendre -\end{centred} - -\subsection{Changing default values} - -\begin{wraptable}[12]{o}{0.5\columnwidth}% -\centering{}\caption{\protect\label{tab:recurSettingsDefaults}Defaults for \texttt{\textbackslash nmcRecur}} -\begin{center} -\begin{tabular}{ll} -\toprule -{\small key} & {\small default}\tabularnewline -\midrule -{\small recur-do} & {\small\texttt{7}}\tabularnewline -{\small recur-see-first} & {\small\texttt{3}}\tabularnewline -{\small recur-see-last} & {\small\texttt{2}}\tabularnewline -{\small recur-reuse} & {\small\texttt{0}}\tabularnewline -\bottomrule -\end{tabular} -\par\end{center}\end{wraptable}% -If you wish to change the default values of the various settings for -\verb`\nmcRecur` this can be done by entering new values in a configuration -file \texttt{numerica.cfg} as described in the chapter on settings -in the associated document \texttt{numerica-basics.pdf}. The relevant -keys are listed in Table~\ref{tab:recurSettingsDefaults}, corresponding -to the \verb`do`, \verb`see1`, \verb`see2` and \verb`reuse` settings -of the \verb`\recur` command. - -\subsection{Orthogonal polynomials} - -I've used Legendre polynomials in examples above, but orthogonal polynomials -generally lend themselves to the \verb`\recur` treatment. Quoting -from \emph{HMF} 22.7, orthogonal polynomials $f_{n}$ satisfy recurrence -relations of the form -\[ -a_{1n}f_{n+1}(x)=(a_{2n}+a_{3n}x)f_{n}(x)-a_{4n}f_{n-1}(x), -\] -or in the standard form required by \verb`\recur`, -\[ -f_{n+1}(x)=\frac{a_{2n}+a_{3n}x}{a_{1n}}f_{n}(x)-\frac{a_{4n}}{a_{1n}}f_{n-1}(x). -\] -\emph{HMF} 22.7 provides a listing of the coefficients $a_{in}$ for -the polynomials of Jacobi, Chebyshev, Legendre, Laguerre, Hermite -and others, and tables for these polynomials. - -For example, Laguerre polynomials satisfy the recurrence -\[ -L_{n+1}(x)=\frac{2n+1-x}{n+1}L_{n}(x)-\frac{n}{n+1}L_{n-1}(x). -\] -with initial values $L_{0}(x)=1$ and $L_{1}(x)=1-x$. So let's calculate -the first $13$ Laguerre polynomials for, say, $x=0.5$: -\begin{verbatim} - \recur[do=13,see1=4,see2=2,vvd={,}\\(vv)\\,*]{\[ - L_{n+1}(x)=\frac{2n+1-x}{n+1}L_{n}(x)- - \frac{n}{n+1}L_{n-1}(x) - \]}[L_{1}(x)=1-x,L_{0}(x)=1,x=0.5] -\end{verbatim} -$\Longrightarrow$ \recur[do=13,see1=4,see2=2,vvd={,}\\(vv)\\,*]{\[ - L_{n+1}(x)=\frac{2n+1-x}{n+1}L_{n}(x)- - \frac{n}{n+1}L_{n-1}(x) - \]}[L_{1}(x)=1-x,L_{0}(x)=1,x=0.5] - -\noindent and for $x=5$: -\begin{verbatim} - \recur[p=.,do=13,see1=4,see2=2,vvd={,}\\(vv)\\,*]{\[ - L_{n+1}(x)=\frac{2n+1-x}{n+1}L_{n}(x)- - \frac{n}{n+1}L_{n-1}(x) - \]}[L_{1}(x)=1-x,L_{0}(x)=1,x=5] -\end{verbatim} -$\Longrightarrow$ \recur[p=.,do=13,see1=4,see2=2,vvd={,}\\(vv)\\,*]{\[ - L_{n+1}(x)=\frac{2n+1-x}{n+1}L_{n}(x)- - \frac{n}{n+1}L_{n-1}(x) - \]}[L_{1}(x)=1-x,L_{0}(x)=1,x=5] - -\noindent The results (reassuringly) coincide with those provided -in \emph{HMF }Table 22.11. - -\subsection{Nesting} - -It is possible to use the \verb`\recur*` command (but only the starred -form) in the \verb`\eval`, \verb`\iter`, and \verb`\solve` commands, -and indeed in \verb`\recur` itself, but with this caveat: if \verb`\recur*` -is nested within another command, the initial terms of the recurrence -\textendash{} e.g., $f_{1}=1,f_{0}=1$, for the Fibonacci series, -or $L_{1}(x)=1-x,L_{0}(x)=1$ for the Laguerre polynomials \textendash{} -\emph{must be located in the vv-list of that inner }\verb`\recur*`\emph{ -command}. Other shared variables can often be shifted to the vv-list -of the outer command, but not these initial terms. - -\noindent\begin{minipage}[t]{1\columnwidth}% -\begin{shaded}% -The terms of a recurrence relation are multi-token variables but \texttt{numerica} -requires single tokens for its calculations. The problem for \verb`\recur` -is that the terms in the recurrence relation in the main (mandatory) -argument differ from the terms in the vv-list: for instance $f_{n}$ -in the main argument, $f_{0}$ in the vv-list. If left like that, -when \texttt{numerica} does its conversion from multi-token to single -token variables, $f_{n}$ would not be found since it differs from -$f_{0}$. Hence a crucial first step for \verb`\recur` is to reconcile -the different forms, which it does by converting the forms in the -vv-list to the forms in the recurrence in the main argument. To be -available for this form change, they must reside in the \emph{inner} -vv-list. In the outer vv-list they would be inaccessible to the inner -command. - -{*}{*}{*} - -This suggests an alternative way of proceeding: write the inital values -of the recurrence terms in the \emph{same} form in which they occur -in the recurrence relation, together with an initial value for the -recurrence variable: $f_{n+1}=1,f_{n}=1,n=0$, say. This is not how -mathematicians write the initial values in recurrence relations, which -is why I did not pursue it, but it neatly sidesteps what is otherwise -an initial awkwardness. \end{shaded}% -\end{minipage} - -In the following example I multiply together (rather futilely) the -third and fourth members of the sequence of Laguerre polynomials for -$x=5$ (the answer expected is \verb`$ \eval{3.5\times2.666667} $` -$\Longrightarrow$ $ \eval{3.5\times2.666667} $). Note that although -it is tempting to shift the shared vv-lists of the inner \verb`\recur*` -commands to the vv-list of the outer \verb`\eval` command, in fact -only the \verb`x=5` entry has been transferred: -\begin{verbatim} - \eval[p=.]{$ - \recur*[do=3] - { L_{n+1}(x)=\frac{2n+1-x}{n+1}L_{n}(x)- - \frac{n}{n+1}L_{n-1}(x)} - [L_{1}(x)=1-x,L_{0}(x)=1] - \times - \recur*[do=4] - { L_{n+1}(x)=\frac{2n+1-x}{n+1}L_{n}(x)- - \frac{n}{n+1}L_{n-1}(x)} - [L_{1}(x)=1-x,L_{0}(x)=1] - $}[x=5] -\end{verbatim} -$\Longrightarrow$ \eval[p=.]{$ - \recur*[do=3] - { L_{n+1}(x)=\frac{2n+1-x}{n+1}L_{n}(x)- - \frac{n}{n+1}L_{n-1}(x)} - [L_{1}(x)=1-x,L_{0}(x)=1,x=5] - \times - \recur*[do=4] - { L_{n+1}(x)=\frac{2n+1-x}{n+1}L_{n}(x)- - \frac{n}{n+1}L_{n-1}(x)} - [L_{1}(x)=1-x,L_{0}(x)=1,x=5] - $} - -\chapter{Reference summary} - -\section{Commands defined in \texttt{numerica-plus}} -\begin{enumerate} -\item \texttt{\textbackslash nmcIterate, \textbackslash iter} -\item \texttt{\textbackslash nmcSolve, \textbackslash solve} -\item \textbackslash\texttt{nmcRecur, \textbackslash recur} -\end{enumerate} - -\section{Settings for the three commands} - -\subsection{Settings for \texttt{\textbackslash nmcIterate}} - -Settings option of \verb`\nmcIterate`: - -\begin{center} -\begin{tabular}{llll} -\toprule -{\small key} & {\small type} & {\small meaning} & {\small default}\tabularnewline -\midrule -{\small\texttt{var}} & {\small token(s)} & {\small iteration variable} & \tabularnewline -{\small\texttt{+}} & {\small int} & {\small fixed point extra rounding} & {\small\texttt{0}}\tabularnewline -{\small\texttt{max}} & {\small int > 0} & {\small max. iteration count (fixed points)} & {\small\texttt{100}}\tabularnewline -{\small\texttt{do}} & {\small int > 0} & {\small number of iterations to perform} & {\small\texttt{5}}\tabularnewline -{\small\texttt{see}} & {\small int > 0} & {\small number of final iterations to view} & {\small\texttt{4}}\tabularnewline -{\small\texttt{reuse}} & {\small int ($\mathtt{0}/\mathtt{1}/\mathtt{2}$)} & {\small form of result saved with }{\small{\small\verb`\reuse`}} & {\small\texttt{0}}\tabularnewline -\bottomrule -\end{tabular} -\par\end{center} - -Configuration settings for \verb`\nmcIterate`: - -\begin{center} -\begin{tabular}{ll} -\toprule -{\small key} & {\small default}\tabularnewline -\midrule -{\small iter-extra-rounding} & {\small\texttt{0}}\tabularnewline -{\small iter-max-iterations} & {\small\texttt{100}}\tabularnewline -{\small iter-do} & {\small\texttt{5}}\tabularnewline -{\small iter-see-last} & {\small\texttt{4}}\tabularnewline -{\small iter-reuse} & {\small\texttt{0}}\tabularnewline -\bottomrule -\end{tabular} -\par\end{center} - -\subsection{Settings for \texttt{\textbackslash nmcSolve}} - -Settings option of \verb`\nmcSolve`: - -\begin{center} -\begin{tabular}{llll} -\toprule -{\small key} & {\small type} & {\small meaning} & {\small default}\tabularnewline -\midrule -{\small\texttt{var}} & {\small token(s)} & {\small equation variable} & \tabularnewline -{\small\texttt{dvar}} & {\small real $\ne0$} & {\small initial step size} & {\small\texttt{1}}\tabularnewline -{\small\texttt{+}} & {\small int} & {\small extra rounding} & {\small\texttt{0}}\tabularnewline -{\small\texttt{max}} & {\small int > 0} & {\small max. number of steps before cut off} & {\small\texttt{100}}\tabularnewline -{\small\texttt{reuse}} & {\small int ($\mathtt{0}/\mathtt{1}$)} & {\small form of result saved with }{\small{\small\verb`\reuse`}} & {\small\texttt{0}}\tabularnewline -\bottomrule -\end{tabular} -\par\end{center} - -Configuration settings for \verb`\nmcSolve`: - -\begin{center} -\begin{tabular}{ll} -\toprule -{\small key} & {\small default}\tabularnewline -\midrule -{\small solve-first-step} & 1\tabularnewline -{\small solve-extra-rounding} & {\small\texttt{0}}\tabularnewline -{\small solve-max-steps} & {\small\texttt{100}}\tabularnewline -{\small solve-reuse} & {\small\texttt{0}}\tabularnewline -\bottomrule -\end{tabular} -\par\end{center} - -\subsection{Settings for \texttt{\textbackslash nmcRecur}} - -Settings option of \verb`\nmcRecur`: - -\begin{center} -\begin{tabular}{llll} -\toprule -{\small key} & {\small type} & {\small meaning} & {\small default}\tabularnewline -\midrule -{\small\texttt{do}} & {\small int$\ge0$} & {\small number of terms to calculate} & {\small\texttt{7}}\tabularnewline -{\small\texttt{see1}} & {\small int$\ge0$} & {\small number of initial terms to display} & {\small\texttt{3}}\tabularnewline -{\small\texttt{see2}} & {\small int$\ge0$} & {\small number of final terms to display} & {\small\texttt{2}}\tabularnewline -{\small\texttt{...}} & {\small chars} & {\small follow display of values with an ellipsis} & \tabularnewline -{\small\texttt{reuse}} & {\small int ($\mathtt{0}/\mathtt{1}/\mathtt{2}$)} & {\small form of result saved with }{\small{\small\verb`\reuse`}} & {\small\texttt{0}}\tabularnewline -\bottomrule -\end{tabular} -\par\end{center} - -Configuration settings for \verb`\nmcRecur`: - -\begin{center} -\begin{tabular}{ll} -\toprule -{\small key} & {\small default}\tabularnewline -\midrule -{\small recur-do} & {\small\texttt{7}}\tabularnewline -{\small recur-see-first} & {\small\texttt{3}}\tabularnewline -{\small recur-see-last} & {\small\texttt{2}}\tabularnewline -{\small recur-reuse} & {\small\texttt{0}}\tabularnewline -\bottomrule -\end{tabular} -\par\end{center} -\end{document} |