CalculusWithJuliaNotes.jl/quarto/308797b5/derivatives/curve_sketching.html
2022-08-11 13:00:43 -04:00

2550 lines
161 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>
<meta charset="utf-8">
<meta name="generator" content="quarto-1.0.32">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>Calculus with Julia - 28&nbsp; Curve Sketching</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
span.underline{text-decoration: underline;}
div.column{display: inline-block; vertical-align: top; width: 50%;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
pre > code.sourceCode { white-space: pre; position: relative; }
pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
pre > code.sourceCode > span:empty { height: 1.2em; }
.sourceCode { overflow: visible; }
code.sourceCode > span { color: inherit; text-decoration: inherit; }
div.sourceCode { margin: 1em 0; }
pre.sourceCode { margin: 0; }
@media screen {
div.sourceCode { overflow: auto; }
}
@media print {
pre > code.sourceCode { white-space: pre-wrap; }
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
}
pre.numberSource code
{ counter-reset: source-line 0; }
pre.numberSource code > span
{ position: relative; left: -4em; counter-increment: source-line; }
pre.numberSource code > span > a:first-child::before
{ content: counter(source-line);
position: relative; left: -1em; text-align: right; vertical-align: baseline;
border: none; display: inline-block;
-webkit-touch-callout: none; -webkit-user-select: none;
-khtml-user-select: none; -moz-user-select: none;
-ms-user-select: none; user-select: none;
padding: 0 4px; width: 4em;
color: #aaaaaa;
}
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
div.sourceCode
{ }
@media screen {
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
}
code span.al { color: #ff0000; font-weight: bold; } /* Alert */
code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
code span.at { color: #7d9029; } /* Attribute */
code span.bn { color: #40a070; } /* BaseN */
code span.bu { } /* BuiltIn */
code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
code span.ch { color: #4070a0; } /* Char */
code span.cn { color: #880000; } /* Constant */
code span.co { color: #60a0b0; font-style: italic; } /* Comment */
code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
code span.do { color: #ba2121; font-style: italic; } /* Documentation */
code span.dt { color: #902000; } /* DataType */
code span.dv { color: #40a070; } /* DecVal */
code span.er { color: #ff0000; font-weight: bold; } /* Error */
code span.ex { } /* Extension */
code span.fl { color: #40a070; } /* Float */
code span.fu { color: #06287e; } /* Function */
code span.im { } /* Import */
code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
code span.kw { color: #007020; font-weight: bold; } /* Keyword */
code span.op { color: #666666; } /* Operator */
code span.ot { color: #007020; } /* Other */
code span.pp { color: #bc7a00; } /* Preprocessor */
code span.sc { color: #4070a0; } /* SpecialChar */
code span.ss { color: #bb6688; } /* SpecialString */
code span.st { color: #4070a0; } /* String */
code span.va { color: #19177c; } /* Variable */
code span.vs { color: #4070a0; } /* VerbatimString */
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
</style>
<script src="../site_libs/quarto-nav/quarto-nav.js"></script>
<script src="../site_libs/quarto-nav/headroom.min.js"></script>
<script src="../site_libs/clipboard/clipboard.min.js"></script>
<script src="../site_libs/quarto-search/autocomplete.umd.js"></script>
<script src="../site_libs/quarto-search/fuse.min.js"></script>
<script src="../site_libs/quarto-search/quarto-search.js"></script>
<meta name="quarto:offset" content="../">
<link href="../derivatives/linearization.html" rel="next">
<link href="../derivatives/first_second_derivatives.html" rel="prev">
<script src="../site_libs/quarto-html/quarto.js"></script>
<script src="../site_libs/quarto-html/popper.min.js"></script>
<script src="../site_libs/quarto-html/tippy.umd.min.js"></script>
<script src="../site_libs/quarto-html/anchor.min.js"></script>
<link href="../site_libs/quarto-html/tippy.css" rel="stylesheet">
<link href="../site_libs/quarto-html/quarto-syntax-highlighting.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="../site_libs/bootstrap/bootstrap.min.js"></script>
<link href="../site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="../site_libs/bootstrap/bootstrap.min.css" rel="stylesheet" id="quarto-bootstrap" data-mode="light">
<script id="quarto-search-options" type="application/json">{
"location": "navbar",
"copy-button": false,
"collapse-after": 3,
"panel-placement": "end",
"type": "overlay",
"limit": 20,
"language": {
"search-no-results-text": "No results",
"search-matching-documents-text": "matching documents",
"search-copy-link-title": "Copy link to search",
"search-hide-matches-text": "Hide additional matches",
"search-more-match-text": "more match in this document",
"search-more-matches-text": "more matches in this document",
"search-clear-button-title": "Clear",
"search-detached-cancel-button-title": "Cancel",
"search-submit-button-title": "Submit"
}
}</script>
<script async="" src="https://hypothes.is/embed.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" integrity="sha512-c3Nl8+7g4LMSTdrm621y7kf9v3SDPnhxLNhcjFJbKECVnmZHTdo+IRO05sNLTH/D3vA6u1X32ehoLC7WFVdheg==" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js" integrity="sha512-bLT0Qm9VnAYZDflyKcBaQ2gg0hSYNQrJ8RilYldYQ1FxQYoCLtUjuuRuZo+fjqhx/qtq/1itJ0C2ejDxltZVFg==" crossorigin="anonymous"></script>
<script type="application/javascript">define('jquery', [],function() {return window.jQuery;})</script>
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml-full.js" type="text/javascript"></script>
</head>
<body class="nav-sidebar floating nav-fixed">
<div id="quarto-search-results"></div>
<header id="quarto-header" class="headroom fixed-top">
<nav class="navbar navbar-expand-lg navbar-dark ">
<div class="navbar-container container-fluid">
<a class="navbar-brand" href="../index.html">
<img src="../logo.png" alt="">
<span class="navbar-title">Calculus with Julia</span>
</a>
<div id="quarto-search" class="" title="Search"></div>
</div> <!-- /container-fluid -->
</nav>
<nav class="quarto-secondary-nav" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar" aria-controls="quarto-sidebar" aria-expanded="false" aria-label="Toggle sidebar navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
<div class="container-fluid d-flex justify-content-between">
<h1 class="quarto-secondary-nav-title"><span class="chapter-number">28</span>&nbsp; <span class="chapter-title">Curve Sketching</span></h1>
<button type="button" class="quarto-btn-toggle btn" aria-label="Show secondary navigation">
<i class="bi bi-chevron-right"></i>
</button>
</div>
</nav>
</header>
<!-- content -->
<div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
<!-- sidebar -->
<nav id="quarto-sidebar" class="sidebar collapse sidebar-navigation floating overflow-auto">
<div class="mt-2 flex-shrink-0 align-items-center">
<div class="sidebar-search">
<div id="quarto-search" class="" title="Search"></div>
</div>
</div>
<div class="sidebar-menu-container">
<ul class="list-unstyled mt-1">
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../index.html" class="sidebar-item-text sidebar-link">Preface</a>
</div>
</li>
<li class="sidebar-item sidebar-item-section">
<div class="sidebar-item-container">
<a class="sidebar-item-text sidebar-link text-start collapsed" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-1" aria-expanded="false">Precalculus Concepts</a>
<a class="sidebar-item-toggle text-start collapsed" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-1" aria-expanded="false">
<i class="bi bi-chevron-right ms-2"></i>
</a>
</div>
<ul id="quarto-sidebar-section-1" class="collapse list-unstyled sidebar-section depth1 ">
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../precalc/calculator.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">1</span>&nbsp; <span class="chapter-title">From calculator to computer</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../precalc/variables.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">2</span>&nbsp; <span class="chapter-title">Variables</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../precalc/numbers_types.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">3</span>&nbsp; <span class="chapter-title">Number systems</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../precalc/logical_expressions.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">4</span>&nbsp; <span class="chapter-title">Inequalities, Logical expressions</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../precalc/vectors.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">5</span>&nbsp; <span class="chapter-title">Vectors</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../precalc/ranges.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">6</span>&nbsp; <span class="chapter-title">Ranges and Sets</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../precalc/functions.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">7</span>&nbsp; <span class="chapter-title">Functions</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../precalc/plotting.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">8</span>&nbsp; <span class="chapter-title">The Graph of a Function</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../precalc/transformations.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">9</span>&nbsp; <span class="chapter-title">Function manipulations</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../precalc/inversefunctions.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">10</span>&nbsp; <span class="chapter-title">The Inverse of a Function</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../precalc/polynomial.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">11</span>&nbsp; <span class="chapter-title">Polynomials</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../precalc/polynomial_roots.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">12</span>&nbsp; <span class="chapter-title">Roots of a polynomial</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../precalc/polynomials_package.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">13</span>&nbsp; <span class="chapter-title">The Polynomials package</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../precalc/rational_functions.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">14</span>&nbsp; <span class="chapter-title">Rational functions</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../precalc/exp_log_functions.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">15</span>&nbsp; <span class="chapter-title">Exponential and logarithmic functions</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../precalc/trig_functions.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">16</span>&nbsp; <span class="chapter-title">Trigonometric functions</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../precalc/julia_overview.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">17</span>&nbsp; <span class="chapter-title">Overview of Julia commands</span></a>
</div>
</li>
</ul>
</li>
<li class="sidebar-item sidebar-item-section">
<div class="sidebar-item-container">
<a class="sidebar-item-text sidebar-link text-start collapsed" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-2" aria-expanded="false">Limits</a>
<a class="sidebar-item-toggle text-start collapsed" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-2" aria-expanded="false">
<i class="bi bi-chevron-right ms-2"></i>
</a>
</div>
<ul id="quarto-sidebar-section-2" class="collapse list-unstyled sidebar-section depth1 ">
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../limits/limits.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">18</span>&nbsp; <span class="chapter-title">Limits</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../limits/limits_extensions.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">19</span>&nbsp; <span class="chapter-title">Limits, issues, extensions of the concept</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../limits/continuity.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">20</span>&nbsp; <span class="chapter-title">Continuity</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../limits/intermediate_value_theorem.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">21</span>&nbsp; <span class="chapter-title">Implications of continuity</span></a>
</div>
</li>
</ul>
</li>
<li class="sidebar-item sidebar-item-section">
<div class="sidebar-item-container">
<a class="sidebar-item-text sidebar-link text-start" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-3" aria-expanded="true">Derivatives</a>
<a class="sidebar-item-toggle text-start" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-3" aria-expanded="true">
<i class="bi bi-chevron-right ms-2"></i>
</a>
</div>
<ul id="quarto-sidebar-section-3" class="collapse list-unstyled sidebar-section depth1 show">
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../derivatives/derivatives.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">22</span>&nbsp; <span class="chapter-title">Derivatives</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../derivatives/numeric_derivatives.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">23</span>&nbsp; <span class="chapter-title">Numeric derivatives</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../derivatives/symbolic_derivatives.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">24</span>&nbsp; <span class="chapter-title">Symbolic derivatives</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../derivatives/mean_value_theorem.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">25</span>&nbsp; <span class="chapter-title">The mean value theorem for differentiable functions.</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../derivatives/optimization.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">26</span>&nbsp; <span class="chapter-title">Optimization</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../derivatives/first_second_derivatives.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">27</span>&nbsp; <span class="chapter-title">The first and second derivatives</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../derivatives/curve_sketching.html" class="sidebar-item-text sidebar-link active"><span class="chapter-number">28</span>&nbsp; <span class="chapter-title">Curve Sketching</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../derivatives/linearization.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">29</span>&nbsp; <span class="chapter-title">Linearization</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../derivatives/newtons_method.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">30</span>&nbsp; <span class="chapter-title">Newtons method</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../derivatives/more_zeros.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">31</span>&nbsp; <span class="chapter-title">Derivative-free alternatives to Newtons method</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../derivatives/lhospitals_rule.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">32</span>&nbsp; <span class="chapter-title">LHospitals Rule</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../derivatives/implicit_differentiation.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">33</span>&nbsp; <span class="chapter-title">Implicit Differentiation</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../derivatives/related_rates.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">34</span>&nbsp; <span class="chapter-title">Related rates</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../derivatives/taylor_series_polynomials.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">35</span>&nbsp; <span class="chapter-title">Taylor Polynomials and other Approximating Polynomials</span></a>
</div>
</li>
</ul>
</li>
<li class="sidebar-item sidebar-item-section">
<div class="sidebar-item-container">
<a class="sidebar-item-text sidebar-link text-start collapsed" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-4" aria-expanded="false">Integrals</a>
<a class="sidebar-item-toggle text-start collapsed" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-4" aria-expanded="false">
<i class="bi bi-chevron-right ms-2"></i>
</a>
</div>
<ul id="quarto-sidebar-section-4" class="collapse list-unstyled sidebar-section depth1 ">
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../integrals/area.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">36</span>&nbsp; <span class="chapter-title">Area under a curve</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../integrals/ftc.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">37</span>&nbsp; <span class="chapter-title">Fundamental Theorem or Calculus</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../integrals/substitution.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">38</span>&nbsp; <span class="chapter-title">Substitution</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../integrals/integration_by_parts.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">39</span>&nbsp; <span class="chapter-title">Integration By Parts</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../integrals/partial_fractions.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">40</span>&nbsp; <span class="chapter-title">Partial Fractions</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../integrals/improper_integrals.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">41</span>&nbsp; <span class="chapter-title">Improper Integrals</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../integrals/mean_value_theorem.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">42</span>&nbsp; <span class="chapter-title">Mean value theorem for integrals</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../integrals/area_between_curves.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">43</span>&nbsp; <span class="chapter-title">Area between two curves</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../integrals/center_of_mass.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">44</span>&nbsp; <span class="chapter-title">Center of Mass</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../integrals/volumes_slice.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">45</span>&nbsp; <span class="chapter-title">Volumes by slicing</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../integrals/arc_length.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">46</span>&nbsp; <span class="chapter-title">Arc length</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../integrals/surface_area.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">47</span>&nbsp; <span class="chapter-title">Surface Area</span></a>
</div>
</li>
</ul>
</li>
<li class="sidebar-item sidebar-item-section">
<div class="sidebar-item-container">
<a class="sidebar-item-text sidebar-link text-start collapsed" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-5" aria-expanded="false">ODEs</a>
<a class="sidebar-item-toggle text-start collapsed" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-5" aria-expanded="false">
<i class="bi bi-chevron-right ms-2"></i>
</a>
</div>
<ul id="quarto-sidebar-section-5" class="collapse list-unstyled sidebar-section depth1 ">
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../ODEs/odes.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">48</span>&nbsp; <span class="chapter-title">ODEs</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../ODEs/euler.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">49</span>&nbsp; <span class="chapter-title">Eulers method</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../ODEs/solve.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">50</span>&nbsp; <span class="chapter-title">The problem-algorithm-solve interface</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../ODEs/differential_equations.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">51</span>&nbsp; <span class="chapter-title">The <code>DifferentialEquations</code> suite</span></a>
</div>
</li>
</ul>
</li>
<li class="sidebar-item sidebar-item-section">
<div class="sidebar-item-container">
<a class="sidebar-item-text sidebar-link text-start collapsed" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-6" aria-expanded="false">Differential vector calculus</a>
<a class="sidebar-item-toggle text-start collapsed" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-6" aria-expanded="false">
<i class="bi bi-chevron-right ms-2"></i>
</a>
</div>
<ul id="quarto-sidebar-section-6" class="collapse list-unstyled sidebar-section depth1 ">
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../differentiable_vector_calculus/polar_coordinates.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">52</span>&nbsp; <span class="chapter-title">Polar Coordinates and Curves</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../differentiable_vector_calculus/vectors.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">53</span>&nbsp; <span class="chapter-title">Vectors and matrices</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../differentiable_vector_calculus/vector_valued_functions.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">54</span>&nbsp; <span class="chapter-title">Vector-valued functions, <span class="math inline">\(f:R \rightarrow R^n\)</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../differentiable_vector_calculus/scalar_functions.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">55</span>&nbsp; <span class="chapter-title">Scalar functions</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../differentiable_vector_calculus/scalar_functions_applications.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">56</span>&nbsp; <span class="chapter-title">Applications with scalar functions</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../differentiable_vector_calculus/vector_fields.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">57</span>&nbsp; <span class="chapter-title">Functions <span class="math inline">\(R^n \rightarrow R^m\)</span></span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../differentiable_vector_calculus/plots_plotting.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">58</span>&nbsp; <span class="chapter-title">2D and 3D plots in Julia with Plots</span></a>
</div>
</li>
</ul>
</li>
<li class="sidebar-item sidebar-item-section">
<div class="sidebar-item-container">
<a class="sidebar-item-text sidebar-link text-start collapsed" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-7" aria-expanded="false">Integral vector calculus</a>
<a class="sidebar-item-toggle text-start collapsed" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-7" aria-expanded="false">
<i class="bi bi-chevron-right ms-2"></i>
</a>
</div>
<ul id="quarto-sidebar-section-7" class="collapse list-unstyled sidebar-section depth1 ">
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../integral_vector_calculus/double_triple_integrals.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">59</span>&nbsp; <span class="chapter-title">Multi-dimensional integrals</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../integral_vector_calculus/line_integrals.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">60</span>&nbsp; <span class="chapter-title">Line and Surface Integrals</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../integral_vector_calculus/div_grad_curl.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">61</span>&nbsp; <span class="chapter-title">The Gradient, Divergence, and Curl</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../integral_vector_calculus/stokes_theorem.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">62</span>&nbsp; <span class="chapter-title">Greens Theorem, Stokes Theorem, and the Divergence Theorem</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../integral_vector_calculus/review.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">63</span>&nbsp; <span class="chapter-title">Quick Review of Vector Calculus</span></a>
</div>
</li>
</ul>
</li>
<li class="sidebar-item sidebar-item-section">
<div class="sidebar-item-container">
<a class="sidebar-item-text sidebar-link text-start collapsed" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-8" aria-expanded="false">Alternatives</a>
<a class="sidebar-item-toggle text-start collapsed" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-8" aria-expanded="false">
<i class="bi bi-chevron-right ms-2"></i>
</a>
</div>
<ul id="quarto-sidebar-section-8" class="collapse list-unstyled sidebar-section depth1 ">
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../alternatives/plotly_plotting.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">64</span>&nbsp; <span class="chapter-title">JavaScript based plotting libraries</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../alternatives/makie_plotting.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">65</span>&nbsp; <span class="chapter-title">Calculus plots with Makie</span></a>
</div>
</li>
</ul>
</li>
<li class="sidebar-item sidebar-item-section">
<div class="sidebar-item-container">
<a class="sidebar-item-text sidebar-link text-start collapsed" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-9" aria-expanded="false">Appendices</a>
<a class="sidebar-item-toggle text-start collapsed" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-9" aria-expanded="false">
<i class="bi bi-chevron-right ms-2"></i>
</a>
</div>
<ul id="quarto-sidebar-section-9" class="collapse list-unstyled sidebar-section depth1 ">
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../misc/getting_started_with_julia.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">66</span>&nbsp; <span class="chapter-title">Getting started with Julia</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../misc/julia_interfaces.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">67</span>&nbsp; <span class="chapter-title">Julia interfaces</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../misc/calculus_with_julia.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">68</span>&nbsp; <span class="chapter-title">The <code>CalculusWithJulia</code> package</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../misc/unicode.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">69</span>&nbsp; <span class="chapter-title">Usages of Unicode symbols</span></a>
</div>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../misc/quick_notes.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">70</span>&nbsp; <span class="chapter-title">Quick introduction to Calculus with Julia</span></a>
</div>
</li>
</ul>
</li>
<li class="sidebar-item">
<div class="sidebar-item-container">
<a href="../references.html" class="sidebar-item-text sidebar-link">References</a>
</div>
</li>
</ul>
</div>
</nav>
<!-- margin-sidebar -->
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
<nav id="TOC" role="doc-toc">
<h2 id="toc-title">Table of contents</h2>
<ul>
<li><a href="#questions" id="toc-questions" class="nav-link active" data-scroll-target="#questions"> <span class="header-section-number">28.1</span> Questions</a></li>
</ul>
<div class="toc-actions"><div><i class="bi bi-github"></i></div><div class="action-links"><p><a href="https://github.com/jverzani/CalculusWithJuliaNotes.jl/edit/main/quarto/derivatives/curve_sketching.qmd" class="toc-action">Edit this page</a></p><p><a href="https://github.com/jverzani/CalculusWithJuliaNotes.jl/issues/new" class="toc-action">Report an issue</a></p></div></div></nav>
</div>
<!-- main -->
<main class="content" id="quarto-document-content">
<header id="title-block-header" class="quarto-title-block default">
<div class="quarto-title">
<h1 class="title d-none d-lg-block"><span class="chapter-number">28</span>&nbsp; <span class="chapter-title">Curve Sketching</span></h1>
</div>
<div class="quarto-title-meta">
</div>
</header>
<p>This section uses the following add-on packages:</p>
<div class="sourceCode cell-code" id="cb1"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="im">using</span> <span class="bu">CalculusWithJulia</span></span>
<span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a><span class="im">using</span> <span class="bu">Plots</span></span>
<span id="cb1-3"><a href="#cb1-3" aria-hidden="true" tabindex="-1"></a><span class="im">using</span> <span class="bu">SymPy</span></span>
<span id="cb1-4"><a href="#cb1-4" aria-hidden="true" tabindex="-1"></a><span class="im">using</span> <span class="bu">Roots</span></span>
<span id="cb1-5"><a href="#cb1-5" aria-hidden="true" tabindex="-1"></a><span class="im">using</span> <span class="bu">Polynomials </span><span class="co"># some name clash with SymPy</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<hr>
<p>The figure illustrates a means to <em>sketch</em> a sine curve - identify as many of the following values as you can:</p>
<ul>
<li>asymptotic behaviour (as <span class="math inline">\(x \rightarrow \pm \infty\)</span>),</li>
<li>periodic behaviour,</li>
<li>vertical asymptotes,</li>
<li>the <span class="math inline">\(y\)</span> intercept,</li>
<li>any <span class="math inline">\(x\)</span> intercept(s),</li>
<li>local peaks and valleys (relative extrema).</li>
<li>concavity</li>
</ul>
<p>With these, a sketch fills in between the points/lines associated with these values.</p>
<div class="cell" data-cache="true" data-hold="true" data-execution_count="4">
<div class="cell-output cell-output-display" data-execution_count="5">
<div class="d-flex justify-content-center"> <figure class="figure"> <img src="data:image/gif;base64,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wgoATzhZsXCLgosjHB6grcInPrUnCMPh4qAbxTfOo0UowuHCsEHjOE5yx4xDBaX/ILgwaICLkrvcMd2gwr1yQIxQv/zmYuGHO/xhc5z7/OdAD7rQh070ohv96EhPutKXzvSmO/3pUI+61KdO9apb/epYz7rWt871rnv962APu9jHTvaym/3saE+72tfO9ra7/e1wj7vc5073utv97njPu973zve++/3vgA+84AdP+MIb/vCIT7ziF8/4xjv+8ZCPvOQnT/nKW/7ymM+85jfP+c57/vOgD73oR0/60pv+9KhPvepXz/rWu/71sI+97GdP+9rb/va4z73ud8/73vv+98APvvCHT/ziG//4yE++8pfP/OY7//nQj770p0/96lv/+tjPvva3z/3ue//74A+///jHT/7ym//86E+/+tfP/va7//3wj7/850//+tv//vjPv/73z//++///ABiAAjiABFiABniACJiACriADNiADviAEBiBEjiBFFiBFniBGJiBGriBHNiBHviBIBiCIjiCJFiCJniCKJiCKriCLNiCLviCMBiDMjiDNFiDNniDOJiDOriDPNiDPviDQBiEQjiERFiERniESJiESriETNiETviEUBiFUjiFVFiFVniFWJiFWriFXNiFXviFYBiGYjiGZFiGZniGaJiGariGbNiGbviGcBiHcjiHdFiHdniHeJiHeriHfNiHfviHgBiIgjiIhFiIhniIiJiIiriIjNiIjmz4iJAYiZI4iZRYiZZ4iZiYiZq4iZzYiZ74ieA2DmgwAhrwBN9FfeWAct4QDrFAA1ZSfR7ncLdABD0HfURwcQ7nAXdFfRbncN7QYtPnCW/gcKWABdY3D0RwBrcgDPzmb9SnD6KABU/ACHIUEAAAIfkEBWQACgAsOQACAIYB5gAACP8AFQgcSLCgwYMIEypcyLChw4cQI0oc+K+iRYMVJwp0F+VRw4saBU6LskogyIisokSDeDKky4SXopR7SbOmzZs4c9K0yDOjyX8PT64DMKVgSwVHH4GCeAxAo59AFW5rBKxgJABVg/rUiXQrRDEAunEdS7as2bNGe/L8qTWqgqFFCR49KiEHU6dQFwID4JHg1awOj+IU3BCsWLSIEyterPDk2q5tB8JN6zYvwbp3n3atfHBv34F/WXrNSZihYcaoU6se2xLkaLUKsBkKU6UNqG4VJw8c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" class="card-img-top figure-img" alt="A Figure">
<figcaption class="figure-caption"><div class="markdown"><p>After identifying asymptotic behaviours, a curve sketch involves identifying the \(y\) intercept, if applicable; the \(x\) intercepts, if possible; the local extrema; and changes in concavity. From there a sketch fills in between the points. In this example, the periodic function \(f(x) = 10\cdot\sin(\pi/2\cdot x)\) is sketched over \([0,4]\).</p>
</div> </figcaption>
</figure>
</div>
</div>
</div>
<p>Though this approach is most useful for hand-sketches, the underlying concepts are important for properly framing graphs made with the computer.</p>
<p>We can easily make a graph of a function over a specified interval. What is not always so easy is to pick an interval that shows off the features of interest. In the section on <a href="../precalc/rational_functions.html">rational</a> functions there was a discussion about how to draw graphs for rational functions so that horizontal and vertical asymptotes can be seen. These are properties of the “large.” In this section, we build on this, but concentrate now on more local properties of a function.</p>
<section id="example" class="level5">
<h5 class="anchored" data-anchor-id="example">Example</h5>
<p>Produce a graph of the function <span class="math inline">\(f(x) = x^4 -13x^3 + 56x^2-92x + 48\)</span>.</p>
<p>We identify this as a fourth-degree polynomial with postive leading coefficient. Hence it will eventually look <span class="math inline">\(U\)</span>-shaped. If we graph over a too-wide interval, that is all we will see. Rather, we do some work to produce a graph that shows the zeros, peaks, and valleys of <span class="math inline">\(f(x)\)</span>. To do so, we need to know the extent of the zeros. We can try some theory, but instead we just guess and if that fails, will work harder:</p>
<div class="cell" data-execution_count="5">
<div class="sourceCode cell-code" id="cb2"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="fu">f</span>(x) <span class="op">=</span> x<span class="op">^</span><span class="fl">4</span> <span class="op">-</span> <span class="fl">13</span>x<span class="op">^</span><span class="fl">3</span> <span class="op">+</span> <span class="fl">56</span>x<span class="op">^</span><span class="fl">2</span> <span class="op">-</span><span class="fl">92</span>x <span class="op">+</span> <span class="fl">48</span></span>
<span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a>rts <span class="op">=</span> <span class="fu">find_zeros</span>(f, <span class="op">-</span><span class="fl">10</span>, <span class="fl">10</span>)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-display" data-execution_count="6">
<pre><code>4-element Vector{Float64}:
0.9999999999999999
2.000000000000005
4.000000000000004
6.000000000000003</code></pre>
</div>
</div>
<p>As we found <span class="math inline">\(4\)</span> roots, we know by the fundamental theorem of algebra we have them all. This means, our graph need not focus on values much larger than <span class="math inline">\(6\)</span> or much smaller than <span class="math inline">\(1\)</span>.</p>
<p>To know where the peaks and valleys are, we look for the critical points:</p>
<div class="cell" data-execution_count="6">
<div class="sourceCode cell-code" id="cb4"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a>cps <span class="op">=</span> <span class="fu">find_zeros</span>(f<span class="op">'</span>, <span class="fl">1</span>, <span class="fl">6</span>)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-display" data-execution_count="7">
<pre><code>3-element Vector{Float64}:
1.4257862014364733
3.0704645527012464
5.253749245862282</code></pre>
</div>
</div>
<p>Because we have the <span class="math inline">\(4\)</span> distinct zeros, we must have the peaks and valleys appear in an interleaving manner, so a search over <span class="math inline">\([1,6]\)</span> finds all three critical points and without checking, they must correspond to relative extrema.</p>
<p>Next we identify the <em>inflection points</em> which are among the zeros of the second derivative (when defined):</p>
<div class="cell" data-execution_count="7">
<div class="sourceCode cell-code" id="cb6"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true" tabindex="-1"></a>ips <span class="op">=</span> <span class="fu">find_zeros</span>(f<span class="op">''</span>, <span class="fl">1</span>, <span class="fl">6</span>)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-display" data-execution_count="8">
<pre><code>2-element Vector{Float64}:
2.1413221086958276
4.358677891304171</code></pre>
</div>
</div>
<p>If there is no sign change for either <span class="math inline">\(f'\)</span> or <span class="math inline">\(f''\)</span> over <span class="math inline">\([a,b]\)</span> then the sketch of <span class="math inline">\(f\)</span> on this interval must be one of:</p>
<ul>
<li>increasing and concave up (if <span class="math inline">\(f' &gt; 0\)</span> and <span class="math inline">\(f'' &gt; 0\)</span>)</li>
<li>increasing and concave down (if <span class="math inline">\(f' &gt; 0\)</span> and <span class="math inline">\(f'' &lt; 0\)</span>)</li>
<li>decreasing and concave up (if <span class="math inline">\(f' &lt; 0\)</span> and <span class="math inline">\(f'' &gt; 0\)</span>)</li>
<li>decreasing and concave down (if <span class="math inline">\(f' &lt; 0\)</span> and <span class="math inline">\(f'' &lt; 0\)</span>)</li>
</ul>
<p>This aids in sketching the graph between the critical points and inflection points.</p>
<p>We finally check that if we were to just use <span class="math inline">\([0,7]\)</span> as a domain to plot over that the function doesnt get too large to mask the oscillations. This could happen if the <span class="math inline">\(y\)</span> values at the end points are too much larger than the <span class="math inline">\(y\)</span> values at the peaks and valleys, as only so many pixels can be used within a graph. For this we have:</p>
<div class="cell" data-execution_count="8">
<div class="sourceCode cell-code" id="cb8"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true" tabindex="-1"></a><span class="fu">f</span>.([<span class="fl">0</span>, cps<span class="op">...</span>, <span class="fl">7</span>])</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-display" data-execution_count="9">
<pre><code>5-element Vector{Float64}:
48.0
-2.8788980209096167
6.035382559783841
-12.949453288874281
90.0</code></pre>
</div>
</div>
<p>The values at <span class="math inline">\(0\)</span> and at <span class="math inline">\(7\)</span> are a bit large, as compared to the relative extrema, and since we know the graph is eventually <span class="math inline">\(U\)</span>-shaped, this offers no insight. So we narrow the range a bit for the graph:</p>
<div class="cell" data-execution_count="9">
<div class="sourceCode cell-code" id="cb10"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(f, <span class="fl">0.5</span>, <span class="fl">6.5</span>)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-display" data-execution_count="10">
<p><img src="curve_sketching_files/figure-html/cell-10-output-1.svg" class="img-fluid"></p>
</div>
</div>
<hr>
<p>This sort of analysis can be automated. The plot “recipe” for polynomials from the <code>Polynomials</code> package does similar considerations to choose a viewing window:</p>
<div class="cell" data-execution_count="10">
<div class="sourceCode cell-code" id="cb11"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb11-1"><a href="#cb11-1" aria-hidden="true" tabindex="-1"></a>xₚ <span class="op">=</span> <span class="fu">variable</span>(Polynomial)</span>
<span id="cb11-2"><a href="#cb11-2" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(<span class="fu">f</span>(xₚ)) <span class="co"># f(xₚ) of Polynomial type</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-display" data-execution_count="11">
<p><img src="curve_sketching_files/figure-html/cell-11-output-1.svg" class="img-fluid"></p>
</div>
</div>
</section>
<section id="example-1" class="level5">
<h5 class="anchored" data-anchor-id="example-1">Example</h5>
<p>Graph the function</p>
<p><span class="math display">\[
f(x) = \frac{(x-1)\cdot(x-3)^2}{x \cdot (x-2)}.
\]</span></p>
<p>Not much to do here if you are satisfied with a graph that only gives insight into the asymptotes of this rational function:</p>
<div class="cell" data-execution_count="11">
<div class="sourceCode cell-code" id="cb12"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb12-1"><a href="#cb12-1" aria-hidden="true" tabindex="-1"></a><span class="fu">𝒇</span>(x) <span class="op">=</span> ( (x<span class="op">-</span><span class="fl">1</span>)<span class="fu">*</span>(x<span class="op">-</span><span class="fl">3</span>)<span class="op">^</span><span class="fl">2</span> ) <span class="op">/</span> (x <span class="op">*</span> (x<span class="op">-</span><span class="fl">2</span>) )</span>
<span id="cb12-2"><a href="#cb12-2" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(𝒇, <span class="op">-</span><span class="fl">50</span>, <span class="fl">50</span>)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-display" data-execution_count="12">
<p><img src="curve_sketching_files/figure-html/cell-12-output-1.svg" class="img-fluid"></p>
</div>
</div>
<p>We can see the slant asymptote and hints of vertical asymptotes, but, wed like to see more of the basic features of the graph.</p>
<p>Previously, we have discussed rational functions and their asymptotes. This function has numerator of degree <span class="math inline">\(3\)</span> and denominator of degree <span class="math inline">\(2\)</span>, so will have a slant asymptote. As well, the zeros of the denominator, <span class="math inline">\(0\)</span> and <span class="math inline">\(-2\)</span>, will lead to vertical asymptotes.</p>
<p>To identify how wide a viewing window should be, for the rational function the asymptotic behaviour is determined after the concavity is done changing and we are past all relative extrema, so we should take an interval that includes all potential inflection points and critical points:</p>
<div class="cell" data-execution_count="12">
<div class="sourceCode cell-code" id="cb13"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb13-1"><a href="#cb13-1" aria-hidden="true" tabindex="-1"></a>𝒇cps <span class="op">=</span> <span class="fu">find_zeros</span>(𝒇<span class="ch">', -10, 10)</span></span>
<span id="cb13-2"><a href="#cb13-2" aria-hidden="true" tabindex="-1"></a>poss_ips <span class="op">=</span> <span class="fu">find_zero</span>(𝒇<span class="ch">''</span>, (<span class="op">-</span><span class="fl">10</span>, <span class="fl">10</span>))</span>
<span id="cb13-3"><a href="#cb13-3" aria-hidden="true" tabindex="-1"></a><span class="fu">extrema</span>(<span class="fu">union</span>(𝒇cps, poss_ips))</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-display" data-execution_count="13">
<pre><code>(-2.1527576020103956, 3.0)</code></pre>
</div>
</div>
<p>So a range over <span class="math inline">\([-5,5]\)</span> should display the key features including the slant asymptote.</p>
<p>Previously we used the <code>rangeclamp</code> function defined in <code>CalculusWithJulia</code> to avoid the distortion that vertical asymptotes can have:</p>
<div class="cell" data-execution_count="13">
<div class="sourceCode cell-code" id="cb15"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb15-1"><a href="#cb15-1" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(<span class="fu">rangeclamp</span>(𝒇), <span class="op">-</span><span class="fl">5</span>, <span class="fl">5</span>)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-display" data-execution_count="14">
<p><img src="curve_sketching_files/figure-html/cell-14-output-1.svg" class="img-fluid"></p>
</div>
</div>
<p>With this graphic, we can now clearly see in the graph the two zeros at <span class="math inline">\(x=1\)</span> and <span class="math inline">\(x=3\)</span>, the vertical asymptotes at <span class="math inline">\(x=0\)</span> and <span class="math inline">\(x=2\)</span>, and the slant asymptote.</p>
<hr>
<p>Again, this sort of analysis can be systematized. The rational function type in the <code>Polynomials</code> package takes a stab at that, but isnt quite so good at capturing the slant asymptote:</p>
<div class="cell" data-execution_count="14">
<div class="sourceCode cell-code" id="cb16"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb16-1"><a href="#cb16-1" aria-hidden="true" tabindex="-1"></a>xᵣ <span class="op">=</span> <span class="fu">variable</span>(RationalFunction)</span>
<span id="cb16-2"><a href="#cb16-2" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(<span class="fu">𝒇</span>(xᵣ)) <span class="co"># f(x) of RationalFunction type</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-display" data-execution_count="15">
<p><img src="curve_sketching_files/figure-html/cell-15-output-1.svg" class="img-fluid"></p>
</div>
</div>
</section>
<section id="example-2" class="level5">
<h5 class="anchored" data-anchor-id="example-2">Example</h5>
<p>Consider the function <span class="math inline">\(V(t) = 170 \sin(2\pi\cdot 60 \cdot t)\)</span>, a model for the alternating current waveform for an outlet in the United States. Create a graph.</p>
<p>Blindly trying to graph this, we will see immediate issues:</p>
<div class="cell" data-execution_count="15">
<div class="sourceCode cell-code" id="cb17"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb17-1"><a href="#cb17-1" aria-hidden="true" tabindex="-1"></a><span class="fu">V</span>(t) <span class="op">=</span> <span class="fl">170</span> <span class="op">*</span> <span class="fu">sin</span>(<span class="fl">2</span><span class="op">*</span><span class="cn">pi</span><span class="op">*</span><span class="fl">60</span><span class="op">*</span>t)</span>
<span id="cb17-2"><a href="#cb17-2" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(V, <span class="op">-</span><span class="fl">2</span>pi, <span class="fl">2</span>pi)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-display" data-execution_count="16">
<p><img src="curve_sketching_files/figure-html/cell-16-output-1.svg" class="img-fluid"></p>
</div>
</div>
<p>Ahh, this periodic function is <em>too</em> rapidly oscillating to be plotted without care. We recognize this as being of the form <span class="math inline">\(V(t) = a\cdot\sin(c\cdot t)\)</span>, so where the sine function has a period of <span class="math inline">\(2\pi\)</span>, this will have a period of <span class="math inline">\(2\pi/c\)</span>, or <span class="math inline">\(1/60\)</span>. So instead of using <span class="math inline">\((-2\pi, 2\pi)\)</span> as the interval to plot over, we need something much smaller:</p>
<div class="cell" data-execution_count="16">
<div class="sourceCode cell-code" id="cb18"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb18-1"><a href="#cb18-1" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(V, <span class="op">-</span><span class="fl">1</span><span class="op">/</span><span class="fl">60</span>, <span class="fl">1</span><span class="op">/</span><span class="fl">60</span>)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-display" data-execution_count="17">
<p><img src="curve_sketching_files/figure-html/cell-17-output-1.svg" class="img-fluid"></p>
</div>
</div>
</section>
<section id="example-3" class="level5">
<h5 class="anchored" data-anchor-id="example-3">Example</h5>
<p>Plot the function <span class="math inline">\(f(x) = \ln(x/100)/x\)</span>.</p>
<p>We guess that this function has a <em>vertical</em> asymptote at <span class="math inline">\(x=0+\)</span> and a horizontal asymptote as <span class="math inline">\(x \rightarrow \infty\)</span>, we verify through:</p>
<div class="cell" data-execution_count="17">
<div class="sourceCode cell-code" id="cb19"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb19-1"><a href="#cb19-1" aria-hidden="true" tabindex="-1"></a><span class="pp">@syms</span> x</span>
<span id="cb19-2"><a href="#cb19-2" aria-hidden="true" tabindex="-1"></a>ex <span class="op">=</span> <span class="fu">log</span>(x<span class="op">/</span><span class="fl">100</span>)<span class="op">/</span>x</span>
<span id="cb19-3"><a href="#cb19-3" aria-hidden="true" tabindex="-1"></a><span class="fu">limit</span>(ex, x<span class="op">=&gt;</span><span class="fl">0</span>, dir<span class="op">=</span><span class="st">"+"</span>), <span class="fu">limit</span>(ex, x<span class="op">=&gt;</span>oo)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-display" data-execution_count="18">
<pre><code>(-oo, 0)</code></pre>
</div>
</div>
<p>The <span class="math inline">\(\ln(x/100)\)</span> part of <span class="math inline">\(f\)</span> goes <span class="math inline">\(-\infty\)</span> as <span class="math inline">\(x \rightarrow 0+\)</span>; yet <span class="math inline">\(f(x)\)</span> is eventually positive as <span class="math inline">\(x \rightarrow 0\)</span>. So a graph should</p>
<ul>
<li>not show too much of the vertical asymptote</li>
<li>capture the point where <span class="math inline">\(f(x)\)</span> must cross <span class="math inline">\(0\)</span></li>
<li>capture the point where <span class="math inline">\(f(x)\)</span> has a relative maximum</li>
<li>show enough past this maximum to indicate to the reader the eventual horizontal asyptote.</li>
</ul>
<p>For that, we need to get the <span class="math inline">\(x\)</span> intercepts and the critical points. The <span class="math inline">\(x/100\)</span> means this graph has some scaling to it, so we first look between <span class="math inline">\(0\)</span> and <span class="math inline">\(200\)</span>:</p>
<div class="cell" data-execution_count="18">
<div class="sourceCode cell-code" id="cb21"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb21-1"><a href="#cb21-1" aria-hidden="true" tabindex="-1"></a><span class="fu">find_zeros</span>(ex, <span class="fl">0</span>, <span class="fl">200</span>) <span class="co"># domain is (0, oo)</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-display" data-execution_count="19">
<pre><code>1-element Vector{Float64}:
100.0</code></pre>
</div>
</div>
<p>Trying the same for the critical points comes up empty. We know there is one, but it is past <span class="math inline">\(200\)</span>. Scanning wider, we see:</p>
<div class="cell" data-execution_count="19">
<div class="sourceCode cell-code" id="cb23"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb23-1"><a href="#cb23-1" aria-hidden="true" tabindex="-1"></a><span class="fu">find_zeros</span>(<span class="fu">diff</span>(ex,x), <span class="fl">0</span>, <span class="fl">500</span>)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-display" data-execution_count="20">
<pre><code>1-element Vector{Float64}:
271.8281828459045</code></pre>
</div>
</div>
<p>So maybe graphing over <span class="math inline">\([50, 300]\)</span> will be a good start:</p>
<div class="cell" data-execution_count="20">
<div class="sourceCode cell-code" id="cb25"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb25-1"><a href="#cb25-1" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(ex, <span class="fl">50</span>, <span class="fl">300</span>)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-display" data-execution_count="21">
<p><img src="curve_sketching_files/figure-html/cell-21-output-1.svg" class="img-fluid"></p>
</div>
</div>
<p>But it isnt! The function takes its time getting back towards <span class="math inline">\(0\)</span>. We know that there must be a change of concavity as <span class="math inline">\(x \rightarrow \infty\)</span>, as there is a horizontal asymptote. We looks for the anticipated inflection point to ensure our graph includes that:</p>
<div class="cell" data-execution_count="21">
<div class="sourceCode cell-code" id="cb26"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb26-1"><a href="#cb26-1" aria-hidden="true" tabindex="-1"></a><span class="fu">find_zeros</span>(<span class="fu">diff</span>(ex, x, x), <span class="fl">1</span>, <span class="fl">5000</span>)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-display" data-execution_count="22">
<pre><code>1-element Vector{Float64}:
448.1689070338064</code></pre>
</div>
</div>
<p>So a better plot is found by going well beyond that inflection point:</p>
<div class="cell" data-execution_count="22">
<div class="sourceCode cell-code" id="cb28"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb28-1"><a href="#cb28-1" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(ex, <span class="fl">75</span>, <span class="fl">1500</span>)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-display" data-execution_count="23">
<p><img src="curve_sketching_files/figure-html/cell-23-output-1.svg" class="img-fluid"></p>
</div>
</div>
</section>
<section id="questions" class="level2" data-number="28.1">
<h2 data-number="28.1" class="anchored" data-anchor-id="questions"><span class="header-section-number">28.1</span> Questions</h2>
<section id="question" class="level6">
<h6 class="anchored" data-anchor-id="question">Question</h6>
<p>Consider this graph</p>
<div class="cell" data-hold="true" data-execution_count="23">
<div class="cell-output cell-output-display" data-execution_count="24">
<p><img src="curve_sketching_files/figure-html/cell-24-output-1.svg" class="img-fluid"></p>
</div>
</div>
<p>What kind of <em>asymptotes</em> does it appear to have?</p>
<div class="cell" data-hold="true" data-execution_count="24">
<div class="cell-output cell-output-display" data-execution_count="25">
<form class="mx-2 my-3 mw-100" name="WeaveQuestion" data-id="15960807797932062823" data-controltype="">
<div class="form-group ">
<div class="controls">
<div class="form" id="controls_15960807797932062823">
<div style="padding-top: 5px">
<div class="form-check">
<label class="form-check-label" for="radio_15960807797932062823_1">
<input class="form-check-input" type="radio" name="radio_15960807797932062823" id="radio_15960807797932062823_1" value="1">
<span class="label-body px-1">
Just a horizontal asymptote, \(y=0\)
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_15960807797932062823_2">
<input class="form-check-input" type="radio" name="radio_15960807797932062823" id="radio_15960807797932062823_2" value="2">
<span class="label-body px-1">
Just vertical asymptotes at \(x=-1\) and \(x=1\)
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_15960807797932062823_3">
<input class="form-check-input" type="radio" name="radio_15960807797932062823" id="radio_15960807797932062823_3" value="3">
<span class="label-body px-1">
Vertical asymptotes at \(x=-1\) and \(x=1\) and a horizontal asymptote \(y=1\)
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_15960807797932062823_4">
<input class="form-check-input" type="radio" name="radio_15960807797932062823" id="radio_15960807797932062823_4" value="4">
<span class="label-body px-1">
Vertical asymptotes at \(x=-1\) and \(x=1\) and a slant asymptote
</span>
</label>
</div>
</div>
</div>
<div id="15960807797932062823_message" style="padding-bottom: 15px"></div>
</div>
</div>
</form>
<script text="text/javascript">
document.querySelectorAll('input[name="radio_15960807797932062823"]').forEach(function(rb) {
rb.addEventListener("change", function() {
var correct = rb.value == 4;
var msgBox = document.getElementById('15960807797932062823_message');
if(correct) {
msgBox.innerHTML = "<div class='pluto-output admonition note alert alert-success'><span> 👍&nbsp; Correct </span></div>";
var explanation = document.getElementById("explanation_15960807797932062823")
if (explanation != null) {
explanation.style.display = "none";
}
} else {
msgBox.innerHTML = "<div class='pluto-output admonition alert alert-danger'><span>👎&nbsp; Incorrect </span></div>";
var explanation = document.getElementById("explanation_15960807797932062823")
if (explanation != null) {
explanation.style.display = "block";
}
}
})});
</script>
</div>
</div>
</section>
<section id="question-1" class="level6">
<h6 class="anchored" data-anchor-id="question-1">Question</h6>
<p>Consider the function <span class="math inline">\(p(x) = x + 2x^3 + 3x^3 + 4x^4 + 5x^5 +6x^6\)</span>. Which interval shows more than a <span class="math inline">\(U\)</span>-shaped graph that dominates for large <span class="math inline">\(x\)</span> due to the leading term being <span class="math inline">\(6x^6\)</span>?</p>
<p>(Find an interval that contains the zeros, critical points, and inflection points.)</p>
<div class="cell" data-hold="true" data-execution_count="25">
<div class="cell-output cell-output-display" data-execution_count="26">
<form class="mx-2 my-3 mw-100" name="WeaveQuestion" data-id="16652237429635016138" data-controltype="">
<div class="form-group ">
<div class="controls">
<div class="form" id="controls_16652237429635016138">
<div style="padding-top: 5px">
<div class="form-check">
<label class="form-check-label" for="radio_16652237429635016138_1">
<input class="form-check-input" type="radio" name="radio_16652237429635016138" id="radio_16652237429635016138_1" value="1">
<span class="label-body px-1">
\((-5,5)\), the default bounds of a calculator
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_16652237429635016138_2">
<input class="form-check-input" type="radio" name="radio_16652237429635016138" id="radio_16652237429635016138_2" value="2">
<span class="label-body px-1">
\((-3.5, 3.5)\), the bounds given by Cauchy for the real roots of \(p\)
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_16652237429635016138_3">
<input class="form-check-input" type="radio" name="radio_16652237429635016138" id="radio_16652237429635016138_3" value="3">
<span class="label-body px-1">
\((-1, 1)\), as many special polynomials have their roots in this interval
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_16652237429635016138_4">
<input class="form-check-input" type="radio" name="radio_16652237429635016138" id="radio_16652237429635016138_4" value="4">
<span class="label-body px-1">
\((-1.1, .25)\), as this constains all the roots, the critical points, and inflection points and just a bit more
</span>
</label>
</div>
</div>
</div>
<div id="16652237429635016138_message" style="padding-bottom: 15px"></div>
</div>
</div>
</form>
<script text="text/javascript">
document.querySelectorAll('input[name="radio_16652237429635016138"]').forEach(function(rb) {
rb.addEventListener("change", function() {
var correct = rb.value == 4;
var msgBox = document.getElementById('16652237429635016138_message');
if(correct) {
msgBox.innerHTML = "<div class='pluto-output admonition note alert alert-success'><span> 👍&nbsp; Correct </span></div>";
var explanation = document.getElementById("explanation_16652237429635016138")
if (explanation != null) {
explanation.style.display = "none";
}
} else {
msgBox.innerHTML = "<div class='pluto-output admonition alert alert-danger'><span>👎&nbsp; Incorrect </span></div>";
var explanation = document.getElementById("explanation_16652237429635016138")
if (explanation != null) {
explanation.style.display = "block";
}
}
})});
</script>
</div>
</div>
</section>
<section id="question-2" class="level6">
<h6 class="anchored" data-anchor-id="question-2">Question</h6>
<p>Let <span class="math inline">\(f(x) = x^3/(9-x^2)\)</span>.</p>
<p>What points are <em>not</em> in the domain of <span class="math inline">\(f\)</span>?</p>
<div class="cell" data-execution_count="26">
<div class="cell-output cell-output-display" data-execution_count="27">
<form class="mx-2 my-3 mw-100" name="WeaveQuestion" data-id="342412158759621938" data-controltype="">
<div class="form-group ">
<div class="controls">
<div class="form" id="controls_342412158759621938">
<div style="padding-top: 5px">
<div class="form-check">
<label class="form-check-label" for="radio_342412158759621938_1">
<input class="form-check-input" type="radio" name="radio_342412158759621938" id="radio_342412158759621938_1" value="1">
<span class="label-body px-1">
The values of <code>find_zeros(f, -10, 10)</code>: <code>[-3, 0, 3]</code>
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_342412158759621938_2">
<input class="form-check-input" type="radio" name="radio_342412158759621938" id="radio_342412158759621938_2" value="2">
<span class="label-body px-1">
The values of <code>find_zeros(f', -10, 10)</code>: <code>[-5.19615, 0, 5.19615]</code>
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_342412158759621938_3">
<input class="form-check-input" type="radio" name="radio_342412158759621938" id="radio_342412158759621938_3" value="3">
<span class="label-body px-1">
The values of <code>find_zeros(f'', -10, 10)</code>: <code>[-3, 0, 3]</code>
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_342412158759621938_4">
<input class="form-check-input" type="radio" name="radio_342412158759621938" id="radio_342412158759621938_4" value="4">
<span class="label-body px-1">
The zeros of the numerator: <code>[0]</code>
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_342412158759621938_5">
<input class="form-check-input" type="radio" name="radio_342412158759621938" id="radio_342412158759621938_5" value="5">
<span class="label-body px-1">
The zeros of the denominator: <code>[-3, 3]</code>
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_342412158759621938_6">
<input class="form-check-input" type="radio" name="radio_342412158759621938" id="radio_342412158759621938_6" value="6">
<span class="label-body px-1">
The value of <code>f(0)</code>: <code>0</code>
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_342412158759621938_7">
<input class="form-check-input" type="radio" name="radio_342412158759621938" id="radio_342412158759621938_7" value="7">
<span class="label-body px-1">
None of these choices
</span>
</label>
</div>
</div>
</div>
<div id="342412158759621938_message" style="padding-bottom: 15px"></div>
</div>
</div>
</form>
<script text="text/javascript">
document.querySelectorAll('input[name="radio_342412158759621938"]').forEach(function(rb) {
rb.addEventListener("change", function() {
var correct = rb.value == 5;
var msgBox = document.getElementById('342412158759621938_message');
if(correct) {
msgBox.innerHTML = "<div class='pluto-output admonition note alert alert-success'><span> 👍&nbsp; Correct </span></div>";
var explanation = document.getElementById("explanation_342412158759621938")
if (explanation != null) {
explanation.style.display = "none";
}
} else {
msgBox.innerHTML = "<div class='pluto-output admonition alert alert-danger'><span>👎&nbsp; Incorrect </span></div>";
var explanation = document.getElementById("explanation_342412158759621938")
if (explanation != null) {
explanation.style.display = "block";
}
}
})});
</script>
</div>
</div>
<p>The <span class="math inline">\(x\)</span>-intercepts are:</p>
<div class="cell" data-hold="true" data-execution_count="27">
<div class="cell-output cell-output-display" data-execution_count="28">
<form class="mx-2 my-3 mw-100" name="WeaveQuestion" data-id="16734935305345779169" data-controltype="">
<div class="form-group ">
<div class="controls">
<div class="form" id="controls_16734935305345779169">
<div style="padding-top: 5px">
<div class="form-check">
<label class="form-check-label" for="radio_16734935305345779169_1">
<input class="form-check-input" type="radio" name="radio_16734935305345779169" id="radio_16734935305345779169_1" value="1">
<span class="label-body px-1">
The values of <code>find_zeros(f, -10, 10)</code>: <code>[-3, 0, 3]</code>
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_16734935305345779169_2">
<input class="form-check-input" type="radio" name="radio_16734935305345779169" id="radio_16734935305345779169_2" value="2">
<span class="label-body px-1">
The values of <code>find_zeros(f', -10, 10)</code>: <code>[-5.19615, 0, 5.19615]</code>
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_16734935305345779169_3">
<input class="form-check-input" type="radio" name="radio_16734935305345779169" id="radio_16734935305345779169_3" value="3">
<span class="label-body px-1">
The values of <code>find_zeros(f'', -10, 10)</code>: <code>[-3, 0, 3]</code>
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_16734935305345779169_4">
<input class="form-check-input" type="radio" name="radio_16734935305345779169" id="radio_16734935305345779169_4" value="4">
<span class="label-body px-1">
The zeros of the numerator: <code>[0]</code>
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_16734935305345779169_5">
<input class="form-check-input" type="radio" name="radio_16734935305345779169" id="radio_16734935305345779169_5" value="5">
<span class="label-body px-1">
The zeros of the denominator: <code>[-3, 3]</code>
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_16734935305345779169_6">
<input class="form-check-input" type="radio" name="radio_16734935305345779169" id="radio_16734935305345779169_6" value="6">
<span class="label-body px-1">
The value of <code>f(0)</code>: <code>0</code>
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_16734935305345779169_7">
<input class="form-check-input" type="radio" name="radio_16734935305345779169" id="radio_16734935305345779169_7" value="7">
<span class="label-body px-1">
None of these choices
</span>
</label>
</div>
</div>
</div>
<div id="16734935305345779169_message" style="padding-bottom: 15px"></div>
</div>
</div>
</form>
<script text="text/javascript">
document.querySelectorAll('input[name="radio_16734935305345779169"]').forEach(function(rb) {
rb.addEventListener("change", function() {
var correct = rb.value == 4;
var msgBox = document.getElementById('16734935305345779169_message');
if(correct) {
msgBox.innerHTML = "<div class='pluto-output admonition note alert alert-success'><span> 👍&nbsp; Correct </span></div>";
var explanation = document.getElementById("explanation_16734935305345779169")
if (explanation != null) {
explanation.style.display = "none";
}
} else {
msgBox.innerHTML = "<div class='pluto-output admonition alert alert-danger'><span>👎&nbsp; Incorrect </span></div>";
var explanation = document.getElementById("explanation_16734935305345779169")
if (explanation != null) {
explanation.style.display = "block";
}
}
})});
</script>
</div>
</div>
<p>The <span class="math inline">\(y\)</span>-intercept is:</p>
<div class="cell" data-hold="true" data-execution_count="28">
<div class="cell-output cell-output-display" data-execution_count="29">
<form class="mx-2 my-3 mw-100" name="WeaveQuestion" data-id="4379146410226921356" data-controltype="">
<div class="form-group ">
<div class="controls">
<div class="form" id="controls_4379146410226921356">
<div style="padding-top: 5px">
<div class="form-check">
<label class="form-check-label" for="radio_4379146410226921356_1">
<input class="form-check-input" type="radio" name="radio_4379146410226921356" id="radio_4379146410226921356_1" value="1">
<span class="label-body px-1">
The values of <code>find_zeros(f, -10, 10)</code>: <code>[-3, 0, 3]</code>
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_4379146410226921356_2">
<input class="form-check-input" type="radio" name="radio_4379146410226921356" id="radio_4379146410226921356_2" value="2">
<span class="label-body px-1">
The values of <code>find_zeros(f', -10, 10)</code>: <code>[-5.19615, 0, 5.19615]</code>
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_4379146410226921356_3">
<input class="form-check-input" type="radio" name="radio_4379146410226921356" id="radio_4379146410226921356_3" value="3">
<span class="label-body px-1">
The values of <code>find_zeros(f'', -10, 10)</code>: <code>[-3, 0, 3]</code>
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_4379146410226921356_4">
<input class="form-check-input" type="radio" name="radio_4379146410226921356" id="radio_4379146410226921356_4" value="4">
<span class="label-body px-1">
The zeros of the numerator: <code>[0]</code>
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_4379146410226921356_5">
<input class="form-check-input" type="radio" name="radio_4379146410226921356" id="radio_4379146410226921356_5" value="5">
<span class="label-body px-1">
The zeros of the denominator: <code>[-3, 3]</code>
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_4379146410226921356_6">
<input class="form-check-input" type="radio" name="radio_4379146410226921356" id="radio_4379146410226921356_6" value="6">
<span class="label-body px-1">
The value of <code>f(0)</code>: <code>0</code>
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_4379146410226921356_7">
<input class="form-check-input" type="radio" name="radio_4379146410226921356" id="radio_4379146410226921356_7" value="7">
<span class="label-body px-1">
None of these choices
</span>
</label>
</div>
</div>
</div>
<div id="4379146410226921356_message" style="padding-bottom: 15px"></div>
</div>
</div>
</form>
<script text="text/javascript">
document.querySelectorAll('input[name="radio_4379146410226921356"]').forEach(function(rb) {
rb.addEventListener("change", function() {
var correct = rb.value == 6;
var msgBox = document.getElementById('4379146410226921356_message');
if(correct) {
msgBox.innerHTML = "<div class='pluto-output admonition note alert alert-success'><span> 👍&nbsp; Correct </span></div>";
var explanation = document.getElementById("explanation_4379146410226921356")
if (explanation != null) {
explanation.style.display = "none";
}
} else {
msgBox.innerHTML = "<div class='pluto-output admonition alert alert-danger'><span>👎&nbsp; Incorrect </span></div>";
var explanation = document.getElementById("explanation_4379146410226921356")
if (explanation != null) {
explanation.style.display = "block";
}
}
})});
</script>
</div>
</div>
<p>There are <em>vertical asymptotes</em> at <span class="math inline">\(x=\dots\)</span>?</p>
<div class="cell" data-hold="true" data-execution_count="29">
<div class="cell-output cell-output-display" data-execution_count="30">
<form class="mx-2 my-3 mw-100" name="WeaveQuestion" data-id="10833813170044518280" data-controltype="">
<div class="form-group ">
<div class="controls">
<div class="form" id="controls_10833813170044518280">
<div style="padding-top: 5px">
<div class="form-check">
<label class="form-check-label" for="radio_10833813170044518280_1">
<input class="form-check-input" type="radio" name="radio_10833813170044518280" id="radio_10833813170044518280_1" value="1">
<span class="label-body px-1">
The value of <code>f(0)</code>: <code>0</code>
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_10833813170044518280_2">
<input class="form-check-input" type="radio" name="radio_10833813170044518280" id="radio_10833813170044518280_2" value="2">
<span class="label-body px-1">
The values of <code>find_zeros(f, -10, 10)</code>: <code>[-3, 0, 3]</code>
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_10833813170044518280_3">
<input class="form-check-input" type="radio" name="radio_10833813170044518280" id="radio_10833813170044518280_3" value="3">
<span class="label-body px-1">
None of these choices
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_10833813170044518280_4">
<input class="form-check-input" type="radio" name="radio_10833813170044518280" id="radio_10833813170044518280_4" value="4">
<span class="label-body px-1">
The values of <code>find_zeros(f', -10, 10)</code>: <code>[-5.19615, 0, 5.19615]</code>
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_10833813170044518280_5">
<input class="form-check-input" type="radio" name="radio_10833813170044518280" id="radio_10833813170044518280_5" value="5">
<span class="label-body px-1">
The zeros of the denominator: <code>[-3, 3]</code>
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_10833813170044518280_6">
<input class="form-check-input" type="radio" name="radio_10833813170044518280" id="radio_10833813170044518280_6" value="6">
<span class="label-body px-1">
The zeros of the numerator: <code>[0]</code>
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_10833813170044518280_7">
<input class="form-check-input" type="radio" name="radio_10833813170044518280" id="radio_10833813170044518280_7" value="7">
<span class="label-body px-1">
The values of <code>find_zeros(f'', -10, 10)</code>: <code>[-3, 0, 3]</code>
</span>
</label>
</div>
</div>
</div>
<div id="10833813170044518280_message" style="padding-bottom: 15px"></div>
</div>
</div>
</form>
<script text="text/javascript">
document.querySelectorAll('input[name="radio_10833813170044518280"]').forEach(function(rb) {
rb.addEventListener("change", function() {
var correct = rb.value == 5;
var msgBox = document.getElementById('10833813170044518280_message');
if(correct) {
msgBox.innerHTML = "<div class='pluto-output admonition note alert alert-success'><span> 👍&nbsp; Correct </span></div>";
var explanation = document.getElementById("explanation_10833813170044518280")
if (explanation != null) {
explanation.style.display = "none";
}
} else {
msgBox.innerHTML = "<div class='pluto-output admonition alert alert-danger'><span>👎&nbsp; Incorrect </span></div>";
var explanation = document.getElementById("explanation_10833813170044518280")
if (explanation != null) {
explanation.style.display = "block";
}
}
})});
</script>
</div>
</div>
<p>The <em>slant</em> asymptote has slope?</p>
<div class="cell" data-hold="true" data-execution_count="30">
<div class="cell-output cell-output-display" data-execution_count="31">
<form class="mx-2 my-3 mw-100" name="WeaveQuestion" data-id="13028554335859461168" data-controltype="">
<div class="form-group ">
<div class="controls">
<div class="form" id="controls_13028554335859461168">
<div style="padding-top: 5px">
<br>
<div class="input-group">
<input id="13028554335859461168" type="number" class="form-control" placeholder="Numeric answer">
</div>
</div>
</div>
<div id="13028554335859461168_message" style="padding-bottom: 15px"></div>
</div>
</div>
</form>
<script text="text/javascript">
document.getElementById("13028554335859461168").addEventListener("change", function() {
var correct = (Math.abs(this.value - 1) <= 0);
var msgBox = document.getElementById('13028554335859461168_message');
if(correct) {
msgBox.innerHTML = "<div class='pluto-output admonition note alert alert-success'><span> 👍&nbsp; Correct </span></div>";
var explanation = document.getElementById("explanation_13028554335859461168")
if (explanation != null) {
explanation.style.display = "none";
}
} else {
msgBox.innerHTML = "<div class='pluto-output admonition alert alert-danger'><span>👎&nbsp; Incorrect </span></div>";
var explanation = document.getElementById("explanation_13028554335859461168")
if (explanation != null) {
explanation.style.display = "block";
}
}
});
</script>
</div>
</div>
<p>The function has critical points at</p>
<div class="cell" data-hold="true,echo" data-execution_count="31">
<div class="sourceCode cell-code" id="cb29"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb29-1"><a href="#cb29-1" aria-hidden="true" tabindex="-1"></a><span class="fu">radioq</span>(qchoices, <span class="fl">2</span>, keep_order<span class="op">=</span><span class="cn">true</span>)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-display" data-execution_count="32">
<form class="mx-2 my-3 mw-100" name="WeaveQuestion" data-id="17545144651571496111" data-controltype="">
<div class="form-group ">
<div class="controls">
<div class="form" id="controls_17545144651571496111">
<div style="padding-top: 5px">
<div class="form-check">
<label class="form-check-label" for="radio_17545144651571496111_1">
<input class="form-check-input" type="radio" name="radio_17545144651571496111" id="radio_17545144651571496111_1" value="1">
<span class="label-body px-1">
The values of <code>find_zeros(f, -10, 10)</code>: <code>[-3, 0, 3]</code>
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_17545144651571496111_2">
<input class="form-check-input" type="radio" name="radio_17545144651571496111" id="radio_17545144651571496111_2" value="2">
<span class="label-body px-1">
The values of <code>find_zeros(f', -10, 10)</code>: <code>[-5.19615, 0, 5.19615]</code>
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_17545144651571496111_3">
<input class="form-check-input" type="radio" name="radio_17545144651571496111" id="radio_17545144651571496111_3" value="3">
<span class="label-body px-1">
The values of <code>find_zeros(f'', -10, 10)</code>: <code>[-3, 0, 3]</code>
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_17545144651571496111_4">
<input class="form-check-input" type="radio" name="radio_17545144651571496111" id="radio_17545144651571496111_4" value="4">
<span class="label-body px-1">
The zeros of the numerator: <code>[0]</code>
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_17545144651571496111_5">
<input class="form-check-input" type="radio" name="radio_17545144651571496111" id="radio_17545144651571496111_5" value="5">
<span class="label-body px-1">
The zeros of the denominator: <code>[-3, 3]</code>
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_17545144651571496111_6">
<input class="form-check-input" type="radio" name="radio_17545144651571496111" id="radio_17545144651571496111_6" value="6">
<span class="label-body px-1">
The value of <code>f(0)</code>: <code>0</code>
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_17545144651571496111_7">
<input class="form-check-input" type="radio" name="radio_17545144651571496111" id="radio_17545144651571496111_7" value="7">
<span class="label-body px-1">
None of these choices
</span>
</label>
</div>
</div>
</div>
<div id="17545144651571496111_message" style="padding-bottom: 15px"></div>
</div>
</div>
</form>
<script text="text/javascript">
document.querySelectorAll('input[name="radio_17545144651571496111"]').forEach(function(rb) {
rb.addEventListener("change", function() {
var correct = rb.value == 2;
var msgBox = document.getElementById('17545144651571496111_message');
if(correct) {
msgBox.innerHTML = "<div class='pluto-output admonition note alert alert-success'><span> 👍&nbsp; Correct </span></div>";
var explanation = document.getElementById("explanation_17545144651571496111")
if (explanation != null) {
explanation.style.display = "none";
}
} else {
msgBox.innerHTML = "<div class='pluto-output admonition alert alert-danger'><span>👎&nbsp; Incorrect </span></div>";
var explanation = document.getElementById("explanation_17545144651571496111")
if (explanation != null) {
explanation.style.display = "block";
}
}
})});
</script>
</div>
</div>
<p>The function has relative extrema at</p>
<div class="cell" data-hold="true" data-execution_count="32">
<div class="cell-output cell-output-display" data-execution_count="33">
<form class="mx-2 my-3 mw-100" name="WeaveQuestion" data-id="11388292424505177996" data-controltype="">
<div class="form-group ">
<div class="controls">
<div class="form" id="controls_11388292424505177996">
<div style="padding-top: 5px">
<div class="form-check">
<label class="form-check-label" for="radio_11388292424505177996_1">
<input class="form-check-input" type="radio" name="radio_11388292424505177996" id="radio_11388292424505177996_1" value="1">
<span class="label-body px-1">
The values of <code>find_zeros(f, -10, 10)</code>: <code>[-3, 0, 3]</code>
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_11388292424505177996_2">
<input class="form-check-input" type="radio" name="radio_11388292424505177996" id="radio_11388292424505177996_2" value="2">
<span class="label-body px-1">
The values of <code>find_zeros(f', -10, 10)</code>: <code>[-5.19615, 0, 5.19615]</code>
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_11388292424505177996_3">
<input class="form-check-input" type="radio" name="radio_11388292424505177996" id="radio_11388292424505177996_3" value="3">
<span class="label-body px-1">
The values of <code>find_zeros(f'', -10, 10)</code>: <code>[-3, 0, 3]</code>
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_11388292424505177996_4">
<input class="form-check-input" type="radio" name="radio_11388292424505177996" id="radio_11388292424505177996_4" value="4">
<span class="label-body px-1">
The zeros of the numerator: <code>[0]</code>
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_11388292424505177996_5">
<input class="form-check-input" type="radio" name="radio_11388292424505177996" id="radio_11388292424505177996_5" value="5">
<span class="label-body px-1">
The zeros of the denominator: <code>[-3, 3]</code>
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_11388292424505177996_6">
<input class="form-check-input" type="radio" name="radio_11388292424505177996" id="radio_11388292424505177996_6" value="6">
<span class="label-body px-1">
The value of <code>f(0)</code>: <code>0</code>
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_11388292424505177996_7">
<input class="form-check-input" type="radio" name="radio_11388292424505177996" id="radio_11388292424505177996_7" value="7">
<span class="label-body px-1">
None of these choices
</span>
</label>
</div>
</div>
</div>
<div id="11388292424505177996_message" style="padding-bottom: 15px"></div>
</div>
</div>
</form>
<script text="text/javascript">
document.querySelectorAll('input[name="radio_11388292424505177996"]').forEach(function(rb) {
rb.addEventListener("change", function() {
var correct = rb.value == 7;
var msgBox = document.getElementById('11388292424505177996_message');
if(correct) {
msgBox.innerHTML = "<div class='pluto-output admonition note alert alert-success'><span> 👍&nbsp; Correct </span></div>";
var explanation = document.getElementById("explanation_11388292424505177996")
if (explanation != null) {
explanation.style.display = "none";
}
} else {
msgBox.innerHTML = "<div class='pluto-output admonition alert alert-danger'><span>👎&nbsp; Incorrect </span></div>";
var explanation = document.getElementById("explanation_11388292424505177996")
if (explanation != null) {
explanation.style.display = "block";
}
}
})});
</script>
</div>
</div>
<p>The function has inflection points at</p>
<div class="cell" data-hold="true" data-execution_count="33">
<div class="cell-output cell-output-display" data-execution_count="34">
<form class="mx-2 my-3 mw-100" name="WeaveQuestion" data-id="12339552066780780167" data-controltype="">
<div class="form-group ">
<div class="controls">
<div class="form" id="controls_12339552066780780167">
<div style="padding-top: 5px">
<div class="form-check">
<label class="form-check-label" for="radio_12339552066780780167_1">
<input class="form-check-input" type="radio" name="radio_12339552066780780167" id="radio_12339552066780780167_1" value="1">
<span class="label-body px-1">
The values of <code>find_zeros(f, -10, 10)</code>: <code>[-3, 0, 3]</code>
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_12339552066780780167_2">
<input class="form-check-input" type="radio" name="radio_12339552066780780167" id="radio_12339552066780780167_2" value="2">
<span class="label-body px-1">
The values of <code>find_zeros(f', -10, 10)</code>: <code>[-5.19615, 0, 5.19615]</code>
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_12339552066780780167_3">
<input class="form-check-input" type="radio" name="radio_12339552066780780167" id="radio_12339552066780780167_3" value="3">
<span class="label-body px-1">
The values of <code>find_zeros(f'', -10, 10)</code>: <code>[-3, 0, 3]</code>
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_12339552066780780167_4">
<input class="form-check-input" type="radio" name="radio_12339552066780780167" id="radio_12339552066780780167_4" value="4">
<span class="label-body px-1">
The zeros of the numerator: <code>[0]</code>
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_12339552066780780167_5">
<input class="form-check-input" type="radio" name="radio_12339552066780780167" id="radio_12339552066780780167_5" value="5">
<span class="label-body px-1">
The zeros of the denominator: <code>[-3, 3]</code>
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_12339552066780780167_6">
<input class="form-check-input" type="radio" name="radio_12339552066780780167" id="radio_12339552066780780167_6" value="6">
<span class="label-body px-1">
The value of <code>f(0)</code>: <code>0</code>
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_12339552066780780167_7">
<input class="form-check-input" type="radio" name="radio_12339552066780780167" id="radio_12339552066780780167_7" value="7">
<span class="label-body px-1">
None of these choices
</span>
</label>
</div>
</div>
</div>
<div id="12339552066780780167_message" style="padding-bottom: 15px"></div>
</div>
</div>
</form>
<script text="text/javascript">
document.querySelectorAll('input[name="radio_12339552066780780167"]').forEach(function(rb) {
rb.addEventListener("change", function() {
var correct = rb.value == 7;
var msgBox = document.getElementById('12339552066780780167_message');
if(correct) {
msgBox.innerHTML = "<div class='pluto-output admonition note alert alert-success'><span> 👍&nbsp; Correct </span></div>";
var explanation = document.getElementById("explanation_12339552066780780167")
if (explanation != null) {
explanation.style.display = "none";
}
} else {
msgBox.innerHTML = "<div class='pluto-output admonition alert alert-danger'><span>👎&nbsp; Incorrect </span></div>";
var explanation = document.getElementById("explanation_12339552066780780167")
if (explanation != null) {
explanation.style.display = "block";
}
}
})});
</script>
</div>
</div>
</section>
<section id="question-3" class="level6">
<h6 class="anchored" data-anchor-id="question-3">Question</h6>
<p>A function <span class="math inline">\(f\)</span> has</p>
<ul>
<li>zeros of <span class="math inline">\(\{-0.7548\dots, 2.0\}\)</span>,</li>
<li>critical points at <span class="math inline">\(\{-0.17539\dots, 1.0, 1.42539\dots\}\)</span>,</li>
<li>inflection points at <span class="math inline">\(\{0.2712\dots,1.2287\}\)</span>.</li>
</ul>
<p>Is this a possible graph of <span class="math inline">\(f\)</span>?</p>
<div class="cell" data-hold="true" data-execution_count="34">
<div class="cell-output cell-output-display" data-execution_count="35">
<p><img src="curve_sketching_files/figure-html/cell-35-output-1.svg" class="img-fluid"></p>
</div>
</div>
<div class="cell" data-hold="true" data-execution_count="35">
<div class="cell-output cell-output-display" data-execution_count="36">
<form class="mx-2 my-3 mw-100" name="WeaveQuestion" data-id="7897674602405631850" data-controltype="">
<div class="form-group ">
<div class="controls">
<div class="form" id="controls_7897674602405631850">
<div style="padding-top: 5px">
<div class="form-check">
<label class="form-check-label" for="radio_7897674602405631850_1">
<input class="form-check-input" type="radio" name="radio_7897674602405631850" id="radio_7897674602405631850_1" value="1">
<span class="label-body px-1">
Yes
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_7897674602405631850_2">
<input class="form-check-input" type="radio" name="radio_7897674602405631850" id="radio_7897674602405631850_2" value="2">
<span class="label-body px-1">
No
</span>
</label>
</div>
</div>
</div>
<div id="7897674602405631850_message" style="padding-bottom: 15px"></div>
</div>
</div>
</form>
<script text="text/javascript">
document.querySelectorAll('input[name="radio_7897674602405631850"]').forEach(function(rb) {
rb.addEventListener("change", function() {
var correct = rb.value == 1;
var msgBox = document.getElementById('7897674602405631850_message');
if(correct) {
msgBox.innerHTML = "<div class='pluto-output admonition note alert alert-success'><span> 👍&nbsp; Correct </span></div>";
var explanation = document.getElementById("explanation_7897674602405631850")
if (explanation != null) {
explanation.style.display = "none";
}
} else {
msgBox.innerHTML = "<div class='pluto-output admonition alert alert-danger'><span>👎&nbsp; Incorrect </span></div>";
var explanation = document.getElementById("explanation_7897674602405631850")
if (explanation != null) {
explanation.style.display = "block";
}
}
})});
</script>
</div>
</div>
</section>
<section id="question-4" class="level6">
<h6 class="anchored" data-anchor-id="question-4">Question</h6>
<p>Two models for population growth are <em>exponential</em> growth: <span class="math inline">\(P(t) = P_0 a^t\)</span> and <a href="https://en.wikipedia.org/wiki/Logistic_function#In_ecology:_modeling_population_growth">logistic growth</a>: <span class="math inline">\(P(t) = K P_0 a^t / (K + P_0(a^t - 1))\)</span>. The exponential growth model has growth rate proportional to the current population. The logistic model has growth rate depending on the current population <em>and</em> the available resources (which can limit growth).</p>
<p>Letting <span class="math inline">\(K=10\)</span>, <span class="math inline">\(P_0=5\)</span>, and <span class="math inline">\(a= e^{1/4}\)</span>. A plot over <span class="math inline">\([0,5]\)</span> shows somewhat similar behaviour:</p>
<div class="cell" data-execution_count="36">
<div class="sourceCode cell-code" id="cb30"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb30-1"><a href="#cb30-1" aria-hidden="true" tabindex="-1"></a>K, P0, a <span class="op">=</span> <span class="fl">50</span>, <span class="fl">5</span>, <span class="fu">exp</span>(<span class="fl">1</span><span class="op">/</span><span class="fl">4</span>)</span>
<span id="cb30-2"><a href="#cb30-2" aria-hidden="true" tabindex="-1"></a><span class="fu">exponential_growth</span>(t) <span class="op">=</span> P0 <span class="op">*</span> a<span class="op">^</span>t</span>
<span id="cb30-3"><a href="#cb30-3" aria-hidden="true" tabindex="-1"></a><span class="fu">logistic_growth</span>(t) <span class="op">=</span> K <span class="op">*</span> P0 <span class="op">*</span> a<span class="op">^</span>t <span class="op">/</span> (K <span class="op">+</span> <span class="fu">P0*</span>(a<span class="op">^</span>t<span class="op">-</span><span class="fl">1</span>))</span>
<span id="cb30-4"><a href="#cb30-4" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb30-5"><a href="#cb30-5" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(exponential_growth, <span class="fl">0</span>, <span class="fl">5</span>)</span>
<span id="cb30-6"><a href="#cb30-6" aria-hidden="true" tabindex="-1"></a><span class="fu">plot!</span>(logistic_growth)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-display" data-execution_count="37">
<p><img src="curve_sketching_files/figure-html/cell-37-output-1.svg" class="img-fluid"></p>
</div>
</div>
<p>Does a plot over <span class="math inline">\([0,50]\)</span> show qualitatively similar behaviour?</p>
<div class="cell" data-hold="true" data-execution_count="37">
<div class="cell-output cell-output-display" data-execution_count="38">
<form class="mx-2 my-3 mw-100" name="WeaveQuestion" data-id="6001833693634372227" data-controltype="">
<div class="form-group ">
<div class="controls">
<div class="form" id="controls_6001833693634372227">
<div style="padding-top: 5px">
<div class="form-check">
<label class="form-check-label" for="radio_6001833693634372227_1">
<input class="form-check-input" type="radio" name="radio_6001833693634372227" id="radio_6001833693634372227_1" value="1">
<span class="label-body px-1">
Yes
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_6001833693634372227_2">
<input class="form-check-input" type="radio" name="radio_6001833693634372227" id="radio_6001833693634372227_2" value="2">
<span class="label-body px-1">
No
</span>
</label>
</div>
</div>
</div>
<div id="6001833693634372227_message" style="padding-bottom: 15px"></div>
</div>
</div>
</form>
<script text="text/javascript">
document.querySelectorAll('input[name="radio_6001833693634372227"]').forEach(function(rb) {
rb.addEventListener("change", function() {
var correct = rb.value == 1;
var msgBox = document.getElementById('6001833693634372227_message');
if(correct) {
msgBox.innerHTML = "<div class='pluto-output admonition note alert alert-success'><span> 👍&nbsp; Correct </span></div>";
var explanation = document.getElementById("explanation_6001833693634372227")
if (explanation != null) {
explanation.style.display = "none";
}
} else {
msgBox.innerHTML = "<div class='pluto-output admonition alert alert-danger'><span>👎&nbsp; Incorrect </span></div>";
var explanation = document.getElementById("explanation_6001833693634372227")
if (explanation != null) {
explanation.style.display = "block";
}
}
})});
</script>
</div>
</div>
<p>Exponential growth has <span class="math inline">\(P''(t) = P_0 a^t \log(a)^2 &gt; 0\)</span>, so has no inflection point. By plotting over a sufficiently wide interval, can you answer: does the logistic growth model have an inflection point?</p>
<div class="cell" data-hold="true" data-execution_count="38">
<div class="cell-output cell-output-display" data-execution_count="39">
<form class="mx-2 my-3 mw-100" name="WeaveQuestion" data-id="15739806424610812285" data-controltype="">
<div class="form-group ">
<div class="controls">
<div class="form" id="controls_15739806424610812285">
<div style="padding-top: 5px">
<div class="form-check">
<label class="form-check-label" for="radio_15739806424610812285_1">
<input class="form-check-input" type="radio" name="radio_15739806424610812285" id="radio_15739806424610812285_1" value="1">
<span class="label-body px-1">
Yes
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_15739806424610812285_2">
<input class="form-check-input" type="radio" name="radio_15739806424610812285" id="radio_15739806424610812285_2" value="2">
<span class="label-body px-1">
No
</span>
</label>
</div>
</div>
</div>
<div id="15739806424610812285_message" style="padding-bottom: 15px"></div>
</div>
</div>
</form>
<script text="text/javascript">
document.querySelectorAll('input[name="radio_15739806424610812285"]').forEach(function(rb) {
rb.addEventListener("change", function() {
var correct = rb.value == 1;
var msgBox = document.getElementById('15739806424610812285_message');
if(correct) {
msgBox.innerHTML = "<div class='pluto-output admonition note alert alert-success'><span> 👍&nbsp; Correct </span></div>";
var explanation = document.getElementById("explanation_15739806424610812285")
if (explanation != null) {
explanation.style.display = "none";
}
} else {
msgBox.innerHTML = "<div class='pluto-output admonition alert alert-danger'><span>👎&nbsp; Incorrect </span></div>";
var explanation = document.getElementById("explanation_15739806424610812285")
if (explanation != null) {
explanation.style.display = "block";
}
}
})});
</script>
</div>
</div>
<p>If yes, find it numerically:</p>
<div class="cell" data-hold="true" data-execution_count="39">
<div class="cell-output cell-output-display" data-execution_count="40">
<form class="mx-2 my-3 mw-100" name="WeaveQuestion" data-id="240560649080445891" data-controltype="">
<div class="form-group ">
<div class="controls">
<div class="form" id="controls_240560649080445891">
<div style="padding-top: 5px">
<br>
<div class="input-group">
<input id="240560649080445891" type="number" class="form-control" placeholder="Numeric answer">
</div>
</div>
</div>
<div id="240560649080445891_message" style="padding-bottom: 15px"></div>
</div>
</div>
</form>
<script text="text/javascript">
document.getElementById("240560649080445891").addEventListener("change", function() {
var correct = (Math.abs(this.value - 8.78889830934488) <= 0.001);
var msgBox = document.getElementById('240560649080445891_message');
if(correct) {
msgBox.innerHTML = "<div class='pluto-output admonition note alert alert-success'><span> 👍&nbsp; Correct </span></div>";
var explanation = document.getElementById("explanation_240560649080445891")
if (explanation != null) {
explanation.style.display = "none";
}
} else {
msgBox.innerHTML = "<div class='pluto-output admonition alert alert-danger'><span>👎&nbsp; Incorrect </span></div>";
var explanation = document.getElementById("explanation_240560649080445891")
if (explanation != null) {
explanation.style.display = "block";
}
}
});
</script>
</div>
</div>
<p>The available resources are quantified by <span class="math inline">\(K\)</span>. As <span class="math inline">\(K \rightarrow \infty\)</span> what is the limit of the logistic growth model:</p>
<div class="cell" data-hold="true" data-execution_count="40">
<div class="cell-output cell-output-display" data-execution_count="41">
<form class="mx-2 my-3 mw-100" name="WeaveQuestion" data-id="173924680422992361" data-controltype="">
<div class="form-group ">
<div class="controls">
<div class="form" id="controls_173924680422992361">
<div style="padding-top: 5px">
<div class="form-check">
<label class="form-check-label" for="radio_173924680422992361_1">
<input class="form-check-input" type="radio" name="radio_173924680422992361" id="radio_173924680422992361_1" value="1">
<span class="label-body px-1">
The limit is \(P_0\)
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_173924680422992361_2">
<input class="form-check-input" type="radio" name="radio_173924680422992361" id="radio_173924680422992361_2" value="2">
<span class="label-body px-1">
The exponential growth model
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_173924680422992361_3">
<input class="form-check-input" type="radio" name="radio_173924680422992361" id="radio_173924680422992361_3" value="3">
<span class="label-body px-1">
The limit does not exist
</span>
</label>
</div>
</div>
</div>
<div id="173924680422992361_message" style="padding-bottom: 15px"></div>
</div>
</div>
</form>
<script text="text/javascript">
document.querySelectorAll('input[name="radio_173924680422992361"]').forEach(function(rb) {
rb.addEventListener("change", function() {
var correct = rb.value == 2;
var msgBox = document.getElementById('173924680422992361_message');
if(correct) {
msgBox.innerHTML = "<div class='pluto-output admonition note alert alert-success'><span> 👍&nbsp; Correct </span></div>";
var explanation = document.getElementById("explanation_173924680422992361")
if (explanation != null) {
explanation.style.display = "none";
}
} else {
msgBox.innerHTML = "<div class='pluto-output admonition alert alert-danger'><span>👎&nbsp; Incorrect </span></div>";
var explanation = document.getElementById("explanation_173924680422992361")
if (explanation != null) {
explanation.style.display = "block";
}
}
})});
</script>
</div>
</div>
</section>
<section id="question-5" class="level5">
<h5 class="anchored" data-anchor-id="question-5">Question</h5>
<p>The plotting algorithm for plotting functions starts with a small initial set of points over the specified interval (<span class="math inline">\(21\)</span>) and then refines those sub-intervals where the second derivative is determined to be large.</p>
<p>Why are sub-intervals where the second derivative is large different than those where the second derivative is small?</p>
<div class="cell" data-hold="true" data-execution_count="41">
<div class="cell-output cell-output-display" data-execution_count="42">
<form class="mx-2 my-3 mw-100" name="WeaveQuestion" data-id="6518824058241194571" data-controltype="">
<div class="form-group ">
<div class="controls">
<div class="form" id="controls_6518824058241194571">
<div style="padding-top: 5px">
<div class="form-check">
<label class="form-check-label" for="radio_6518824058241194571_1">
<input class="form-check-input" type="radio" name="radio_6518824058241194571" id="radio_6518824058241194571_1" value="1">
<span class="label-body px-1">
The function will be much larger (in absolute value) when the second derivative is large, so there needs to be more points to capture the shape
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_6518824058241194571_2">
<input class="form-check-input" type="radio" name="radio_6518824058241194571" id="radio_6518824058241194571_2" value="2">
<span class="label-body px-1">
The function will increase (or decrease) rapidly when the second derivative is large, so there needs to be more points to capture the shape
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_6518824058241194571_3">
<input class="form-check-input" type="radio" name="radio_6518824058241194571" id="radio_6518824058241194571_3" value="3">
<span class="label-body px-1">
The function will have more curvature when the second derivative is large, so there needs to be more points to capture the shape
</span>
</label>
</div>
</div>
</div>
<div id="6518824058241194571_message" style="padding-bottom: 15px"></div>
</div>
</div>
</form>
<script text="text/javascript">
document.querySelectorAll('input[name="radio_6518824058241194571"]').forEach(function(rb) {
rb.addEventListener("change", function() {
var correct = rb.value == 3;
var msgBox = document.getElementById('6518824058241194571_message');
if(correct) {
msgBox.innerHTML = "<div class='pluto-output admonition note alert alert-success'><span> 👍&nbsp; Correct </span></div>";
var explanation = document.getElementById("explanation_6518824058241194571")
if (explanation != null) {
explanation.style.display = "none";
}
} else {
msgBox.innerHTML = "<div class='pluto-output admonition alert alert-danger'><span>👎&nbsp; Incorrect </span></div>";
var explanation = document.getElementById("explanation_6518824058241194571")
if (explanation != null) {
explanation.style.display = "block";
}
}
})});
</script>
</div>
</div>
</section>
<section id="question-6" class="level5">
<h5 class="anchored" data-anchor-id="question-6">Question</h5>
<p>Is there a nice algorithm to identify what domain a function should be plotted over to produce an informative graph? <a href="https://www.cs.uic.edu/~wilkinson/Publications/plotfunc.pdf">Wilkinson</a> has some suggestions. (Wilkinson is well known to the <code>R</code> community as the specifier of the grammar of graphics.) It is mentioned that “finding an informative domain for a given function depends on at least three features: periodicity, asymptotics, and monotonicity.”</p>
<p>Why would periodicity matter?</p>
<div class="cell" data-hold="true" data-execution_count="42">
<div class="cell-output cell-output-display" data-execution_count="43">
<form class="mx-2 my-3 mw-100" name="WeaveQuestion" data-id="8519221984698905431" data-controltype="">
<div class="form-group ">
<div class="controls">
<div class="form" id="controls_8519221984698905431">
<div style="padding-top: 5px">
<div class="form-check">
<label class="form-check-label" for="radio_8519221984698905431_1">
<input class="form-check-input" type="radio" name="radio_8519221984698905431" id="radio_8519221984698905431_1" value="1">
<span class="label-body px-1">
An informative graph only needs to show one or two periods, as others can be inferred.
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_8519221984698905431_2">
<input class="form-check-input" type="radio" name="radio_8519221984698905431" id="radio_8519221984698905431_2" value="2">
<span class="label-body px-1">
An informative graph need only show a part of the period, as the rest can be inferred.
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_8519221984698905431_3">
<input class="form-check-input" type="radio" name="radio_8519221984698905431" id="radio_8519221984698905431_3" value="3">
<span class="label-body px-1">
An informative graph needs to show several periods, as that will allow proper computation for the \(y\) axis range.
</span>
</label>
</div>
</div>
</div>
<div id="8519221984698905431_message" style="padding-bottom: 15px"></div>
</div>
</div>
</form>
<script text="text/javascript">
document.querySelectorAll('input[name="radio_8519221984698905431"]').forEach(function(rb) {
rb.addEventListener("change", function() {
var correct = rb.value == 1;
var msgBox = document.getElementById('8519221984698905431_message');
if(correct) {
msgBox.innerHTML = "<div class='pluto-output admonition note alert alert-success'><span> 👍&nbsp; Correct </span></div>";
var explanation = document.getElementById("explanation_8519221984698905431")
if (explanation != null) {
explanation.style.display = "none";
}
} else {
msgBox.innerHTML = "<div class='pluto-output admonition alert alert-danger'><span>👎&nbsp; Incorrect </span></div>";
var explanation = document.getElementById("explanation_8519221984698905431")
if (explanation != null) {
explanation.style.display = "block";
}
}
})});
</script>
</div>
</div>
<p>Why should asymptotics matter?</p>
<div class="cell" data-hold="true" data-execution_count="43">
<div class="cell-output cell-output-display" data-execution_count="44">
<form class="mx-2 my-3 mw-100" name="WeaveQuestion" data-id="1006581434455490418" data-controltype="">
<div class="form-group ">
<div class="controls">
<div class="form" id="controls_1006581434455490418">
<div style="padding-top: 5px">
<div class="form-check">
<label class="form-check-label" for="radio_1006581434455490418_1">
<input class="form-check-input" type="radio" name="radio_1006581434455490418" id="radio_1006581434455490418_1" value="1">
<span class="label-body px-1">
A horizontal asymptote must be plotted from \(-\infty\) to \(\infty\)
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_1006581434455490418_2">
<input class="form-check-input" type="radio" name="radio_1006581434455490418" id="radio_1006581434455490418_2" value="2">
<span class="label-body px-1">
A slant asymptote must be plotted over a very wide domain so that it can be identified.
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_1006581434455490418_3">
<input class="form-check-input" type="radio" name="radio_1006581434455490418" id="radio_1006581434455490418_3" value="3">
<span class="label-body px-1">
A vertical asymptote can distory the \(y\) range, so it is important to avoid too-large values
</span>
</label>
</div>
</div>
</div>
<div id="1006581434455490418_message" style="padding-bottom: 15px"></div>
</div>
</div>
</form>
<script text="text/javascript">
document.querySelectorAll('input[name="radio_1006581434455490418"]').forEach(function(rb) {
rb.addEventListener("change", function() {
var correct = rb.value == 3;
var msgBox = document.getElementById('1006581434455490418_message');
if(correct) {
msgBox.innerHTML = "<div class='pluto-output admonition note alert alert-success'><span> 👍&nbsp; Correct </span></div>";
var explanation = document.getElementById("explanation_1006581434455490418")
if (explanation != null) {
explanation.style.display = "none";
}
} else {
msgBox.innerHTML = "<div class='pluto-output admonition alert alert-danger'><span>👎&nbsp; Incorrect </span></div>";
var explanation = document.getElementById("explanation_1006581434455490418")
if (explanation != null) {
explanation.style.display = "block";
}
}
})});
</script>
</div>
</div>
<p>Monotonicity means increasing or decreasing. This is important for what reason?</p>
<div class="cell" data-hold="true" data-execution_count="44">
<div class="cell-output cell-output-display" data-execution_count="45">
<form class="mx-2 my-3 mw-100" name="WeaveQuestion" data-id="6417558088215178209" data-controltype="">
<div class="form-group ">
<div class="controls">
<div class="form" id="controls_6417558088215178209">
<div style="padding-top: 5px">
<div class="form-check">
<label class="form-check-label" for="radio_6417558088215178209_1">
<input class="form-check-input" type="radio" name="radio_6417558088215178209" id="radio_6417558088215178209_1" value="1">
<span class="label-body px-1">
For monotonic regions, the function will have a vertical asymptote, so the region should not be plotted
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_6417558088215178209_2">
<input class="form-check-input" type="radio" name="radio_6417558088215178209" id="radio_6417558088215178209_2" value="2">
<span class="label-body px-1">
For monotonic regions, a large slope or very concave function might require more care to plot
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_6417558088215178209_3">
<input class="form-check-input" type="radio" name="radio_6417558088215178209" id="radio_6417558088215178209_3" value="3">
<span class="label-body px-1">
For monotonic regions, a function is basically a straight line
</span>
</label>
</div>
</div>
</div>
<div id="6417558088215178209_message" style="padding-bottom: 15px"></div>
</div>
</div>
</form>
<script text="text/javascript">
document.querySelectorAll('input[name="radio_6417558088215178209"]').forEach(function(rb) {
rb.addEventListener("change", function() {
var correct = rb.value == 2;
var msgBox = document.getElementById('6417558088215178209_message');
if(correct) {
msgBox.innerHTML = "<div class='pluto-output admonition note alert alert-success'><span> 👍&nbsp; Correct </span></div>";
var explanation = document.getElementById("explanation_6417558088215178209")
if (explanation != null) {
explanation.style.display = "none";
}
} else {
msgBox.innerHTML = "<div class='pluto-output admonition alert alert-danger'><span>👎&nbsp; Incorrect </span></div>";
var explanation = document.getElementById("explanation_6417558088215178209")
if (explanation != null) {
explanation.style.display = "block";
}
}
})});
</script>
</div>
</div>
</section>
</section>
</main> <!-- /main -->
<script id="quarto-html-after-body" type="application/javascript">
window.document.addEventListener("DOMContentLoaded", function (event) {
const toggleBodyColorMode = (bsSheetEl) => {
const mode = bsSheetEl.getAttribute("data-mode");
const bodyEl = window.document.querySelector("body");
if (mode === "dark") {
bodyEl.classList.add("quarto-dark");
bodyEl.classList.remove("quarto-light");
} else {
bodyEl.classList.add("quarto-light");
bodyEl.classList.remove("quarto-dark");
}
}
const toggleBodyColorPrimary = () => {
const bsSheetEl = window.document.querySelector("link#quarto-bootstrap");
if (bsSheetEl) {
toggleBodyColorMode(bsSheetEl);
}
}
toggleBodyColorPrimary();
const icon = "";
const anchorJS = new window.AnchorJS();
anchorJS.options = {
placement: 'right',
icon: icon
};
anchorJS.add('.anchored');
const clipboard = new window.ClipboardJS('.code-copy-button', {
target: function(trigger) {
return trigger.previousElementSibling;
}
});
clipboard.on('success', function(e) {
// button target
const button = e.trigger;
// don't keep focus
button.blur();
// flash "checked"
button.classList.add('code-copy-button-checked');
var currentTitle = button.getAttribute("title");
button.setAttribute("title", "Copied!");
setTimeout(function() {
button.setAttribute("title", currentTitle);
button.classList.remove('code-copy-button-checked');
}, 1000);
// clear code selection
e.clearSelection();
});
function tippyHover(el, contentFn) {
const config = {
allowHTML: true,
content: contentFn,
maxWidth: 500,
delay: 100,
arrow: false,
appendTo: function(el) {
return el.parentElement;
},
interactive: true,
interactiveBorder: 10,
theme: 'quarto',
placement: 'bottom-start'
};
window.tippy(el, config);
}
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
for (var i=0; i<noterefs.length; i++) {
const ref = noterefs[i];
tippyHover(ref, function() {
let href = ref.getAttribute('href');
try { href = new URL(href).hash; } catch {}
const id = href.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
return note.innerHTML;
});
}
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
for (var i=0; i<bibliorefs.length; i++) {
const ref = bibliorefs[i];
const cites = ref.parentNode.getAttribute('data-cites').split(' ');
tippyHover(ref, function() {
var popup = window.document.createElement('div');
cites.forEach(function(cite) {
var citeDiv = window.document.createElement('div');
citeDiv.classList.add('hanging-indent');
citeDiv.classList.add('csl-entry');
var biblioDiv = window.document.getElementById('ref-' + cite);
if (biblioDiv) {
citeDiv.innerHTML = biblioDiv.innerHTML;
}
popup.appendChild(citeDiv);
});
return popup.innerHTML;
});
}
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
var filterRegex = new RegExp('/' + window.location.host + '/');
var isInternal = (href) => {
return filterRegex.test(href) || localhostRegex.test(href);
}
// Inspect non-navigation links and adorn them if external
var links = window.document.querySelectorAll('a:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external)');
for (var i=0; i<links.length; i++) {
const link = links[i];
if (!isInternal(link.href)) {
// target, if specified
link.setAttribute("target", "_blank");
}
}
});
</script>
<nav class="page-navigation">
<div class="nav-page nav-page-previous">
<a href="../derivatives/first_second_derivatives.html" class="pagination-link">
<i class="bi bi-arrow-left-short"></i> <span class="nav-page-text"><span class="chapter-number">27</span>&nbsp; <span class="chapter-title">The first and second derivatives</span></span>
</a>
</div>
<div class="nav-page nav-page-next">
<a href="../derivatives/linearization.html" class="pagination-link">
<span class="nav-page-text"><span class="chapter-number">29</span>&nbsp; <span class="chapter-title">Linearization</span></span> <i class="bi bi-arrow-right-short"></i>
</a>
</div>
</nav>
</div> <!-- /content -->
<footer class="footer">
<div class="nav-footer">
<div class="nav-footer-center">Copyright 2022, John Verzani</div>
</div>
</footer>
</body></html>