A Primer on Scientific Programming with Python
Book information
Description
The book serves as a first introduction to computer programming of scientific applications, using the high-level Python language. The exposition is example- and problem-oriented, where the applications are taken from mathematics, numerical calculus, statistics, physics, biology, and finance. The book teaches "Matlab-style" and procedural programming as well as object-oriented programming. High school mathematics is a required background, and it is advantageous to study classical and numerical one-variable calculus in parallel with reading this book. Besides learning how to program computers, the reader will also learn how to solve mathematical problems, arising in various branches of science and engineering, with the aid of numerical methods and programming. By blending programming, mathematics and scientific applications, the book lays a solid foundation for practicing computational science. Cover Preface Contents List of Exercises 1 Computing with Formulas 1.1 The First Programming Encounter: A Formula 1.1.1 Using a Program as a Calculator 1.1.2 About Programs and Programming 1.1.3 Tools for Writing Programs 1.1.4 Using Idle to Write the Program Warning About Typing Program Text 1.1.5 How to Run the Program 1.1.6 Verifying the Result 1.1.7 Using Variables 1.1.8 Names of Variables 1.1.9 Reserved Words in Python 1.1.10 Comments 1.1.11 Formatting Text and Numbers Printf Syntax Format String Syntax The Newline Character 1.2 Computer Science Glossary 1.3 Another Formula: Celsius-Fahrenheit Conversion 1.3.1 Potential Error: Integer Division Straightforward Coding of the Formula Verifying the Results Float and Integer Division 1.3.2 Objects in Python 1.3.3 Avoiding Integer Division Comment 1.3.4 Arithmetic Operators and Precedence 1.4 Evaluating Standard Mathematical Functions 1.4.1 Example: Using the Square Root Function Problem The Program Two Ways of Importing a Module Import with New Names 1.4.2 Example: Using More Mathematical Functions 1.4.3 A First Glimpse of Round-Off Errors 1.5 Interactive Computing 1.5.1 Using the Python Shell 1.5.2 Type Conversion 1.5.3 IPython Running Programs Quick Recovery of Previous Output TAB Completion Recovering Previous Commands Running Unix/Windows Commands Remark 1.6 Complex Numbers 1.6.1 Complex Arithmetics in Python 1.6.2 Complex Functions in Python 1.6.3 Unified Treatment of Complex and Real Functions 1.7 Summary 1.7.1 Chapter Topics Program Files Programs Must Be Accurate! Variables Comment Lines Object Types Operators Common Mathematical Functions Print Integer Division Complex Numbers Terminology 1.7.2 Example: Trajectory of a Ball Problem Solution 1.7.3 About Typesetting Conventions in This Book 1.8 Exercises What Does It Mean to Solve an Exercise? 2 Loops and Lists 2.1 While Loops 2.1.1 A Naive Solution 2.1.2 While Loops 2.1.3 Boolean Expressions 2.1.4 Loop Implementation of a Sum 2.2 Lists 2.2.1 Basic List Operations 2.2.2 For Loops The Nature of For Loops Making the Table 2.3 Alternative Implementations with Lists and Loops 2.3.1 While Loop Implementation of a For Loop 2.3.2 The Range Construction 2.3.3 For Loops with List Indices 2.3.4 Changing List Elements 2.3.5 List Comprehension 2.3.6 Traversing Multiple Lists Simultaneously 2.4 Nested Lists 2.4.1 A Table as a List of Rows or Columns 2.4.2 Printing Objects Modules for Pretty Print of Objects Manual Printing 2.4.3 Extracting Sublists Example 2.4.4 Traversing Nested Lists 2.5 Tuples 2.6 Summary 2.6.1 Chapter Topics While Loops Lists Nested Lists Tuples For Loops Pretty Print Terminology 2.6.2 Example: Analyzing List Data Problem Solution 2.6.3 How to Find More Python Information 2.7 Exercises 3 Functions and Branching 3.1 Functions 3.1.1 Functions of One Variable 3.1.2 Local and Global Variables 3.1.3 Multiple Arguments 3.1.4 Multiple Return Values 3.1.5 Functions with No Return Values 3.1.6 Keyword Arguments Example: Function with Default Parameters Example: Computing a Sum with Default Tolerance 3.1.7 Doc Strings 3.1.8 Function Input and Output 3.1.9 Functions as Arguments to Functions The Behavior of the Numerical Derivative as h → 0 3.1.10 The Main Program 3.1.11 Lambda Functions 3.2 Branching 3.2.1 If-Else Blocks 3.2.2 Inline If Tests 3.3 Mixing Loops, Branching, and Functions in Bioinformatics Examples 3.3.1 Counting Letters in DNA Strings List Iteration String Iteration Program Flow Index Iteration While Loops Summing a Boolean List Inline If Test Using Boolean Values Directly List Comprehensions Using a Sum Iterator Extracting Indices Using Python's Library 3.3.2 Efficiency Assessment Generating Random DNA Strings Measuring CPU Time 3.4 Summary 3.4.1 Chapter Topics User-Defined Functions Keyword Arguments If Tests Inline If Tests Terminology 3.4.2 Example: Numerical Integration Problem Solution 3.5 Exercises 4 Input Data and Error Handling 4.1 Asking Questions and Reading Answers 4.1.1 Reading Keyboard Input 4.1.2 The Magic “eval” Function 4.1.3 The Magic “exec” Function 4.1.4 Turning String Expressions into Functions 4.2 Reading from the Command Line 4.2.1 Providing Input on the Command Line 4.2.2 A Variable Number of Command-Line Arguments 4.2.3 More on Command-Line Arguments 4.2.4 Option-Value Pairs on the Command Line 4.3 Handling Errors 4.3.1 Exception Handling Testing for a Specific Exception Examples on Exception Types Digression 4.3.2 Raising Exceptions Example 4.4 A Glimpse of Graphical User Interfaces 4.5 Making Modules 4.5.1 Example: Interest on Bank Deposits 4.5.2 Collecting Functions in a Module File Test Block Flexible Test Blocks 4.5.3 Using Modules 4.6 Summary 4.6.1 Chapter Topics Question and Answer Input Getting Command-Line Arguments Using Option-Value Pairs Generating Code on the Fly Turning String Formulas into Python Functions Handling Exceptions Raising Exceptions Modules 4.6.2 Example: Bisection Root Finding Problem Solution Verification Making a Function Making a Module Using the Module A Flexible Program for Solving f(x) = 0 4.7 Exercises 5 Array Computing and Curve Plotting 5.1 Vectors 5.1.1 The Vector Concept 5.1.2 Mathematical Operations on Vectors 5.1.3 Vector Arithmetics and Vector Functions 5.2 Arrays in Python Programs 5.2.1 Using Lists for Collecting Function Data 5.2.2 Basics of Numerical Python Arrays 5.2.3 Computing Coordinates and Function Values 5.2.4 Vectorization 5.3 Curve Plotting 5.3.1 Matplotlib; Pylab A Basic Plot Decorating the Plot Plotting Multiple Curves Placing Several Plots in One Figure 5.3.2 Matplotlib; Pyplot 5.3.3 SciTools and Easyviz Importing SciTools and Easyviz A Basic Plot Decorating the Plot Plotting Multiple Curves Changing Backend Placing Several Plots in One Figure 5.3.4 Making Animations Example Animation in Matplotlib Remarks on Filenames Movie Formats 5.3.5 Curves in Pure Text 5.4 Plotting Difficulties 5.4.1 Piecewisely Defined Functions Example: The Heaviside Function Example: A Hat Function 5.4.2 Rapidly Varying Functions 5.5 More Advanced Vectorization of Functions 5.5.1 Vectorizing StringFunction Objects 5.5.2 Vectorization of the Heaviside Function Loop Automatic Vectorization Mixing Boolean and Floating-Point Calculations Manual Vectorization 5.5.3 Vectorization of a Hat Function 5.6 More on Numerical Python Arrays 5.6.1 Copying Arrays 5.6.2 In-Place Arithmetics 5.6.3 Allocating Arrays 5.6.4 Generalized Indexing 5.6.5 Testing for the Array Type Example: Vectorizing a Constant Function 5.6.6 Compact Syntax for Array Generation 5.6.7 Shape Manipulation 5.7 Higher-Dimensional Arrays 5.7.1 Matrices and Arrays 5.7.2 Two-Dimensional Numerical Python Arrays 5.7.3 Array Computing Remark 5.7.4 Two-Dimensional Arrays and Functions of Two Variables 5.7.5 Matrix Objects 5.8 Summary 5.8.1 Chapter Topics Array Computing Plotting Curves Making Movies 5.8.2 Example: Animating a Function Problem Solution Scaling 5.9 Exercises 6 Files, Strings, and Dictionaries 6.1 Reading Data from File 6.1.1 Reading a File Line by Line For Loop over Lines While Loop over Lines Reading a File into a String 6.1.2 Reading a Mixture of Text and Numbers 6.1.3 What Is a File, Really? Pure Text Files Word Processor Files Image Files Music Files PDF Files Remarks 6.2 Dictionaries 6.2.1 Making Dictionaries 6.2.2 Dictionary Operations Remark 6.2.3 Example: Polynomials as Dictionaries 6.2.4 Dictionaries with Default Values and Ordering Dictionaries with Default Values Ordered Dictionaries 6.2.5 Example: File Data in Dictionaries Problem Solution 6.2.6 Example: File Data in Nested Dictionaries Problem Algorithm Implementation Dissection 6.2.7 Example: Comparing Stock Prices Problem Solution Generalization 6.3 Strings 6.3.1 Common Operations on Strings Substring Specification Searching for Substrings Substitution String Splitting Upper and Lower Case Strings Are Constant Strings with Digits Only Whitespace Joining Strings 6.3.2 Example: Reading Pairs of Numbers Problem Solution 6.3.3 Example: Reading Coordinates Problem Solution 1: Substring Extraction Solution 2: String Search Solution 3: String Split 6.4 Reading Data from Web Pages 6.4.1 About Web Pages 6.4.2 How to Access Web Pages in Programs 6.4.3 Example: Reading Pure Text Files 6.4.4 Example: Extracting Data from HTML 6.5 Writing Data to File 6.5.1 Example: Writing a Table to File Problem Solution 6.5.2 Standard Input and Output as File Objects Redirecting Standard Input, Output, and Error Note 6.5.3 Reading and Writing Spreadsheet Files Reading CSV Files Processing Data Writing CSV Files Remark Representing Number Cells with Numerical Python Arrays 6.6 Examples from Analyzing DNA 6.6.1 Computing Frequencies Separate Frequency Lists Nested List Dictionary for More Convenient Indexing Numerical Python Array Dictionary of Lists Dictionary of Dictionaries Using Dictionaries with Default Values Remark Using Arrays and Vectorization 6.6.2 Analyzing the Frequency Matrix List of Lists Frequency Matrix Dict of Dicts Frequency Matrix 6.6.3 Finding Base Frequencies 6.6.4 Translating Genes into Proteins 6.6.5 Some Humans Can Drink Milk, While Others Cannot 6.7 Summary 6.7.1 Chapter Topics File Operations Downloading Internet Files Dictionaries Strings 6.7.2 Example: A File Database Problem Solution 6.8 Exercises 7 Introduction to Classes 7.1 Simple Function Classes 7.1.1 Problem: Functions with Parameters Problem A Bad Solution: Global Variables 7.1.2 Representing a Function as a Class Implementation Usage and Dissection The self Variable Extension of the Class Remark Using Methods as Ordinary Functions Doc Strings 7.1.3 Another Function Class Example Remark 7.1.4 Alternative Function Class Implementations 7.1.5 Making Classes Without the Class Construct First Remark Second Remark 7.2 More Examples on Classes 7.2.1 Bank Accounts 7.2.2 Phone Book 7.2.3 A Circle Remark 7.3 Special Methods 7.3.1 The Call Special Method 7.3.2 Example: Automagic Differentiation Problem Solution Application: Newton's Method 7.3.3 Example: Automagic Integration A Simple Implementation Remark 7.3.4 Turning an Instance into a String 7.3.5 Example: Phone Book with Special Methods Remark 7.3.6 Adding Objects 7.3.7 Example: Class for Polynomials Implementation Usage Pretty Print of Polynomials 7.3.8 Arithmetic Operations and Other Special Methods 7.3.9 Special Methods for String Conversion Recreating Objects from Strings 7.4 Example: Class for Vectors in the Plane 7.4.1 Some Mathematical Operations on Vectors 7.4.2 Implementation 7.4.3 Usage Comment 7.5 Example: Class for Complex Numbers 7.5.1 Implementation 7.5.2 Illegal Operations 7.5.3 Mixing Complex and Real Numbers Computer Science Discussion 7.5.4 Special Methods for “Right” Operands Remark 7.5.5 Inspecting Instances 7.6 Static Methods and Attributes 7.7 Summary 7.7.1 Chapter Topics Classes Special Methods 7.7.2 Example: Interval Arithmetics Problem Solution 7.8 Exercises 8 Random Numbers and Simple Games 8.1 Drawing Random Numbers 8.1.1 The Seed 8.1.2 Uniformly Distributed Random Numbers 8.1.3 Visualizing the Distribution 8.1.4 Vectorized Drawing of Random Numbers Warning 8.1.5 Computing the Mean and Standard Deviation 8.1.6 The Gaussian or Normal Distribution 8.2 Drawing Integers 8.2.1 Random Integer Functions 8.2.2 Example: Throwing a Die 8.2.3 Drawing a Random Element from a List 8.2.4 Example: Drawing Cards from a Deck 8.2.5 Example: Class Implementation of a Deck 8.3 Computing Probabilities 8.3.1 Principles of Monte Carlo Simulation 8.3.2 Example: Throwing Dice Straightforward Solution Vectorization Exact Solution A Game Decide If a Game Is Fair 8.3.3 Example: Drawing Balls from a Hat 8.3.4 Random Mutations of Genes A Simple Mutation Model Vectorized Version A Markov Chain Mutation Model 8.3.5 Example: Policies for Limiting Population Growth 8.4 Simple Games 8.4.1 Guessing a Number The Game The Implementation 8.4.2 Rolling Two Dice The Game The Implementation Example A Class Version 8.5 Monte Carlo Integration 8.5.1 Standard Monte Carlo Integration 8.5.2 Area Computing by Throwing Random Points 8.6 Random Walk in One Space Dimension 8.6.1 Basic Implementation 8.6.2 Visualization 8.6.3 Random Walk as a Difference Equation 8.6.4 Computing Statistics of the Particle Positions 8.6.5 Vectorized Implementation 8.7 Random Walk in Two Space Dimensions 8.7.1 Basic Implementation 8.7.2 Vectorized Implementation 8.8 Summary 8.8.1 Chapter Topics Drawing Random Numbers Typical Probability Computation Statistical Measures 8.8.2 Example: Random Growth Problem Solution 8.9 Exercises 9 Object-Oriented Programming 9.1 Inheritance and Class Hierarchies 9.1.1 A Class for Straight Lines 9.1.2 A First Try on a Class for Parabolas 9.1.3 A Class for Parabolas Using Inheritance Program Flow 9.1.4 Checking the Class Type 9.1.5 Attribute Versus Inheritance 9.1.6 Extending Versus Restricting Functionality 9.1.7 Superclass for Defining an Interface 9.2 Class Hierarchy for Numerical Differentiation 9.2.1 Classes for Differentiation Computer Science Remark 9.2.2 A Flexible Main Program 9.2.3 Extensions Application 9.2.4 Alternative Implementation via Functions 9.2.5 Alternative Implementation via Functional Programming 9.2.6 Alternative Implementation via a Single Class Remark 9.3 Class Hierarchy for Numerical Integration 9.3.1 Numerical Integration Methods 9.3.2 Classes for Integration 9.3.3 Using the Class Hierarchy 9.3.4 About Object-Oriented Programming 9.4 Class Hierarchy for Making Drawings 9.4.1 Using the Object Collection Basic Drawing Groups of Objects Changing Line Styles and Colors The Figure Composition as an Object Hierarchy Animation: Translating the Vehicle Animation: Rolling the Wheels 9.4.2 Example of Classes for Geometric Objects Simple Geometric Objects Class Curve Compound Geometric Objects 9.4.3 Adding Functionality via Recursion Basic Principles of Recursion Explaining Recursion 9.4.4 Scaling, Translating, and Rotating a Figure Scaling Translation Rotation 9.5 Classes for DNA Analysis 9.5.1 Class for Regions 9.5.2 Class for Genes Basic Features of class Gene Flexible Constructor Other Methods 9.5.3 Subclasses Acknowledgments 9.6 Summary 9.6.1 Chapter Topics Subclass Example Subclassing in General 9.6.2 Example: Input Data Reader Problem Solution Prompting the User Reading from File Reading from the Command Line Reading from a GUI More Flexibility in the Superclass Demonstrating the Tool 9.7 Exercises A Sequences and Difference Equations A.1 Mathematical Models Based on Difference Equations A.1.1 Interest Rates A.1.2 The Factorial as a Difference Equation A.1.3 Fibonacci Numbers A.1.4 Growth of a Population A.1.5 Logistic Growth A.1.6 Payback of a Loan A.1.7 The Integral as a Difference Equation A.1.8 Taylor Series as a Difference Equation A.1.9 Making a Living from a Fortune A.1.10 Newton's Method A.1.11 The Inverse of a Function A.2 Programming with Sound A.2.1 Writing Sound to File A.2.2 Reading Sound from File A.2.3 Playing Many Notes A.2.4 Music of a Sequence Problem Solution A.3 Exercises B Introduction to Discrete Calculus B.1 Discrete Functions B.1.1 The Sine Function B.1.2 Interpolation B.1.3 Evaluating the Approximation B.1.4 Generalization B.2 Differentiation Becomes Finite Differences B.2.1 Differentiating the Sine Function B.2.2 Differences on a Mesh B.2.3 Generalization B.3 Integration Becomes Summation B.3.1 Dividing into Subintervals B.3.2 Integration on Subintervals B.3.3 Adding the Subintervals B.3.4 Generalization B.4 Taylor Series B.4.1 Approximating Functions Close to One Point B.4.2 Approximating the Exponential Function B.4.3 More Accurate Expansions B.4.4 Accuracy of the Approximation B.4.5 Derivatives Revisited B.4.6 More Accurate Difference Approximations B.4.7 Second-Order Derivatives B.5 Exercises C Introduction to Differential Equations C.1 The Simplest Case C.2 Exponential Growth Analytical Solution Numerical Solution C.3 Logistic Growth C.4 A Simple Pendulum C.5 A Model for the Spread of a Disease C.6 Exercises D A Complete Differential Equation Project D.1 About the Problem: Motion and Forces in Physics D.1.1 The Physical Problem Goal of the Computations The Key Quantities D.1.2 The Computational Algorithm D.1.3 Derivation of the Mathematical Model D.1.4 Derivation of the Algorithm D.2 Program Development and Testing D.2.1 Implementation D.2.2 Callback Functionality D.2.3 Making a Module D.2.4 Verification D.3 Visualization D.3.1 Simultaneous Computation and Plotting Fixing Axes D.3.2 Some Applications D.3.3 Remark on Choosing Δt D.3.4 Comparing Several Quantities in Subplots D.3.5 Comparing Approximate and Exact Solutions D.3.6 Evolution of the Error as Δt Decreases D.4 Exercises E Programming of Differential Equations E.1 Scalar Ordinary Differential Equations E.1.1 Examples on Right-Hand-Side Functions E.1.2 The Forward Euler Scheme E.1.3 Function Implementation E.1.4 Verifying the Implementation E.1.5 From Discrete to Continuous Solution E.1.6 Switching Numerical Method E.1.7 Class Implementation Class Wrapping of a Function Switching Numerical Method A More Flexible Class E.1.8 Example: Logistic Growth E.2 Systems of Ordinary Differential Equations E.2.1 Mathematical Problem E.2.2 Example of a System of ODEs E.2.3 From Scalar ODE Code to Systems Function Implementation Allowing Lists Class Implementation E.2.4 Numerical Methods E.2.5 The ODE Solver Class Hierarchy The Superclass The Forward Euler Method Remark The 4th-order Runge-Kutta Method E.2.6 The Backward Euler Method E.2.7 Application 1: u' = -u E.2.8 Application 2: The Logistic Equation Basic Problem and Solver Classes Computing an Appropriate Δt Dealing with Time-Dependent Coefficients Reading Input E.2.9 Application 3: An Oscillating System E.2.10 Application 4: The Trajectory of a Ball E.2.11 Further Developments of ODESolver E.3 Exercises F Debugging F.1 Using a Debugger F.2 How to Debug F.2.1 A Recipe for Program Writing and Debugging F.2.2 Application of the Recipe Problem Solution Refining the User Interface G Migrating Python to Compiled Code G.1 Pure Python Code for Monte Carlo Simulation G.1.1 The Computational Problem G.1.2 A Scalar Python Implementation G.1.3 A Vectorized Python Implementation G.2 Migrating Scalar Python Code to Cython G.2.1 A Plain Cython Implementation G.2.2 A Better Cython Implementation G.3 Migrating Code to C G.3.1 Writing a C Program G.3.2 Migrating Loops to C Code via F2PY G.3.3 Migrating Loops to C Code via Cython G.3.4 Comparing Efficiency H Technical Topics H.1 Different Ways of Running Python Programs H.1.1 Executing Python Programs in IPython H.1.2 Executing Python Programs on Unix H.1.3 Executing Python Programs on Windows Double-Clicking Python Files Gnuplot Plots on Windows H.1.4 Executing Python Programs on Macintosh H.1.5 Making a Complete Stand-Alone Executable H.2 Integer and Float Division H.3 Visualizing a Program with Lumpy H.4 Doing Operating System Tasks in Python H.5 Variable Number of Function Arguments H.5.1 Variable Number of Positional Arguments Example H.5.2 Variable Number of Keyword Arguments Example H.6 Evaluating Program Efficiency H.6.1 Making Time Measurements The time Module The timeit Module Hardware Information H.6.2 Profiling Python Programs References Index
Similar books
Python Scripting for Computational Science (Texts in Computational Science and Engineering)
2004 · PDF
Computational Partial Differential Equations
2003 · PDF
Advanced Topics in Computational Partial Differential Equations: Numerical Methods and Diffpack Programming
2003 · DJVU
Programming for Computations - Python: A Gentle Introduction to Numerical Simulations with Python 3.6, 2nd Edition
2019 · EPUB
A Primer on Scientific Programming with Python
EPUB
A Primer on Scientific Programming with Python
2016 · PDF
A Primer on Scientific Programming with Python
EPUB
Programming For Computations - Python: A Gentle Introduction To Numerical Simulations With Python 3.6
2020 · PDF