Elementary Numerical Methods and Computing with Python
Total Page:16
File Type:pdf, Size:1020Kb
Elementary Numerical Methods and computing with Python Steven Pav1 Mark McClure2 April 14, 2016 1Portions Copyright c 2004-2006 Steven E. Pav. Permission is granted to copy, dis- tribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. 2Copyright c 2016 Mark McClure. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Ver- sion 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled ”GNU Free Documentation License”. 2 Contents Preface 7 1 Introduction 9 1.1 Examples ............................... 9 1.2 Iteration ................................ 11 1.3 Topics ................................. 12 2 Some mathematical preliminaries 15 2.1 Series ................................. 15 2.1.1 Geometric series ....................... 15 2.1.2 The integral test ....................... 17 2.1.3 Alternating Series ...................... 20 2.1.4 Taylor’s Theorem ....................... 21 Exercises .................................. 25 3 Computer arithmetic 27 3.1 Strange arithmetic .......................... 27 3.2 Error .................................. 28 3.3 Computer numbers .......................... 29 3.3.1 Types of numbers ...................... 29 3.3.2 Floating point numbers ................... 30 3.3.3 Distribution of computer numbers ............. 31 3.3.4 Exploring numbers with Python .............. 32 3.4 Loss of Significance .......................... 33 Exercises .................................. 36 4 Finding Roots 37 4.1 Bisection ............................... 38 4.1.1 Modifications ......................... 38 4.1.2 Convergence ......................... 39 4.1.3 Implementation ........................ 39 4.2 Functional iteration ......................... 41 4.3 Newton’s Method ........................... 43 4.3.1 Connection with functional iteration ............ 43 3 4 CONTENTS 4.3.2 Implementation ........................ 44 4.3.3 Problems ........................... 45 4.3.4 Convergence ......................... 46 4.3.5 Using Newton’s Method ................... 47 4.4 Secant Method ............................ 48 4.4.1 Problems ........................... 50 4.4.2 Convergence ......................... 52 Exercises .................................. 53 5 Interpolation 55 5.1 Polynomial Interpolation ....................... 55 5.1.1 Lagranges Method ...................... 55 5.1.2 Newton’s Method ....................... 57 5.1.3 Newton’s Nested Form .................... 59 5.1.4 Divided Differences ...................... 59 5.2 Errors in Polynomial Interpolation ................. 61 5.2.1 Interpolation Error Theorem ................ 64 5.2.2 Interpolation Error for Equally Spaced Nodes ....... 66 Exercises .................................. 68 6 Spline Interpolation 71 6.1 First and Second Degree Splines .................. 71 6.1.1 First Degree Spline Accuracy ................ 72 6.1.2 Second Degree Splines .................... 73 6.1.3 Computing Second Degree Splines ............. 74 6.2 (Natural) Cubic Splines ....................... 75 6.2.1 Why Natural Cubic Splines? ................ 75 6.2.2 Computing Cubic Splines .................. 76 6.3 B Splines ............................... 77 Exercises .................................. 80 7 Solving Linear Systems 83 7.1 Gaussian Elimination with Na¨ıve Pivoting ............. 83 7.1.1 Elementary Row Operations ................. 83 7.1.2 Algorithm Terminology ................... 86 7.1.3 Algorithm Problems ..................... 87 7.2 Pivoting Strategies for Gaussian Elimination ........... 88 7.2.1 Scaled Partial Pivoting ................... 89 7.2.2 An Example ......................... 89 7.2.3 Another Example and A Real Algorithm .......... 90 7.3 LU Factorization ........................... 92 7.3.1 An Example ......................... 93 7.3.2 Using LU Factorizations ................... 95 7.3.3 Some Theory ......................... 96 7.3.4 Computing Inverses ..................... 97 7.4 Iterative Solutions .......................... 97 CONTENTS 5 7.4.1 An Operation Count for Gaussian Elimination ...... 97 7.4.2 Dividing by Multiplying ................... 98 7.4.3 Impossible Iteration .....................100 7.4.4 Richardson Iteration .....................100 7.4.5 Jacobi Iteration ........................101 7.4.6 Gauss Seidel Iteration ....................102 7.4.7 Error Analysis ........................103 7.4.8 A Free Lunch? ........................105 Exercises ..................................106 8 Least Squares 111 8.1 Least Squares .............................111 8.1.1 The Definition of Ordinary Least Squares ......... 111 8.1.2 Linear Least Squares .....................112 8.1.3 Least Squares from Basis Functions ............114 8.2 Orthonormal Bases ..........................117 8.2.1 Alternatives to Normal Equations .............119 8.3 Orthogonal Least Squares ......................120 8.3.1 Computing the Orthogonal Least Squares Approximant . 125 8.3.2 Principal Component Analysis ...............126 Exercises ..................................128 9 Approximating Derivatives 131 9.1 Finite Differences ...........................131 9.1.1 Approximating the Second Derivative ...........133 9.2 Richardson Extrapolation ......................134 9.2.1 Abstracting Richardson’s Method ..............134 9.2.2 Using Richardson Extrapolation ..............135 Exercises ..................................138 10 Integrals and Quadrature 141 10.1 The Definite Integral .........................141 10.1.1 Upper and Lower Sums ...................141 10.1.2 Approximating the Integral .................143 10.1.3 Simple and Composite Rules ................144 10.2 Trapezoidal Rule ...........................144 10.2.1 How Good is the Composite Trapezoidal Rule? ...... 146 10.2.2 Using the Error Bound ....................147 10.3 Romberg Algorithm .........................148 10.3.1 Recursive Trapezoidal Rule .................151 10.4 Gaussian Quadrature .........................152 10.4.1 Determining Weights (Lagrange Polynomial Method) . 152 10.4.2 Determining Weights (Method of Undetermined Coeffi- cients) .............................154 10.4.3 Gaussian Nodes ........................155 10.4.4 Determining Gaussian Nodes ................156 6 CONTENTS 10.4.5 Reinventing the Wheel ....................158 Exercises ..................................160 11 Ordinary Differential Equations 163 11.1 Elementary Methods .........................163 11.1.1 Integration and ‘Stepping’ ..................164 11.1.2 Taylor’s Series Methods ...................164 11.1.3 Euler’s Method ........................165 11.1.4 Higher Order Methods ....................165 11.1.5 A basic error estimate ....................166 11.1.6 Error theorems ........................167 11.1.7 Examples ...........................168 11.1.8 Stability ............................168 11.1.9 Backwards Euler’s Method .................172 11.2 Runge-Kutta Methods ........................174 11.2.1 Taylor’s Series Redux ....................175 11.2.2 Deriving the Runge-Kutta Methods ............175 11.2.3 Examples ...........................177 11.3 Systems of ODEs ...........................177 11.3.1 Larger Systems ........................178 11.3.2 Recasting Single ODE Methods ...............179 11.3.3 It’s Only Systems .......................180 11.3.4 It’s Only Autonomous Systems ...............181 Exercises ..................................185 A GNU Free Documentation License 187 1. APPLICABILITY AND DEFINITIONS ...............187 2. VERBATIM COPYING ........................189 3. COPYING IN QUANTITY ......................189 4. MODIFICATIONS ...........................190 5. COMBINING DOCUMENTS .....................192 6. COLLECTIONS OF DOCUMENTS .................192 7. AGGREGATION WITH INDEPENDENT WORKS ........ 192 8. TRANSLATION ............................193 9. TERMINATION ............................193 10. FUTURE REVISIONS OF THIS LICENSE ............193 ADDENDUM: How to use this License for your documents ...... 194 Preface This preliminary version 0.2.1 of an open numerical methods text has been as- sembled by Mark McClure for use in UNCA’s Math/CS 441 course in Numerical Analysis. It draws largely on Stephen Pav’s Numerical Methods Course Notes. Most of chapters 4 through 8 of this version, as well as parts of chapters 2 and 3, are drawn directly from that work. The little that remains is my own, though, I hope to expand it as I teach the subject. History 0.1 2005 (Pav’s complete original) 0.2 January 11, 2016 - First new draft Chapters 1, 2, and 3 are largely new, though section 2.1.4 on “Taylor series” and section 3.4 on “Loss of significance” are mostly Pav’s work. 0.2.1 January 16, 2016 Incremental changes to sections 2.1.1 Geometric Series • 2.1.2 The integral test • 2.1.3 Alternating series • 0.2.2 January 31, 2016 Addition of sections 3.3.3 Distribution of computer numbers • 4.2 Functional iteration • Modifications to section 4.1 The bisection method, including Python code. Addition of several exercises to chapters 3 and 4. Fixed many typos and some hyperlinks License As Pav’s work is licensed under GNU FDL V2, so is this. A full copy of the license may be found at the end of the text. 7 8