CalculusWithJuliaNotes.jl/quarto/0e7f54ed/integrals/partial_fractions.html
2022-08-11 13:15:19 -04:00

1818 lines
98 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 - 40&nbsp; Partial Fractions</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="../integrals/improper_integrals.html" rel="next">
<link href="../integrals/integration_by_parts.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">40</span>&nbsp; <span class="chapter-title">Partial Fractions</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 collapsed" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-3" aria-expanded="false">Derivatives</a>
<a class="sidebar-item-toggle text-start collapsed" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-3" aria-expanded="false">
<i class="bi bi-chevron-right ms-2"></i>
</a>
</div>
<ul id="quarto-sidebar-section-3" class="collapse list-unstyled sidebar-section depth1 ">
<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"><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" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-4" aria-expanded="true">Integrals</a>
<a class="sidebar-item-toggle text-start" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-4" aria-expanded="true">
<i class="bi bi-chevron-right ms-2"></i>
</a>
</div>
<ul id="quarto-sidebar-section-4" class="collapse list-unstyled sidebar-section depth1 show">
<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 active"><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="#partial-fraction-decomposition" id="toc-partial-fraction-decomposition" class="nav-link active" data-scroll-target="#partial-fraction-decomposition"> <span class="header-section-number">40.1</span> Partial fraction decomposition</a>
<ul class="collapse">
<li><a href="#sketch-of-proof" id="toc-sketch-of-proof" class="nav-link" data-scroll-target="#sketch-of-proof"> <span class="header-section-number">40.1.1</span> Sketch of proof</a></li>
</ul></li>
<li><a href="#integrating-the-terms-in-a-partial-fraction-decomposition" id="toc-integrating-the-terms-in-a-partial-fraction-decomposition" class="nav-link" data-scroll-target="#integrating-the-terms-in-a-partial-fraction-decomposition"> <span class="header-section-number">40.2</span> Integrating the terms in a partial fraction decomposition</a>
<ul class="collapse">
<li><a href="#linear-factors" id="toc-linear-factors" class="nav-link" data-scroll-target="#linear-factors"> <span class="header-section-number">40.2.1</span> Linear factors</a></li>
<li><a href="#quadratic-factors" id="toc-quadratic-factors" class="nav-link" data-scroll-target="#quadratic-factors"> <span class="header-section-number">40.2.2</span> Quadratic factors</a></li>
</ul></li>
<li><a href="#questions" id="toc-questions" class="nav-link" data-scroll-target="#questions"> <span class="header-section-number">40.3</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/integrals/partial_fractions.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">40</span>&nbsp; <span class="chapter-title">Partial Fractions</span></h1>
</div>
<div class="quarto-title-meta">
</div>
</header>
<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">SymPy</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<hr>
<p>Integration is facilitated when an antiderivative for <span class="math inline">\(f\)</span> can be found, as then definite integrals can be evaluated through the fundamental theorem of calculus.</p>
<p>However, despite integration being an algorithmic procedure, integration is not. There are “tricks” to try, such as substitution and integration by parts. These work in some cases. However, there are classes of functions for which algorithms exist. For example, the <code>SymPy</code> <code>integrate</code> function mostly implements an algorithm that decides if an elementary function has an antiderivative. The <a href="http://en.wikipedia.org/wiki/Elementary_function">elementary</a> functions include exponentials, their inverses (logarithms), trigonometric functions, their inverses, and powers, including <span class="math inline">\(n\)</span>th roots. Not every elementary function will have an antiderivative comprised of (finite) combinations of elementary functions. The typical example is <span class="math inline">\(e^{x^2}\)</span>, which has no simple antiderivative, despite its ubiquitousness.</p>
<p>There are classes of functions where an (elementary) antiderivative can always be found. Polynomials provide a case. More surprisingly, so do their ratios, <em>rational functions</em>.</p>
<section id="partial-fraction-decomposition" class="level2" data-number="40.1">
<h2 data-number="40.1" class="anchored" data-anchor-id="partial-fraction-decomposition"><span class="header-section-number">40.1</span> Partial fraction decomposition</h2>
<p>Let <span class="math inline">\(f(x) = p(x)/q(x)\)</span>, where <span class="math inline">\(p\)</span> and <span class="math inline">\(q\)</span> are polynomial functions with real coefficients. Further, we assume without comment that <span class="math inline">\(p\)</span> and <span class="math inline">\(q\)</span> have no common factors. (If they did, we can divide them out, an act which has no effect on the integrability of <span class="math inline">\(f(x)\)</span>.</p>
<p>The function <span class="math inline">\(q(x)\)</span> will factor over the real numbers. The fundamental theorem of algebra can be applied to say that <span class="math inline">\(q(x)=q_1(x)^{n_1} \cdots q_k(x)^{n_k}\)</span> where <span class="math inline">\(q_i(x)\)</span> is a linear or quadratic polynomial and <span class="math inline">\(n_k\)</span> a positive integer.</p>
<blockquote class="blockquote">
<p><strong>Partial Fraction Decomposition</strong>: There are unique polynomials <span class="math inline">\(a_{ij}\)</span> with degree <span class="math inline">\(a_{ij} &lt;\)</span> degree <span class="math inline">\(q_i\)</span> such that</p>
<p><span class="math display">\[
\frac{p(x)}{q(x)} = a(x) + \sum_{i=1}^k \sum_{j=1}^{n_i} \frac{a_{ij}(x)}{q_i(x)^j}.
\]</span></p>
</blockquote>
<p>The method is attributed to John Bernoulli, one of the prolific Bernoulli brothers who put a stamp on several areas of math. This Bernoulli was a mentor to Euler.</p>
<p>This basically says that each factor <span class="math inline">\(q_i(x)^{n_i}\)</span> contributes a term like:</p>
<p><span class="math display">\[
\frac{a_{i1}(x)}{q_i(x)^1} + \frac{a_{i2}(x)}{q_i(x)^2} + \cdots + \frac{a_{in_i}(x)}{q_i(x)^{n_i}},
\]</span></p>
<p>where each <span class="math inline">\(a_{ij}(x)\)</span> has degree less than the degree of <span class="math inline">\(q_i(x)\)</span>.</p>
<p>The value of this decomposition is that the terms <span class="math inline">\(a_{ij}(x)/q_i(x)^j\)</span> each have an antiderivative, and so the sum of them will also have an antiderivative.</p>
<div class="callout-note callout callout-style-default callout-captioned">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-caption-container flex-fill">
Note
</div>
</div>
<div class="callout-body-container callout-body">
<p>Many calculus texts will give some examples for finding a partial fraction decomposition. We push that work off to <code>SymPy</code>, as for all but the easiest cases - a few are in the problems - it can be a bit tedious.</p>
</div>
</div>
<p>In <code>SymPy</code>, the <code>apart</code> function will find the partial fraction decomposition when a factorization is available. For example, here we see <span class="math inline">\(n_i\)</span> terms for each power of <span class="math inline">\(q_i\)</span></p>
<div class="cell" data-execution_count="4">
<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="pp">@syms</span> a<span class="op">::</span><span class="dt">real </span>b<span class="op">::</span><span class="dt">real </span>c<span class="op">::</span><span class="dt">real </span>A<span class="op">::</span><span class="dt">real </span>B<span class="op">::</span><span class="dt">real </span>x<span class="op">::</span><span class="dt">real</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="5">
<pre><code>(a, b, c, A, B, x)</code></pre>
</div>
</div>
<div class="cell" data-execution_count="5">
<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><span class="fu">apart</span>((x<span class="op">-</span><span class="fl">2</span>)<span class="fu">*</span>(x<span class="op">-</span><span class="fl">3</span>) <span class="op">/</span> (<span class="fu">x*</span>(x<span class="op">-</span><span class="fl">1</span>)<span class="op">^</span><span class="fl">2</span><span class="fu">*</span>(x<span class="op">^</span><span class="fl">2</span> <span class="op">+</span> <span class="fl">2</span>)<span class="op">^</span><span class="fl">3</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">
<span class="math-left-align" style="padding-left: 4px; width:0; float:left;">
\[
- \frac{8 x - 13}{9 \left(x^{2} + 2\right)^{3}} - \frac{35 x - 34}{54 \left(x^{2} + 2\right)^{2}} - \frac{45 x - 28}{108 \left(x^{2} + 2\right)} - \frac{1}{3 \left(x - 1\right)} + \frac{2}{27 \left(x - 1\right)^{2}} + \frac{3}{4 x}
\]
</span>
</div>
</div>
<section id="sketch-of-proof" class="level3" data-number="40.1.1">
<h3 data-number="40.1.1" class="anchored" data-anchor-id="sketch-of-proof"><span class="header-section-number">40.1.1</span> Sketch of proof</h3>
<p>A standard proof uses two facts of number systems: the division algorithm and a representation of the greatest common divisor in terms of sums, extended to polynomials. Our sketch shows how these are used.</p>
<p>Take one of the factors of the denominators, and consider this representation of the rational function <span class="math inline">\(P(x)/(q(x)^k Q(x))\)</span> where there are no common factors to any of the three polynomials.</p>
<p>Since <span class="math inline">\(q(x)\)</span> and <span class="math inline">\(Q(x)\)</span> share no factors, <a href="http://tinyurl.com/kd6prns">Bezouts</a> identity says there exists polynomials <span class="math inline">\(a(x)\)</span> and <span class="math inline">\(b(x)\)</span> with:</p>
<p><span class="math display">\[
a(x) Q(x) + b(x) q(x) = 1.
\]</span></p>
<p>Then dividing by <span class="math inline">\(q^k(x)Q(x)\)</span> gives the decomposition</p>
<p><span class="math display">\[
\frac{1}{q(x)^k Q(x)} = \frac{a(x)}{q(x)^k} + \frac{b(x)}{q(x)^{k-1}Q(x)}.
\]</span></p>
<p>So we get by multiplying the <span class="math inline">\(P(x)\)</span>:</p>
<p><span class="math display">\[
\frac{P(x)}{q(x)^k Q(x)} = \frac{A(x)}{q(x)^k} + \frac{B(x)}{q(x)^{k-1}Q(x)}.
\]</span></p>
<p>This may look more complicated, but what it does is peel off one term (The first) and leave something which is smaller, in this case by a factor of <span class="math inline">\(q(x)\)</span>. This process can be repeated pulling off a power of a factor at a time until nothing is left to do.</p>
<p>What remains is to establish that we can take <span class="math inline">\(A(x) = a(x)\cdot P(x)\)</span> with a degree less than that of <span class="math inline">\(q(x)\)</span>.</p>
<p>In Proposition 3.8 of <a href="http://www.m-hikari.com/imf/imf-2012/29-32-2012/cookIMF29-32-2012.pdf">Bradley</a> and Cook we can see how. Recall the division algorithm, for example, says there are <span class="math inline">\(q_k\)</span> and <span class="math inline">\(r_k\)</span> with <span class="math inline">\(A=q\cdot q_k + r_k\)</span> where the degree of <span class="math inline">\(r_k\)</span> is less than that of <span class="math inline">\(q\)</span>, which is linear or quadratic. This is repeatedly applied below:</p>
<p><span class="math display">\[
\begin{align*}
\frac{A}{q^k} &amp;= \frac{q\cdot q_k + r_k}{q^k}\\
&amp;= \frac{r_k}{q^k} + \frac{q_k}{q^{k-1}}\\
&amp;= \frac{r_k}{q^k} + \frac{q \cdot q_{k-1} + r_{k-1}}{q^{k-1}}\\
&amp;= \frac{r_k}{q^k} + \frac{r_{k-1}}{q^{k-1}} + \frac{q_{k-1}}{q^{k-2}}\\
&amp;= \frac{r_k}{q^k} + \frac{r_{k-1}}{q^{k-1}} + \frac{q\cdot q_{k-2} + r_{k-2}}{q^{k-2}}\\
&amp;= \cdots\\
&amp;= \frac{r_k}{q^k} + \frac{r_{k-1}}{q^{k-1}} + \cdots + q_1.
\end{align*}
\]</span></p>
<p>So the term <span class="math inline">\(A(x)/q(x)^k\)</span> can be expressed in terms of a sum where the numerators or each term have degree less than <span class="math inline">\(q(x)\)</span>, as expected by the statement of the theorem.</p>
</section>
</section>
<section id="integrating-the-terms-in-a-partial-fraction-decomposition" class="level2" data-number="40.2">
<h2 data-number="40.2" class="anchored" data-anchor-id="integrating-the-terms-in-a-partial-fraction-decomposition"><span class="header-section-number">40.2</span> Integrating the terms in a partial fraction decomposition</h2>
<p>We discuss, by example, how each type of possible term in a partial fraction decomposition has an antiderivative. Hence, rational functions will <em>always</em> have an antiderivative that can be computed.</p>
<section id="linear-factors" class="level3" data-number="40.2.1">
<h3 data-number="40.2.1" class="anchored" data-anchor-id="linear-factors"><span class="header-section-number">40.2.1</span> Linear factors</h3>
<p>For <span class="math inline">\(j=1\)</span>, if <span class="math inline">\(q_i\)</span> is linear, then <span class="math inline">\(a_{ij}/q_i^j\)</span> must look like a constant over a linear term, or something like:</p>
<div class="cell" data-execution_count="6">
<div class="sourceCode cell-code" id="cb5"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a>p <span class="op">=</span> a<span class="op">/</span>(x<span class="op">-</span>c)</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">
<span class="math-left-align" style="padding-left: 4px; width:0; float:left;">
\[
\frac{a}{- c + x}
\]
</span>
</div>
</div>
<p>This has a logarithmic antiderivative:</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><span class="fu">integrate</span>(p, x)</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">
<span class="math-left-align" style="padding-left: 4px; width:0; float:left;">
\[
a \log{\left(- c + x \right)}
\]
</span>
</div>
</div>
<p>For <span class="math inline">\(j &gt; 1\)</span>, we have powers.</p>
<div class="cell" data-execution_count="8">
<div class="sourceCode cell-code" id="cb7"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true" tabindex="-1"></a><span class="pp">@syms</span> j<span class="op">::</span><span class="dt">positive</span></span>
<span id="cb7-2"><a href="#cb7-2" aria-hidden="true" tabindex="-1"></a><span class="fu">integrate</span>(a<span class="op">/</span>(x<span class="op">-</span>c)<span class="op">^</span>j, x)</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">
<span class="math-left-align" style="padding-left: 4px; width:0; float:left;">
\[
a \left(\begin{cases} \frac{\left(- c + x\right)^{1 - j}}{1 - j} &amp; \text{for}\: j \neq 1 \\\log{\left(- c + x \right)} &amp; \text{otherwise} \end{cases}\right)
\]
</span>
</div>
</div>
</section>
<section id="quadratic-factors" class="level3" data-number="40.2.2">
<h3 data-number="40.2.2" class="anchored" data-anchor-id="quadratic-factors"><span class="header-section-number">40.2.2</span> Quadratic factors</h3>
<p>When <span class="math inline">\(q_i\)</span> is quadratic, it looks like <span class="math inline">\(ax^2 + bx + c\)</span>. Then <span class="math inline">\(a_{ij}\)</span> can be a constant or a linear polynomial. The latter can be written as <span class="math inline">\(Ax + B\)</span>.</p>
<p>The integral of the following general form is presented below:</p>
<p><span class="math display">\[
\frac{Ax +B }{(ax^2 + bx + c)^j},
\]</span></p>
<p>With <code>SymPy</code>, we consider a few cases of the following form, which results from a shift of <code>x</code></p>
<p><span class="math display">\[
\frac{Ax + B}{((ax)^2 \pm 1)^j}
\]</span></p>
<p>This can be done by finding a <span class="math inline">\(d\)</span> so that <span class="math inline">\(a(x-d)^2 + b(x-d) + c = dx^2 + e = e((\sqrt{d/e}x^2 \pm 1)\)</span>.</p>
<p>The integrals of the type <span class="math inline">\(Ax/((ax)^2 \pm 1)\)</span> can completed by <span class="math inline">\(u\)</span>-substitution, with <span class="math inline">\(u=(ax)^2 \pm 1\)</span>.</p>
<p>For example,</p>
<div class="cell" data-execution_count="9">
<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">integrate</span>(A<span class="op">*</span>x<span class="op">/</span>((a<span class="op">*</span>x)<span class="op">^</span><span class="fl">2</span> <span class="op">+</span> <span class="fl">1</span>)<span class="op">^</span><span class="fl">4</span>, x)</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">
<span class="math-left-align" style="padding-left: 4px; width:0; float:left;">
\[
- \frac{A}{6 a^{8} x^{6} + 18 a^{6} x^{4} + 18 a^{4} x^{2} + 6 a^{2}}
\]
</span>
</div>
</div>
<p>The integrals of the type <span class="math inline">\(B/((ax)^2\pm 1)\)</span> are completed by trigonometric substitution and various reduction formulas. They can get involved, but are tractable. For example:</p>
<div class="cell" data-execution_count="10">
<div class="sourceCode cell-code" id="cb9"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb9-1"><a href="#cb9-1" aria-hidden="true" tabindex="-1"></a><span class="fu">integrate</span>(B<span class="op">/</span>((a<span class="op">*</span>x)<span class="op">^</span><span class="fl">2</span> <span class="op">+</span> <span class="fl">1</span>)<span class="op">^</span><span class="fl">4</span>, x)</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">
<span class="math-left-align" style="padding-left: 4px; width:0; float:left;">
\[
B \left(\frac{15 a^{4} x^{5} + 40 a^{2} x^{3} + 33 x}{48 a^{6} x^{6} + 144 a^{4} x^{4} + 144 a^{2} x^{2} + 48} + \frac{5 \operatorname{atan}{\left(a x \right)}}{16 a}\right)
\]
</span>
</div>
</div>
<p>and</p>
<div class="cell" data-execution_count="11">
<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">integrate</span>(B<span class="op">/</span>((a<span class="op">*</span>x)<span class="op">^</span><span class="fl">2</span> <span class="op">-</span> <span class="fl">1</span>)<span class="op">^</span><span class="fl">4</span>, x)</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">
<span class="math-left-align" style="padding-left: 4px; width:0; float:left;">
\[
B \left(\frac{- 15 a^{4} x^{5} + 40 a^{2} x^{3} - 33 x}{48 a^{6} x^{6} - 144 a^{4} x^{4} + 144 a^{2} x^{2} - 48} - \frac{5 \log{\left(x - \frac{1}{a} \right)}}{32 a} + \frac{5 \log{\left(x + \frac{1}{a} \right)}}{32 a}\right)
\]
</span>
</div>
</div>
<hr>
<p>In <a href="http://www-sop.inria.fr/cafe/Manuel.Bronstein/publications/issac98.pdf">Bronstein</a> this characterization can be found - “This method, which dates back to Newton, Leibniz and Bernoulli, should not be used in practice, yet it remains the method found in most calculus texts and is often taught. Its major drawback is the factorization of the denominator of the integrand over the real or complex numbers.” We can also find the following formulas which formalize the above exploratory calculations (<span class="math inline">\(j&gt;1\)</span> and <span class="math inline">\(b^2 - 4c &lt; 0\)</span> below):</p>
<p><span class="math display">\[
\begin{align*}
\int \frac{A}{(x-a)^j} &amp;= \frac{A}{1-j}\frac{1}{(x-a)^{1-j}}\\
\int \frac{A}{x-a} &amp;= A\log(x-a)\\
\int \frac{Bx+C}{x^2 + bx + c} &amp;= \frac{B}{2} \log(x^2 + bx + c) + \frac{2C-bB}{\sqrt{4c-b^2}}\cdot \arctan\left(\frac{2x+b}{\sqrt{4c-b^2}}\right)\\
\int \frac{Bx+C}{(x^2 + bx + c)^j} &amp;= \frac{B' x + C'}{(x^2 + bx + c)^{j-1}} + \int \frac{C''}{(x^2 + bx + c)^{j-1}}
\end{align*}
\]</span></p>
<p>The first returns a rational function; the second yields a logarithm term; the third yields a logarithm and an arctangent term; while the last, which has explicit constants available, provides a reduction that can be recursively applied;</p>
<p>That is integrating <span class="math inline">\(f(x)/g(x)\)</span>, a rational function, will yield an output that looks like the following, where the functions are polynomials:</p>
<p><span class="math display">\[
\int f(x)/g(x) = P(x) + \frac{C(x)}{D{x}} + \sum v_i \log(V_i(x)) + \sum w_j \arctan(W_j(x))
\]</span></p>
<p>(Bronstein also sketches the modern method which is to use a Hermite reduction to express <span class="math inline">\(\int (f/g) dx = p/q + \int (g/h) dx\)</span>, where <span class="math inline">\(h\)</span> is square free (the “<code>j</code>” are all <span class="math inline">\(1\)</span>). The latter can be written over the complex numbers as logarithmic terms of the form <span class="math inline">\(\log(x-a)\)</span>, the “<code>a</code>s”found following a method due to Trager and Lazard, and Rioboo, which is mentioned in the SymPy documentation as the method used.)</p>
<section id="examples" class="level4">
<h4 class="anchored" data-anchor-id="examples">Examples</h4>
<p>Find an antiderivative for <span class="math inline">\(1/(x\cdot(x^2+1)^2)\)</span>.</p>
<p>We have a partial fraction decomposition is:</p>
<div class="cell" data-execution_count="12">
<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>q <span class="op">=</span> (x <span class="op">*</span> (x<span class="op">^</span><span class="fl">2</span> <span class="op">+</span> <span class="fl">1</span>)<span class="op">^</span><span class="fl">2</span>)</span>
<span id="cb11-2"><a href="#cb11-2" aria-hidden="true" tabindex="-1"></a><span class="fu">apart</span>(<span class="fl">1</span><span class="op">/</span>q)</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">
<span class="math-left-align" style="padding-left: 4px; width:0; float:left;">
\[
- \frac{x}{x^{2} + 1} - \frac{x}{\left(x^{2} + 1\right)^{2}} + \frac{1}{x}
\]
</span>
</div>
</div>
<p>We see three terms. The first and second will be done by <span class="math inline">\(u\)</span>-substitution, the third by a logarithm:</p>
<div class="cell" data-execution_count="13">
<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">integrate</span>(<span class="fl">1</span><span class="op">/</span>q, x)</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">
<span class="math-left-align" style="padding-left: 4px; width:0; float:left;">
\[
\log{\left(x \right)} - \frac{\log{\left(x^{2} + 1 \right)}}{2} + \frac{1}{2 x^{2} + 2}
\]
</span>
</div>
</div>
<hr>
<p>Find an antiderivative of <span class="math inline">\(1/(x^2 - 2x-3)\)</span>.</p>
<p>We again just let <code>SymPy</code> do the work. A partial fraction decomposition is given by:</p>
<div class="cell" data-execution_count="14">
<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>𝒒 <span class="op">=</span> (x<span class="op">^</span><span class="fl">2</span> <span class="op">-</span> <span class="fl">2</span>x <span class="op">-</span> <span class="fl">3</span>)</span>
<span id="cb13-2"><a href="#cb13-2" aria-hidden="true" tabindex="-1"></a><span class="fu">apart</span>(<span class="fl">1</span><span class="op">/</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">
<span class="math-left-align" style="padding-left: 4px; width:0; float:left;">
\[
- \frac{1}{4 \left(x + 1\right)} + \frac{1}{4 \left(x - 3\right)}
\]
</span>
</div>
</div>
<p>We see what should yield two logarithmic terms:</p>
<div class="cell" data-execution_count="15">
<div class="sourceCode cell-code" id="cb14"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb14-1"><a href="#cb14-1" aria-hidden="true" tabindex="-1"></a><span class="fu">integrate</span>(<span class="fl">1</span><span class="op">/</span>𝒒, x)</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">
<span class="math-left-align" style="padding-left: 4px; width:0; float:left;">
\[
\frac{\log{\left(x - 3 \right)}}{4} - \frac{\log{\left(x + 1 \right)}}{4}
\]
</span>
</div>
</div>
<div class="callout-note callout callout-style-default callout-captioned">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-caption-container flex-fill">
Note
</div>
</div>
<div class="callout-body-container callout-body">
<p><code>SymPy</code> will find <span class="math inline">\(\log(x)\)</span> as an antiderivative for <span class="math inline">\(1/x\)</span>, but more generally, <span class="math inline">\(\log(\lvert x\rvert)\)</span> is one.</p>
</div>
</div>
<section id="example" class="level5">
<h5 class="anchored" data-anchor-id="example">Example</h5>
<p>The answers found can become quite involved. <a href="https://arxiv.org/pdf/1712.01752.pdf">Corless</a>, Moir, Maza, and Xie use this example which at first glance seems tame enough:</p>
<div class="cell" data-execution_count="16">
<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>ex <span class="op">=</span> (x<span class="op">^</span><span class="fl">2</span> <span class="op">-</span> <span class="fl">1</span>) <span class="op">/</span> (x<span class="op">^</span><span class="fl">4</span> <span class="op">+</span> <span class="fl">5</span>x<span class="op">^</span><span class="fl">2</span> <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="17">
<span class="math-left-align" style="padding-left: 4px; width:0; float:left;">
\[
\frac{x^{2} - 1}{x^{4} + 5 x^{2} + 7}
\]
</span>
</div>
</div>
<p>But the integral is something best suited to a computer algebra system:</p>
<div class="cell" data-execution_count="17">
<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><span class="fu">integrate</span>(ex, x)</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">
<span class="math-left-align" style="padding-left: 4px; width:0; float:left;">
\[
\sqrt{\frac{17}{84} + \frac{13 \sqrt{7}}{168}} \log{\left(x^{2} + x \left(- \frac{38 \sqrt{6} \sqrt{34 + 13 \sqrt{7}}}{9} - \frac{1301 \sqrt{42} \sqrt{34 + 13 \sqrt{7}}}{1638} + \frac{19 \sqrt{42} \sqrt{34 + 13 \sqrt{7}} \sqrt{884 \sqrt{7} + 2339}}{546}\right) - \frac{2124092 \sqrt{884 \sqrt{7} + 2339}}{31941} - \frac{9481 \sqrt{7} \sqrt{884 \sqrt{7} + 2339}}{378} + \frac{290246555}{63882} + \frac{4221850 \sqrt{7}}{2457} \right)} - \sqrt{\frac{17}{84} + \frac{13 \sqrt{7}}{168}} \log{\left(x^{2} + x \left(- \frac{19 \sqrt{42} \sqrt{34 + 13 \sqrt{7}} \sqrt{884 \sqrt{7} + 2339}}{546} + \frac{1301 \sqrt{42} \sqrt{34 + 13 \sqrt{7}}}{1638} + \frac{38 \sqrt{6} \sqrt{34 + 13 \sqrt{7}}}{9}\right) - \frac{2124092 \sqrt{884 \sqrt{7} + 2339}}{31941} - \frac{9481 \sqrt{7} \sqrt{884 \sqrt{7} + 2339}}{378} + \frac{290246555}{63882} + \frac{4221850 \sqrt{7}}{2457} \right)} + 2 \sqrt{- \frac{\sqrt{884 \sqrt{7} + 2339}}{84} + \frac{17}{84} + \frac{13 \sqrt{7}}{56}} \operatorname{atan}{\left(\frac{78 \sqrt{42} x}{- 9 \sqrt{- 2 \sqrt{884 \sqrt{7} + 2339} + 34 + 39 \sqrt{7}} + 19 \sqrt{884 \sqrt{7} + 2339} \sqrt{- 2 \sqrt{884 \sqrt{7} + 2339} + 34 + 39 \sqrt{7}}} - \frac{988 \sqrt{7} \sqrt{34 + 13 \sqrt{7}}}{- 9 \sqrt{- 2 \sqrt{884 \sqrt{7} + 2339} + 34 + 39 \sqrt{7}} + 19 \sqrt{884 \sqrt{7} + 2339} \sqrt{- 2 \sqrt{884 \sqrt{7} + 2339} + 34 + 39 \sqrt{7}}} - \frac{1301 \sqrt{34 + 13 \sqrt{7}}}{- 9 \sqrt{- 2 \sqrt{884 \sqrt{7} + 2339} + 34 + 39 \sqrt{7}} + 19 \sqrt{884 \sqrt{7} + 2339} \sqrt{- 2 \sqrt{884 \sqrt{7} + 2339} + 34 + 39 \sqrt{7}}} + \frac{57 \sqrt{34 + 13 \sqrt{7}} \sqrt{884 \sqrt{7} + 2339}}{- 9 \sqrt{- 2 \sqrt{884 \sqrt{7} + 2339} + 34 + 39 \sqrt{7}} + 19 \sqrt{884 \sqrt{7} + 2339} \sqrt{- 2 \sqrt{884 \sqrt{7} + 2339} + 34 + 39 \sqrt{7}}} \right)} + 2 \sqrt{- \frac{\sqrt{884 \sqrt{7} + 2339}}{84} + \frac{17}{84} + \frac{13 \sqrt{7}}{56}} \operatorname{atan}{\left(\frac{78 \sqrt{42} x}{- 9 \sqrt{- 2 \sqrt{884 \sqrt{7} + 2339} + 34 + 39 \sqrt{7}} + 19 \sqrt{884 \sqrt{7} + 2339} \sqrt{- 2 \sqrt{884 \sqrt{7} + 2339} + 34 + 39 \sqrt{7}}} - \frac{57 \sqrt{34 + 13 \sqrt{7}} \sqrt{884 \sqrt{7} + 2339}}{- 9 \sqrt{- 2 \sqrt{884 \sqrt{7} + 2339} + 34 + 39 \sqrt{7}} + 19 \sqrt{884 \sqrt{7} + 2339} \sqrt{- 2 \sqrt{884 \sqrt{7} + 2339} + 34 + 39 \sqrt{7}}} + \frac{1301 \sqrt{34 + 13 \sqrt{7}}}{- 9 \sqrt{- 2 \sqrt{884 \sqrt{7} + 2339} + 34 + 39 \sqrt{7}} + 19 \sqrt{884 \sqrt{7} + 2339} \sqrt{- 2 \sqrt{884 \sqrt{7} + 2339} + 34 + 39 \sqrt{7}}} + \frac{988 \sqrt{7} \sqrt{34 + 13 \sqrt{7}}}{- 9 \sqrt{- 2 \sqrt{884 \sqrt{7} + 2339} + 34 + 39 \sqrt{7}} + 19 \sqrt{884 \sqrt{7} + 2339} \sqrt{- 2 \sqrt{884 \sqrt{7} + 2339} + 34 + 39 \sqrt{7}}} \right)}
\]
</span>
</div>
</div>
</section>
</section>
</section>
</section>
<section id="questions" class="level2" data-number="40.3">
<h2 data-number="40.3" class="anchored" data-anchor-id="questions"><span class="header-section-number">40.3</span> Questions</h2>
<section id="question" class="level6">
<h6 class="anchored" data-anchor-id="question">Question</h6>
<p>The partial fraction decomposition of <span class="math inline">\(1/(x(x-1))\)</span> must be of the form <span class="math inline">\(A/x + B/(x-1)\)</span>.</p>
<p>What is <span class="math inline">\(A\)</span>? (Use <code>SymPy</code> or just put the sum over a common denominator and solve for <span class="math inline">\(A\)</span> and <span class="math inline">\(B\)</span>.)</p>
<div class="cell" data-hold="true" data-execution_count="18">
<div class="cell-output cell-output-display" data-execution_count="19">
<form class="mx-2 my-3 mw-100" name="WeaveQuestion" data-id="12229247670572384318" data-controltype="">
<div class="form-group ">
<div class="controls">
<div class="form" id="controls_12229247670572384318">
<div style="padding-top: 5px">
<br>
<div class="input-group">
<input id="12229247670572384318" type="number" class="form-control" placeholder="Numeric answer">
</div>
</div>
</div>
<div id="12229247670572384318_message" style="padding-bottom: 15px"></div>
</div>
</div>
</form>
<script text="text/javascript">
document.getElementById("12229247670572384318").addEventListener("change", function() {
var correct = (Math.abs(this.value - -1) <= 0);
var msgBox = document.getElementById('12229247670572384318_message');
if(correct) {
msgBox.innerHTML = "<div class='pluto-output admonition note alert alert-success'><span> 👍&nbsp; Correct </span></div>";
var explanation = document.getElementById("explanation_12229247670572384318")
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_12229247670572384318")
if (explanation != null) {
explanation.style.display = "block";
}
}
});
</script>
</div>
</div>
<p>What is <span class="math inline">\(B\)</span>?</p>
<div class="cell" data-hold="true" data-execution_count="19">
<div class="cell-output cell-output-display" data-execution_count="20">
<form class="mx-2 my-3 mw-100" name="WeaveQuestion" data-id="14947626058961924992" data-controltype="">
<div class="form-group ">
<div class="controls">
<div class="form" id="controls_14947626058961924992">
<div style="padding-top: 5px">
<br>
<div class="input-group">
<input id="14947626058961924992" type="number" class="form-control" placeholder="Numeric answer">
</div>
</div>
</div>
<div id="14947626058961924992_message" style="padding-bottom: 15px"></div>
</div>
</div>
</form>
<script text="text/javascript">
document.getElementById("14947626058961924992").addEventListener("change", function() {
var correct = (Math.abs(this.value - 1) <= 0);
var msgBox = document.getElementById('14947626058961924992_message');
if(correct) {
msgBox.innerHTML = "<div class='pluto-output admonition note alert alert-success'><span> 👍&nbsp; Correct </span></div>";
var explanation = document.getElementById("explanation_14947626058961924992")
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_14947626058961924992")
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>The following gives the partial fraction decomposition for a rational expression:</p>
<p><span class="math display">\[
\frac{3x+5}{(1-2x)^2} = \frac{A}{1-2x} + \frac{B}{(1-2x)^2}.
\]</span></p>
<p>Find <span class="math inline">\(A\)</span> (being careful with the sign):</p>
<div class="cell" data-hold="true" data-execution_count="20">
<div class="cell-output cell-output-display" data-execution_count="21">
<form class="mx-2 my-3 mw-100" name="WeaveQuestion" data-id="13041543806649625382" data-controltype="">
<div class="form-group ">
<div class="controls">
<div class="form" id="controls_13041543806649625382">
<div style="padding-top: 5px">
<br>
<div class="input-group">
<input id="13041543806649625382" type="number" class="form-control" placeholder="Numeric answer">
</div>
</div>
</div>
<div id="13041543806649625382_message" style="padding-bottom: 15px"></div>
</div>
</div>
</form>
<script text="text/javascript">
document.getElementById("13041543806649625382").addEventListener("change", function() {
var correct = (Math.abs(this.value - -1.5) <= 0.001);
var msgBox = document.getElementById('13041543806649625382_message');
if(correct) {
msgBox.innerHTML = "<div class='pluto-output admonition note alert alert-success'><span> 👍&nbsp; Correct </span></div>";
var explanation = document.getElementById("explanation_13041543806649625382")
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_13041543806649625382")
if (explanation != null) {
explanation.style.display = "block";
}
}
});
</script>
</div>
</div>
<p>Find <span class="math inline">\(B\)</span>:</p>
<div class="cell" data-hold="true" data-execution_count="21">
<div class="cell-output cell-output-display" data-execution_count="22">
<form class="mx-2 my-3 mw-100" name="WeaveQuestion" data-id="14164565265345984617" data-controltype="">
<div class="form-group ">
<div class="controls">
<div class="form" id="controls_14164565265345984617">
<div style="padding-top: 5px">
<br>
<div class="input-group">
<input id="14164565265345984617" type="number" class="form-control" placeholder="Numeric answer">
</div>
</div>
</div>
<div id="14164565265345984617_message" style="padding-bottom: 15px"></div>
</div>
</div>
</form>
<script text="text/javascript">
document.getElementById("14164565265345984617").addEventListener("change", function() {
var correct = (Math.abs(this.value - 6.5) <= 0.001);
var msgBox = document.getElementById('14164565265345984617_message');
if(correct) {
msgBox.innerHTML = "<div class='pluto-output admonition note alert alert-success'><span> 👍&nbsp; Correct </span></div>";
var explanation = document.getElementById("explanation_14164565265345984617")
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_14164565265345984617")
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>The following specifies the general partial fraction decomposition for a rational expression:</p>
<p><span class="math display">\[
\frac{1}{(x+1)(x-1)^2} = \frac{A}{x+1} + \frac{B}{x-1} + \frac{C}{(x-1)^2}.
\]</span></p>
<p>Find <span class="math inline">\(A\)</span>:</p>
<div class="cell" data-hold="true" data-execution_count="22">
<div class="cell-output cell-output-display" data-execution_count="23">
<form class="mx-2 my-3 mw-100" name="WeaveQuestion" data-id="9319919937466635217" data-controltype="">
<div class="form-group ">
<div class="controls">
<div class="form" id="controls_9319919937466635217">
<div style="padding-top: 5px">
<br>
<div class="input-group">
<input id="9319919937466635217" type="number" class="form-control" placeholder="Numeric answer">
</div>
</div>
</div>
<div id="9319919937466635217_message" style="padding-bottom: 15px"></div>
</div>
</div>
</form>
<script text="text/javascript">
document.getElementById("9319919937466635217").addEventListener("change", function() {
var correct = (Math.abs(this.value - 0.25) <= 0.001);
var msgBox = document.getElementById('9319919937466635217_message');
if(correct) {
msgBox.innerHTML = "<div class='pluto-output admonition note alert alert-success'><span> 👍&nbsp; Correct </span></div>";
var explanation = document.getElementById("explanation_9319919937466635217")
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_9319919937466635217")
if (explanation != null) {
explanation.style.display = "block";
}
}
});
</script>
</div>
</div>
<p>Find <span class="math inline">\(B\)</span>:</p>
<div class="cell" data-hold="true" data-execution_count="23">
<div class="cell-output cell-output-display" data-execution_count="24">
<form class="mx-2 my-3 mw-100" name="WeaveQuestion" data-id="14584988299614563277" data-controltype="">
<div class="form-group ">
<div class="controls">
<div class="form" id="controls_14584988299614563277">
<div style="padding-top: 5px">
<br>
<div class="input-group">
<input id="14584988299614563277" type="number" class="form-control" placeholder="Numeric answer">
</div>
</div>
</div>
<div id="14584988299614563277_message" style="padding-bottom: 15px"></div>
</div>
</div>
</form>
<script text="text/javascript">
document.getElementById("14584988299614563277").addEventListener("change", function() {
var correct = (Math.abs(this.value - -0.25) <= 0.001);
var msgBox = document.getElementById('14584988299614563277_message');
if(correct) {
msgBox.innerHTML = "<div class='pluto-output admonition note alert alert-success'><span> 👍&nbsp; Correct </span></div>";
var explanation = document.getElementById("explanation_14584988299614563277")
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_14584988299614563277")
if (explanation != null) {
explanation.style.display = "block";
}
}
});
</script>
</div>
</div>
<p>Find <span class="math inline">\(C\)</span>:</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="12901441021132075134" data-controltype="">
<div class="form-group ">
<div class="controls">
<div class="form" id="controls_12901441021132075134">
<div style="padding-top: 5px">
<br>
<div class="input-group">
<input id="12901441021132075134" type="number" class="form-control" placeholder="Numeric answer">
</div>
</div>
</div>
<div id="12901441021132075134_message" style="padding-bottom: 15px"></div>
</div>
</div>
</form>
<script text="text/javascript">
document.getElementById("12901441021132075134").addEventListener("change", function() {
var correct = (Math.abs(this.value - 0.5) <= 0.001);
var msgBox = document.getElementById('12901441021132075134_message');
if(correct) {
msgBox.innerHTML = "<div class='pluto-output admonition note alert alert-success'><span> 👍&nbsp; Correct </span></div>";
var explanation = document.getElementById("explanation_12901441021132075134")
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_12901441021132075134")
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>Compute the following exactly:</p>
<p><span class="math display">\[
\int_0^1 \frac{(x-2)(x-3)}{(x-4)^2\cdot(x-5)} dx
\]</span></p>
<p>Is <span class="math inline">\(-6\log(5) - 5\log(3) - 1/6 + 11\log(4)\)</span> the answer?</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="947752182566389676" data-controltype="">
<div class="form-group ">
<div class="controls">
<div class="form" id="controls_947752182566389676">
<div style="padding-top: 5px">
<div class="form-check">
<label class="form-check-label" for="radio_947752182566389676_1">
<input class="form-check-input" type="radio" name="radio_947752182566389676" id="radio_947752182566389676_1" value="1">
<span class="label-body px-1">
Yes
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_947752182566389676_2">
<input class="form-check-input" type="radio" name="radio_947752182566389676" id="radio_947752182566389676_2" value="2">
<span class="label-body px-1">
No
</span>
</label>
</div>
</div>
</div>
<div id="947752182566389676_message" style="padding-bottom: 15px"></div>
</div>
</div>
</form>
<script text="text/javascript">
document.querySelectorAll('input[name="radio_947752182566389676"]').forEach(function(rb) {
rb.addEventListener("change", function() {
var correct = rb.value == 1;
var msgBox = document.getElementById('947752182566389676_message');
if(correct) {
msgBox.innerHTML = "<div class='pluto-output admonition note alert alert-success'><span> 👍&nbsp; Correct </span></div>";
var explanation = document.getElementById("explanation_947752182566389676")
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_947752182566389676")
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>In the assumptions for the partial fraction decomposition is the fact that <span class="math inline">\(p(x)\)</span> and <span class="math inline">\(q(x)\)</span> share no common factors. Suppose, this isnt the case and in fact we have:</p>
<p><span class="math display">\[
\frac{p(x)}{q(x)} = \frac{(x-c)^m s(x)}{(x-c)^n t(x)}.
\]</span></p>
<p>Here <span class="math inline">\(s\)</span> and <span class="math inline">\(t\)</span> are polynomials such that <span class="math inline">\(s(c)\)</span> and <span class="math inline">\(t(c)\)</span> are non-zero.</p>
<p>If <span class="math inline">\(m &gt; n\)</span>, then why can we cancel out the <span class="math inline">\((x-c)^n\)</span> and not have a concern?</p>
<div class="cell" data-hold="true" 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="2398770446939111792" data-controltype="">
<div class="form-group ">
<div class="controls">
<div class="form" id="controls_2398770446939111792">
<div style="padding-top: 5px">
<div class="form-check">
<label class="form-check-label" for="radio_2398770446939111792_1">
<input class="form-check-input" type="radio" name="radio_2398770446939111792" id="radio_2398770446939111792_1" value="1">
<span class="label-body px-1">
<code>SymPy</code> allows it.
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_2398770446939111792_2">
<input class="form-check-input" type="radio" name="radio_2398770446939111792" id="radio_2398770446939111792_2" value="2">
<span class="label-body px-1">
The value \(c\) is a removable singularity, so the integral will be identical.
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_2398770446939111792_3">
<input class="form-check-input" type="radio" name="radio_2398770446939111792" id="radio_2398770446939111792_3" value="3">
<span class="label-body px-1">
The resulting function has an identical domain and is equivalent for all \(x\).
</span>
</label>
</div>
</div>
</div>
<div id="2398770446939111792_message" style="padding-bottom: 15px"></div>
</div>
</div>
</form>
<script text="text/javascript">
document.querySelectorAll('input[name="radio_2398770446939111792"]').forEach(function(rb) {
rb.addEventListener("change", function() {
var correct = rb.value == 2;
var msgBox = document.getElementById('2398770446939111792_message');
if(correct) {
msgBox.innerHTML = "<div class='pluto-output admonition note alert alert-success'><span> 👍&nbsp; Correct </span></div>";
var explanation = document.getElementById("explanation_2398770446939111792")
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_2398770446939111792")
if (explanation != null) {
explanation.style.display = "block";
}
}
})});
</script>
</div>
</div>
<p>If <span class="math inline">\(m = n\)</span>, then why can we cancel out the <span class="math inline">\((x-c)^n\)</span> and not have a concern?</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="11453636252655775440" data-controltype="">
<div class="form-group ">
<div class="controls">
<div class="form" id="controls_11453636252655775440">
<div style="padding-top: 5px">
<div class="form-check">
<label class="form-check-label" for="radio_11453636252655775440_1">
<input class="form-check-input" type="radio" name="radio_11453636252655775440" id="radio_11453636252655775440_1" value="1">
<span class="label-body px-1">
<code>SymPy</code> allows it.
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_11453636252655775440_2">
<input class="form-check-input" type="radio" name="radio_11453636252655775440" id="radio_11453636252655775440_2" value="2">
<span class="label-body px-1">
The value \(c\) is a removable singularity, so the integral will be identical.
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_11453636252655775440_3">
<input class="form-check-input" type="radio" name="radio_11453636252655775440" id="radio_11453636252655775440_3" value="3">
<span class="label-body px-1">
The resulting function has an identical domain and is equivalent for all \(x\).
</span>
</label>
</div>
</div>
</div>
<div id="11453636252655775440_message" style="padding-bottom: 15px"></div>
</div>
</div>
</form>
<script text="text/javascript">
document.querySelectorAll('input[name="radio_11453636252655775440"]').forEach(function(rb) {
rb.addEventListener("change", function() {
var correct = rb.value == 2;
var msgBox = document.getElementById('11453636252655775440_message');
if(correct) {
msgBox.innerHTML = "<div class='pluto-output admonition note alert alert-success'><span> 👍&nbsp; Correct </span></div>";
var explanation = document.getElementById("explanation_11453636252655775440")
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_11453636252655775440")
if (explanation != null) {
explanation.style.display = "block";
}
}
})});
</script>
</div>
</div>
<p>If <span class="math inline">\(m &lt; n\)</span>, then why can we cancel out the <span class="math inline">\((x-c)^n\)</span> and not have a concern?</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="4527719605341580988" data-controltype="">
<div class="form-group ">
<div class="controls">
<div class="form" id="controls_4527719605341580988">
<div style="padding-top: 5px">
<div class="form-check">
<label class="form-check-label" for="radio_4527719605341580988_1">
<input class="form-check-input" type="radio" name="radio_4527719605341580988" id="radio_4527719605341580988_1" value="1">
<span class="label-body px-1">
<code>SymPy</code> allows it.
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_4527719605341580988_2">
<input class="form-check-input" type="radio" name="radio_4527719605341580988" id="radio_4527719605341580988_2" value="2">
<span class="label-body px-1">
The value \(c\) is a removable singularity, so the integral will be identical.
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_4527719605341580988_3">
<input class="form-check-input" type="radio" name="radio_4527719605341580988" id="radio_4527719605341580988_3" value="3">
<span class="label-body px-1">
The resulting function has an identical domain and is equivalent for all \(x\).
</span>
</label>
</div>
</div>
</div>
<div id="4527719605341580988_message" style="padding-bottom: 15px"></div>
</div>
</div>
</form>
<script text="text/javascript">
document.querySelectorAll('input[name="radio_4527719605341580988"]').forEach(function(rb) {
rb.addEventListener("change", function() {
var correct = rb.value == 3;
var msgBox = document.getElementById('4527719605341580988_message');
if(correct) {
msgBox.innerHTML = "<div class='pluto-output admonition note alert alert-success'><span> 👍&nbsp; Correct </span></div>";
var explanation = document.getElementById("explanation_4527719605341580988")
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_4527719605341580988")
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 partial fraction decomposition, as presented, factors the denominator polynomial into linear and quadratic factors over the real numbers. Alternatively, factoring over the complex numbers is possible, resulting in terms like:</p>
<p><span class="math display">\[
\frac{a + ib}{x - (\alpha + i \beta)} + \frac{a - ib}{x - (\alpha - i \beta)}
\]</span></p>
<p>How to see that these give rise to real answers on integration is the point of this question.</p>
<p>Breaking the terms up over <span class="math inline">\(a\)</span> and <span class="math inline">\(b\)</span> we have:</p>
<p><span class="math display">\[
\begin{align*}
I &amp;= \frac{a}{x - (\alpha + i \beta)} + \frac{a}{x - (\alpha - i \beta)} \\
II &amp;= i\frac{b}{x - (\alpha + i \beta)} - i\frac{b}{x - (\alpha - i \beta)}
\end{align*}
\]</span></p>
<p>Integrating <span class="math inline">\(I\)</span> leads to two logarithmic terms, which are combined to give:</p>
<p><span class="math display">\[
\int I dx = a\cdot \log((x-(\alpha+i\beta)) \cdot (x - (\alpha-i\beta)))
\]</span></p>
<p>This involves no complex numbers, as:</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="4696346816234922530" data-controltype="">
<div class="form-group ">
<div class="controls">
<div class="form" id="controls_4696346816234922530">
<div style="padding-top: 5px">
<div class="form-check">
<label class="form-check-label" for="radio_4696346816234922530_1">
<input class="form-check-input" type="radio" name="radio_4696346816234922530" id="radio_4696346816234922530_1" value="1">
<span class="label-body px-1">
The \(\beta\) are \(0\), as the polynomials in question are real
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_4696346816234922530_2">
<input class="form-check-input" type="radio" name="radio_4696346816234922530" id="radio_4696346816234922530_2" value="2">
<span class="label-body px-1">
The complex numbers are complex conjugates, so the term in the logarithm will simply be \(x - 2\alpha x + \alpha^2 + \beta^2\)
</span>
</label>
</div>
</div>
</div>
<div id="4696346816234922530_message" style="padding-bottom: 15px"></div>
</div>
</div>
</form>
<script text="text/javascript">
document.querySelectorAll('input[name="radio_4696346816234922530"]').forEach(function(rb) {
rb.addEventListener("change", function() {
var correct = rb.value == 2;
var msgBox = document.getElementById('4696346816234922530_message');
if(correct) {
msgBox.innerHTML = "<div class='pluto-output admonition note alert alert-success'><span> 👍&nbsp; Correct </span></div>";
var explanation = document.getElementById("explanation_4696346816234922530")
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_4696346816234922530")
if (explanation != null) {
explanation.style.display = "block";
}
}
})});
</script>
</div>
</div>
<p>The term <span class="math inline">\(II\)</span> benefits from this computation (attributed to Rioboo by <a href="https://arxiv.org/pdf/1712.01752.pdf">Corless et. al</a>)</p>
<p><span class="math display">\[
\frac{d}{dx} i \log(\frac{X+iY}{X-iY}) = 2\frac{d}{dx}\arctan(\frac{X}{Y})
\]</span></p>
<p>Applying this with <span class="math inline">\(X=x - \alpha\)</span> and <span class="math inline">\(Y=-\beta\)</span> shows that <span class="math inline">\(\int II dx\)</span> will be</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="5233478788261806220" data-controltype="">
<div class="form-group ">
<div class="controls">
<div class="form" id="controls_5233478788261806220">
<div style="padding-top: 5px">
<div class="form-check">
<label class="form-check-label" for="radio_5233478788261806220_1">
<input class="form-check-input" type="radio" name="radio_5233478788261806220" id="radio_5233478788261806220_1" value="1">
<span class="label-body px-1">
\(-2b\arctan((x - \alpha)/(\beta))\)
</span>
</label>
</div>
<div class="form-check">
<label class="form-check-label" for="radio_5233478788261806220_2">
<input class="form-check-input" type="radio" name="radio_5233478788261806220" id="radio_5233478788261806220_2" value="2">
<span class="label-body px-1">
\(2b\sec^2(-(x-\alpha)/(-\beta))\)
</span>
</label>
</div>
</div>
</div>
<div id="5233478788261806220_message" style="padding-bottom: 15px"></div>
</div>
</div>
</form>
<script text="text/javascript">
document.querySelectorAll('input[name="radio_5233478788261806220"]').forEach(function(rb) {
rb.addEventListener("change", function() {
var correct = rb.value == 1;
var msgBox = document.getElementById('5233478788261806220_message');
if(correct) {
msgBox.innerHTML = "<div class='pluto-output admonition note alert alert-success'><span> 👍&nbsp; Correct </span></div>";
var explanation = document.getElementById("explanation_5233478788261806220")
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_5233478788261806220")
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="../integrals/integration_by_parts.html" class="pagination-link">
<i class="bi bi-arrow-left-short"></i> <span class="nav-page-text"><span class="chapter-number">39</span>&nbsp; <span class="chapter-title">Integration By Parts</span></span>
</a>
</div>
<div class="nav-page nav-page-next">
<a href="../integrals/improper_integrals.html" class="pagination-link">
<span class="nav-page-text"><span class="chapter-number">41</span>&nbsp; <span class="chapter-title">Improper Integrals</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>