{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Introduction\n",
    "============\n",
    "\n",
    "This book addresses the design and analysis of methods for computing numerical values for solutions to mathematical problems.\n",
    "Most often, only accurate approximations are possible rather than exact solutions, so a key mathematical goals is to assess the accuracy of such approximations.\n",
    "\n",
    "Given that most numerical methods allow any degree of accuracy to be achieved by working hard enough, the next level of analysis is assessing *cost*, or equivalently *speed*, or more generally the *efficiency of resource usage*.\n",
    "The most natural question then is how much time and other resources are needed to achieve a given degree of accuracy."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Topics\n",
    "------\n",
    "\n",
    "The main areas of interest are:\n",
    "1. Finding the zeros of a function: solving $f(x) = 0$.\n",
    "2. Solving systems of simultaneous linear equations; in matrix-vector notation, solving $Ax = b$ for $x$.\n",
    "3. Fitting polynomials to a collection of data points, either exactly (colocation) or approximately (least-squares).\n",
    "4. Approximating a function by a polynomial, or several polynomials.\n",
    "5. Approximating derivatives and definite integrals.\n",
    "6. Solving ordinary differential equations.\n",
    "7. Finding the minimum of a function.\n",
    "\n",
    "Although it is the last major topic, the numerical solution of differential equations will often be mentioned earlier as a motivation for other topics.\n",
    "However, we start in a simpler setting: the problem of finding the zeros of a real-valued function: solving $f(x) = 0$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Restrictions on characters used in names\n",
    "\n",
    "TL;DR: \"Mostly letters and digits\"\n",
    "\n",
    "- The names of **Python variables** (including the names of functions) *must* only contain *letters*, *digits*, and *underscores*: no **dashes**, **spaces** or other punctuation.\n",
    "\n",
    "- The names of **files containing Python modules** *must* follow the above restrictions — because these names are used as variables in `import` statements.\n",
    "(Apart from the period in the suffix \".py\" of course.)\n",
    "\n",
    "- The names of **notebook files** have just a little more flexibility: they *should* only contain letters, digits, underscores and hyphens; no **spaces** or other punctuation. The only difference from the above is allowing *hyphens*.\n",
    "(Again, apart from the period in the suffix \".ipynb\".)\n",
    "<br>\n",
    "<em>Aside:</em> this is roughly the same rule as for web-site addresses.\n",
    "<br>\n",
    "You can get away with some other characters in some situations, but will run into problems in situations like cross-referencing to a notebook from another notebook, posting on a web-site, and using a notebook as a section in a Jupyter Book."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
