๐”– Scriptorium
โœฆ   LIBER   โœฆ

๐Ÿ“

Introduction to Scientific Programming with Python: A Starting Point

โœ Scribed by Educohack Press


Publisher
Educohack Press
Year
2023
Tongue
English
Leaves
2237
Category
Library

โฌ‡  Acquire This Volume

No coin nor oath required. For personal study only.

โœฆ Synopsis


Introduction to Scientific Programming with Python: A Starting Pointย serves as a foundational resource for anyone venturing into scientific programming. This book delves into Python programming and its application in scientific contexts, covering numerical methods, object-oriented programming, and vectorization techniques. Readers will explore Monte Carlo simulations, tackle numerical calculus, and solve ordinary differential equations. Whether you're a beginner or seeking to expand your programming skills, this book provides a solid starting point. It equips you with the essential knowledge and tools to engage in scientific programming, making it an invaluable asset for students and professionals alike.

โœฆ Table of Contents


Computing with Formulas...................................1
The First Programming Encounter: a Formula....................1
Using a Program as a Calculator.........................2
About Programs and Programming.......................2
Tools for Writing Programs............................3
Writing and Running Your First Python Program..............4
Warning About Typing Program Text.....................5
Verifying the Result.................................6
Using Variables....................................6
Names of Variables.................................6
Reserved Words in Python............................7
Comments.......................................8
Formatting Text and Numbers..........................9
Computer Science Glossary...............................12
Another Formula: Celsius-Fahrenheit Conversion................16
Potential Error: Integer Division........................16
Objects in Python..................................17
Avoiding Integer Division............................18
Arithmetic Operators and Precedence.....................20
Evaluating Standard Mathematical Functions...................20
Example: Using the Square Root Function.................20
Example: Computing with sinh x........................23
A First Glimpse of Rounding Errors.....................23
Interactive Computing..................................24
Using the Python Shell..............................25
Type Conversion..................................26
IPython........................................27
Complex Numbers.....................................29
Complex Arithmetics in Python........................30
Complex Functions in Python..........................31
Unified Treatment of Complex and Real Functions............31
Symbolic Computing...................................33
Basic Differentiation and Integration.....................33
Equation Solving..................................34

xi

Taylor Series and More..............................35

Summary...........................................35
    Chapter Topics...................................35
    Example: Trajectory of a Ball..........................39
    About Typesetting Conventions in This Book...............40
Exercises...........................................41

Loops and Lists..........................................51
    While Loops.........................................51
        A Naive Solution..................................51
        While Loops.....................................52
        Boolean Expressions................................54
        Loop Implementation of a Sum.........................56
    Lists 57
        Basic List Operations...............................57
        For Loops.......................................60
    Alternative Implementations with Lists and Loops................62
        While Loop Implementation of a for Loop.................62
        The Range Construction.............................63
        For Loops with List Indices...........................64
        Changing List Elements.............................65
        List Comprehension................................66
        Traversing Multiple Lists Simultaneously..................66
    Nested Lists.........................................67
        A table as a List of Rows or Columns....................67
        Printing Objects...................................68
        Extracting Sublists.................................70
        Traversing Nested Lists..............................72
    Tuples.............................................74
    Summary...........................................75
        Chapter Topics...................................75
        Example: Analyzing List Data.........................78
        How to Find More Python Information....................80
    Exercises...........................................82
Functions and Branching...................................91
    Functions...........................................91
        Mathematical Functions as Python Functions...............91
        Understanding the Program Flow.......................93
        Local and Global Variables...........................94
        Multiple Arguments................................96
        Function Argument or Global Variable?...................97
        Beyond Mathematical Functions........................98
        Multiple Return Values..............................99
        Computing Sums.................................100
        Functions with No Return Values......................101
        Keyword Arguments...............................103
        Doc Strings.....................................105
        Functions as Arguments to Functions....................107
        The Main Program................................109
        Lambda Functions................................110
    Branching..........................................110
        If-else Blocks...................................111
        Inline if Tests...................................113
    Mixing Loops, Branching, and Functions in Bioinformatics

Examples......................................113

Counting Letters in DNA Strings.......................114
Efficiency Assessment..............................118
Verifying the Implementations........................120

Summary..........................................121
    Chapter Topics...................................121
    Example: Numerical Integration.......................123
Exercises..........................................127

User Input and Error Handling..............................149
    Asking Questions and Reading Answers......................150
        Reading Keyboard Input............................150
    Reading from the Command Line..........................151
        Providing Input on the Command Line...................151
        A Variable Number of Command-Line Arguments...........152
        More on Command-Line Arguments....................153
    Turning User Text into Live Objects........................154
        The Magic Eval Function............................154
        The Magic Exec Function...........................158
        Turning String Expressions into Functions................160
    Option-Value Pairs on the Command Line....................161
        Basic Usage of the Argparse Module....................162
        Mathematical Expressions as Values....................163
    Reading Data from File.................................165
        Reading a File Line by Line..........................166
        Alternative Ways of Reading a File.....................167
        Reading a Mixture of Text and Numbers..................169
    Writing Data to File...................................171
        Example: Writing a Table to File.......................171
        Standard Input and Output as File Objects.................173
        What is a File, Really?..............................176
    Handling Errors......................................179
        Exception Handling...............................180
        Raising Exceptions................................183
    A Glimpse of Graphical User Interfaces......................185
    Making Modules.....................................188
        Example: Interest on Bank Deposits.....................188
        Collecting Functions in a Module File...................189
        Test Block.....................................190
        Verification of the Module Code.......................192
        Getting Input Data................................193
        Doc Strings in Modules.............................195
        Using Modules..................................196
        Distributing Modules..............................199
        Making Software Available on the Internet................200
    Making Code for Python 2 and 3...........................201
        Basic Differences Between Python 2 and 3................201
        Turning Python 2 Code into Python 3 Code................202
    Summary..........................................204
        Chapter Topics..................................204
        Example: Bisection Root Finding......................208
    Exercises..........................................216
Array Computing and Curve Plotting.........................227
    Vectors...........................................228
        The Vector Concept...............................228
        Mathematical Operations on Vectors....................229
        Vector Arithmetics and Vector Functions.................231
    Arrays in Python Programs..............................232
        Using Lists for Collecting Function Data.................232
        Basics of Numerical Python Arrays.....................233
        Computing Coordinates and Function Values...............235
        Vectorization....................................236
    Curve Plotting.......................................238
        MATLAB-Style Plotting with Matplotlib.................238
        Matplotlib; Pyplot Prefix............................243
        SciTools and Easyviz..............................244
        Making Animations...............................249
        Making Videos..................................254
        Curve Plots in Pure Text............................255
    Plotting Difficulties...................................256
        Piecewisely Defined Functions........................256
        Rapidly Varying Functions...........................259
    More Advanced Vectorization of Functions...................260
        Vectorization of StringFunction Objects..................260
        Vectorization of the Heaviside Function..................261
        Vectorization of a Hat Function........................265
    More on Numerical Python Arrays.........................267
        Copying Arrays..................................267
        In-Place Arithmetics...............................268
        Allocating Arrays.................................269
        Generalized Indexing..............................269
        Testing for the Array Type...........................270
        Compact Syntax for Array Generation...................271
        Shape Manipulation...............................271
    High-Performance Computing with Arrays....................272
        Scalar Implementation..............................272
        Vectorized Implementation..........................273
        Memory-Saving Implementation.......................273
        Analysis of Memory Usage..........................275
        Analysis of the CPU Time...........................276
    Higher-Dimensional Arrays..............................277
        Matrices and Arrays...............................277
        Two-Dimensional Numerical Python Arrays...............278
        Array Computing.................................281
        Matrix Objects...................................282
    Some Common Linear Algebra Operations....................283
        Inverse, Determinant, and Eigenvalues...................283
        Products.......................................283
        Norms 284
        Sum and Extreme Values............................284
        Indexing.......................................286
        Transpose and Upper/Lower Triangular Parts..............286
        Solving Linear Systems.............................287
        Matrix Row and Column Operations....................287
        Computing the Rank of a Matrix.......................288
        Symbolic Linear Algebra............................289
    Plotting of Scalar and Vector Fields.........................292
        Installation.....................................292
        Surface Plots....................................293
        Parameterized Curve...............................293
        Contour Lines...................................294
        The Gradient Vector Field...........................294
    Matplotlib.........................................296
        Surface Plots....................................296
        Contour Plots....................................297
        Vector Field Plots.................................299
    Mayavi...........................................299
        Surface Plots....................................300
        Contour Plots....................................303
        Vector Field Plots.................................303
        A 3D Scalar Field and Its Gradient Field..................304
        Animations.....................................306
    Summary..........................................307
        Chapter Topics...................................307
        Example: Animating a Function.......................308
    Exercises..........................................313
Dictionaries and Strings...................................333
    Dictionaries........................................333
        Making Dictionaries...............................334
        Dictionary Operations..............................334
        Example: Polynomials as Dictionaries...................336
        Dictionaries with Default Values and Ordering.............338
        Example: Storing File Data in Dictionaries................341
        Example: Storing File Data in Nested Dictionaries...........342
        Example: Reading and Plotting Data Recorded at Specific Dates..347
    Strings............................................351
        Common Operations on Strings........................351
        Example: Reading Pairs of Numbers....................355
        Example: Reading Coordinates........................358
    Reading Data from Web Pages............................360
        About Web Pages.................................361
        How to Access Web Pages in Programs..................362
        Example: Reading Pure Text Files......................363
        Example: Extracting Data from HTML...................365
        Handling Non-English Text..........................366
    Reading and Writing Spreadsheet Files......................369
        CSV Files......................................369
        Reading CSV Files................................370
        Processing Spreadsheet Data.........................371
        Writing CSV Files................................372
        Representing Number Cells with Numerical Python Arrays 373
        Using More High-Level Numerical Python Functionality . 374
    Examples from Analyzing DNA...........................375
        Computing Frequencies.............................375
        Analyzing the Frequency Matrix.......................382
        Finding Base Frequencies...........................385
        Translating Genes into Proteins........................388
        Some Humans Can Drink Milk, While Others Cannot.........393
    Making Code that is Compatible with Python 2 and 3.............394
        More Basic Differences Between Python 2 and 3............394
        Turning Python 2 Code into Python 3 Code................396
    Summary..........................................396
        Chapter Topics..................................396
        Example: A File Database...........................398
    Exercises..........................................402
Introduction to Classes....................................409
    Simple Function Classes................................409
        Challenge: Functions with Parameters...................410
        Representing a Function as a Class.....................412
        The Self Variable.................................417
        Another Function Class Example.......................419
        Alternative Function Class Implementations...............420
        Making Classes Without the Class Construct...............422
        Closures.......................................424
    More Examples on Classes..............................426
        Bank Accounts..................................426
        Phone Book....................................428
        A Circle.......................................430
    Special Methods.....................................432
        The Call Special Method............................432
        Example: Automagic Differentiation....................433
        Example: Automagic Integration.......................438
        Turning an Instance into a String.......................440
        Example: Phone Book with Special Methods...............441
        Adding Objects..................................443
        Example: Class for Polynomials.......................443
        Arithmetic Operations and Other Special Methods...........449
        Special Methods for String Conversion...................449
    Example: Class for Vectors in the Plane......................451
        Some Mathematical Operations on Vectors................451
        Implementation..................................452
        Usage 454
    Example: Class for Complex Numbers.......................455
        Implementation..................................455
        Illegal Operations.................................457
        Mixing Complex and Real Numbers....................457
        Dynamic, Static, Strong, Weak, and Duck Typing............459
        Special Methods for โ€œRightโ€ Operands...................460
        Inspecting Instances...............................461
    Static Methods and Attributes.............................463
    Summary..........................................464
        Chapter Topics...................................464
        Example: Interval Arithmetic.........................466
    Exercises..........................................470
Random Numbers and Simple Games.........................489
    Drawing Random Numbers..............................489
        The Seed......................................490
        Uniformly Distributed Random Numbers.................491
        Visualizing the Distribution..........................492
        Vectorized Drawing of Random Numbers.................493
        Computing the Mean and Standard Deviation..............494
        The Gaussian or Normal Distribution....................496
    Drawing Integers.....................................497
        Random Integer Functions...........................498
        Example: Throwing a Die...........................498
        Drawing a Random Element from a List..................501
        Example: Drawing Cards from a Deck...................502
        Example: Class Implementation of a Deck................504
    Computing Probabilities................................507
        Principles of Monte Carlo Simulation....................507
        Example: Throwing Dice............................508
        Example: Drawing Balls from a Hat.....................511
        Random Mutations of Genes..........................513
        Example: Policies for Limiting Population Growth...........519
    Simple Games.......................................522
        Guessing a Number...............................522
        Rolling Two Dice.................................523
    Monte Carlo Integration................................526
        Derivation of Monte Carlo Integration...................526
        Implementation of Standard Monte Carlo Integration.........528
        Area Computing by Throwing Random Points..............531
    Random Walk in One Space Dimension......................534
        Basic Implementation..............................534
        Visualization....................................535
        Random Walk as a Difference Equation..................536
        Computing Statistics of the Particle Positions..............536
        Vectorized Implementation..........................537
    Random Walk in Two Space Dimensions.....................539
        Basic Implementation..............................539
        Vectorized Implementation..........................541
    Summary..........................................542
        Chapter Topics..................................542
        Example: Random Growth...........................544
    Exercises..........................................549
Object-Oriented Programming..............................567
    Inheritance and Class Hierarchies..........................567
        A Class for Straight Lines...........................568
        A First Try on a Class for Parabolas.....................569
        A Class for Parabolas Using Inheritance..................569
        Checking the Class Type............................571
        Attribute vs Inheritance: has-a vs is-a Relationship...........572
        Superclass for Defining an Interface.....................574
    Class Hierarchy for Numerical Differentiation..................576
        Classes for Differentiation...........................577
        Verification.....................................579
        A flexible Main Program............................581
        Extensions.....................................582
        Alternative Implementation via Functions.................585
        Alternative Implementation via Functional Programming . 586
        Alternative Implementation via a Single Class..............587
    Class Hierarchy for Numerical Integration....................589
        Numerical Integration Methods........................589
        Classes for Integration..............................590
        Verification.....................................594
        Using the Class Hierarchy...........................595
        About Object-Oriented Programming....................597
    Class Hierarchy for Making Drawings.......................599
        Using the Object Collection..........................600
        Example of Classes for Geometric Objects................609
        Adding Functionality via Recursion.....................614
        Scaling, Translating, and Rotating a Figure................618
    Classes for DNA Analysis...............................620
        Class for Regions.................................620
        Class for Genes..................................621
        Subclasses......................................626
    Summary..........................................627
        Chapter Topics...................................627
        Example: Input Data Reader..........................629
    Exercises..........................................635

Sequences and Difference Equations..........................645
    Mathematical Models Based on Difference Equations.............646
        Interest Rates....................................647
        The Factorial as a Difference Equation...................649
        Fibonacci Numbers................................650
        Growth of a Population.............................651
        Logistic Growth..................................652
        Payback of a Loan................................654
        The Integral as a Difference Equation....................655
        Taylor Series as a Difference Equation...................657
        Making a Living from a Fortune.......................658
        Newtonโ€™s Method.................................659
        The Inverse of a Function............................663
    Programming with Sound...............................665
        Writing Sound to File..............................666
        Reading Sound from File............................667
        Playing Many Notes...............................667
        Music of a Sequence...............................668
    Exercises..........................................671
Introduction to Discrete Calculus.............................683
    Discrete Functions....................................683
        The Sine Function................................684
        Interpolation....................................685
        Evaluating the Approximation........................686
        Generalization...................................687
    Differentiation Becomes Finite Differences....................688
        Differentiating the Sine Function.......................689
        Differences on a Mesh..............................690
        Generalization...................................692
    Integration Becomes Summation...........................693
        Dividing into Subintervals...........................693
        Integration on Subintervals...........................695
        Adding the Subintervals.............................696
        Generalization...................................697
    Taylor Series........................................699
        Approximating Functions Close to One Point...............699
        Approximating the Exponential Function.................699
        More Accurate Expansions...........................700
        Accuracy of the Approximation.......................702
        Derivatives Revisited..............................704
        More Accurate Difference Approximations................705
        Second-Order Derivatives...........................707
    Exercises..........................................709
Introduction to differential equations..........................715
    The simplest case.....................................716
    Exponential Growth...................................718
    Logistic Growth......................................723
    A Simple Pendulum...................................724
    A Model for the Spreading of a Disease......................727
    Exercises..........................................729
A Complete Differential Equation Project.......................731
    About the Problem: Motion and Forces in Physics...............731
        The Physical Problem..............................731
        The Computational Algorithm........................733
        Derivation of the Mathematical Model...................734
        Derivation of the Algorithm..........................736
    Program Development and Testing.........................737
        Implementation..................................737
        Callback Functionality.............................740
        Making a Module.................................742
        Verification.....................................743
    Visualization........................................746
        Simultaneous Computation and Plotting..................746
        Some Applications................................748
        Remark on Choosing L1t............................749
        Comparing Several Quantities in Subplots.................750
        Comparing Approximate and Exact Solutions..............751
        Evolution of the Error as L1t Decreases..................752
    Exercises..........................................755
Programming of Differential Equations........................757
    Scalar Ordinary Differential Equations.......................758
        Examples on Right-Hand-Side Functions.................758
        The Forward Euler Scheme..........................759
        Function Implementation............................760
        Verifying the Implementation.........................761
        From Discrete to Continuous Solution...................763
        Switching Numerical Method.........................764
        Class Implementation..............................764
        Logistic Growth via a Function-Based Approach............769
        Logistic Growth via a Class-Based Approach..............769
    Systems of Ordinary Differential Equations...................772
        Mathematical Problem.............................773
        Example of a System of ODEs........................774
        Function Implementation............................775
        Class Implementation..............................777
    The ODESolver Class Hierarchy...........................779

E.3.1 Numerical Methods . . . . . . . . . . . . . . . . . . . . . . . .

779

E.3.2 Construction of a Solver Hierarchy . . . . . . . . . . . . . . .

780

E.3.3 The Backward Euler Method . . . . . . . . . . . . . . . . . . .

783

E.3.4 Verification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

785

E.3.5 Example: Exponential Decay . . . . . . . . . . . . . . . . . . .

787

E.3.6 Example: The Logistic Equation with Problem and Solver

Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

789

E.3.7 Example: An Oscillating System . . . . . . . . . . . . . . . .

797

E.3.8 Application 4: The Trajectory of a Ball . . . . . . . . . . . .

799

E.3.9 Further Developments of ODESolver . . . . . . . . . . . . . .

801

E.4

Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

802

Debugging.............................................835
    Using a Debugger....................................835
    How to Debug.......................................838
        A Recipe for Program Writing and Debugging..............838
        Application of the Recipe............................841
        Getting Help from a Code Analyzer.....................853

G Migrating Python to Compiled Code . . . . . . . . . . . . . . . . . . . . .

857

G.1 Pure Python Code for Monte Carlo Simulation . . . . . . . . . . . .

857

G.1.1 The Computational Problem . . . . . . . . . . . . . . . . . . .

858

G.1.2 A Scalar Python Implementation . . . . . . . . . . . . . . . .

858

G.1.3 A Vectorized Python Implementation . . . . . . . . . . . . . .

859

G.2 Migrating Scalar Python Code to Cython . . . . . . . . . . . . . . . .

860

G.2.1 A Plain Cython Implementation . . . . . . . . . . . . . . . . .

860

G.2.2 A Better Cython Implementation . . . . . . . . . . . . . . . .

863

G.3 Migrating Code to C . . . . . . . . . . . . . . . . . . . . . . . . . . . .

865

G.3.1 Writing a C Program . . . . . . . . . . . . . . . . . . . . . . . .

865

G.3.2 Migrating Loops to C Code via F2PY . . . . . . . . . . . . .

866

G.3.3 Migrating Loops to C Code via Cython . . . . . . . . . . . .

867

G.3.4 Comparing Efficiency . . . . . . . . . . . . . . . . . . . . . . .

868

H

Technical Topics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

871

H.1 Getting Access to Python . . . . . . . . . . . . . . . . . . . . . . . . .

871

H.1.1 Required Software . . . . . . . . . . . . . . . . . . . . . . . . .

871

H.1.2 Installing Software on Your Laptop: Mac OS X and

Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

872

H.1.3 Anaconda and Spyder . . . . . . . . . . . . . . . . . . . . . . .

873

H.1.4 VMWare Fusion Virtual Machine . . . . . . . . . . . . . . . .

874

H.1.5 Dual Boot on Windows . . . . . . . . . . . . . . . . . . . . . .

877

H.1.6 Vagrant Virtual Machine . . . . . . . . . . . . . . . . . . . . .

877

H.2 How to Write and Run a Python Program . . . . . . . . . . . . . . .

878

H.2.1 The Need for a Text Editor . . . . . . . . . . . . . . . . . . . .

878

H.2.2 Terminal Windows . . . . . . . . . . . . . . . . . . . . . . . . .

880

H.3 The SageMathCloud and Wakari Web Services . . . . . . . . . . . .

880

H.3.1 Basic Intro to SageMathCloud . . . . . . . . . . . . . . . . . .

880

H.3.2 Basic Intro to Wakari . . . . . . . . . . . . . . . . . . . . . . . .

881

H.3.3 Installing Your Own Python Packages...............881

Writing IPython Notebooks..............................882
    A Simple Program in the Notebook.....................882
    Mixing Text, Mathematics, Code, and Graphics.............882
Different Ways of Running Python Programs..................884
    Executing Python Programs in iPython...................884
    Executing Python Programs in Unix.....................884
    Executing Python Programs in Windows..................885
    Executing Python Programs in Mac OS X.................887
    Making a Complete Stand-Alone Executable...............887
Doing Operating System Tasks in Python.....................888
Variable Number of Function Arguments.....................891
    Variable Number of Positional Arguments................891
    Variable Number of Keyword Arguments.................894
Evaluating Program Efficiency............................896
    Making Time Measurements.........................896
    Profiling Python Programs...........................898
Software Testing.....................................899
    Requirements of the Test Function......................900
    Writing the Test Function; Precomputed Data..............900
    Writing the Test Function; Exact Numerical Solution.........901
    Testing of Function Robustness........................902
    Automatic Execution of Tests.........................904

References.............................................907

Index................................................909

List of Exercises

Exercise 1.1: Compute 1+1...................................42

Exercise 1.2: Write a Hello World program........................43

Exercise 1.3: Derive and compute a formula........................43

Exercise 1.4: Convert from meters to British length units...............43

Exercise 1.5: Compute the mass of various substances.................43

Exercise 1.6: Compute the growth of money in a bank.................43

Exercise 1.7: Find error(s) in a program...........................43

Exercise 1.8: Type in program text..............................43

Exercise 1.9: Type in programs and debug them.....................44

Exercise 1.10: Evaluate a Gaussian function........................45

Exercise 1.11: Compute the air resistance on a football.................45

Exercise 1.12: How to cook the perfect egg........................46

Exercise 1.13: Derive the trajectory of a ball.......................46

Exercise 1.14: Find errors in the coding of formulas...................47

Exercise 1.15: Explain why a program does not work..................47

Exercise 1.16: Find errors in Python statements.....................48

Exercise 1.17: Find errors in the coding of a formula..................48

Exercise 1.18: Find errors in a program...........................49

Exercise 2.1: Make a Fahrenheit-Celsius conversion table...............82

Exercise 2.2: Generate an approximate Fahrenheit-Celsius conversion table . 82 Exercise 2.3: Work with a list 82

Exercise 2.4: Generate odd numbers.............................82

Exercise 2.5: Compute the sum of the first n integers..................82

Exercise 2.6: Compute energy levels in an atom.....................82

Exercise 2.7: Generate equally spaced coordinates....................83

Exercise 2.8: Make a table of values from a formula..................83

Exercise 2.9: Store values from a formula in lists....................83

Exercise 2.10: Simulate operations on lists by hand...................84

Exercise 2.11: Compute a mathematical sum.......................84

Exercise 2.12: Replace a while loop by a for loop....................84

Exercise 2.13: Simulate a program by hand........................85

Exercise 2.14: Explore Python documentation......................85

Exercise 2.15: Index a nested list...............................85

Exercise 2.16: Store data in lists................................86

xxiii

Exercise 2.17: Store data in a nested list..........................86

Exercise 2.18: Values of boolean expressions.......................86

Exercise 2.19: Explore round-off errors from a large number of inverse

operations...................................87

Exercise 2.20: Explore what zero can be on a computer................87

Exercise 2.21: Compare two real numbers with a tolerance..............87

Exercise 2.22: Interpret a code.................................88

Exercise 2.23: Explore problems with inaccurate indentation.............88

Exercise 2.24: Explore punctuation in Python programs................89

Exercise 2.25: Investigate a for loop over a changing list...............89

Exercise 3.1: Implement a simple mathematical function...............127

Exercise 3.2: Implement a simple mathematical function with a parameter...127

Exercise 3.3: Explain how a program works.......................128

Exercise 3.4: Write a Fahrenheit-Celsius conversion functions...........128

Exercise 3.5: Write a test function for Exercise 3.4..................128

Exercise 3.6: Given a test function, write the function.................128

Exercise 3.7: Evaluate a sum and write a test function................129

Exercise 3.8: Write a function for solving ax2 bx c 0...........129

Exercise 3.9: Implement the sum function........................129

Exercise 3.10: Compute a polynomial via a product..................130

Exercise 3.11: Integrate a function by the Trapezoidal rule.............130

Exercise 3.12: Derive the general Midpoint integration rule.............131

Exercise 3.13: Make an adaptive Trapezoidal rule...................132

Exercise 3.14: Simulate a program by hand.......................133

Exercise 3.15: Debug a given test function........................134

Exercise 3.16: Compute the area of an arbitrary triangle...............134

Exercise 3.17: Compute the length of a path.......................135

Exercise 3.18: Approximate n................................135

Exercise 3.19: Compute the area of a polygon......................135

Exercise 3.20: Write functions................................136

Exercise 3.21: Approximate a function by a sum of sines..............136

Exercise 3.22: Implement a Gaussian function.....................137

Exercise 3.23: Wrap a formula in a function.......................137

Exercise 3.24: Write a function for numerical differentiation............137

Exercise 3.25: Implement the factorial function.....................137

Exercise 3.26: Compute velocity and acceleration from 1D position data....138

Exercise 3.27: Find the max and min values of a function..............138

Exercise 3.28: Find the max and min elements in a list................139

Exercise 3.29: Implement the Heaviside function....................139

Exercise 3.30: Implement a smoothed Heaviside function..............139

Exercise 3.31: Implement an indicator function.....................140

Exercise 3.32: Implement a piecewise constant function...............140

Exercise 3.33: Apply indicator functions.........................141

Exercise 3.34: Test your understanding of branching.................141

Exercise 3.35: Simulate nested loops by hand......................141

Exercise 3.36: Rewrite a mathematical function.....................142

Exercise 3.37: Make a table for approximations of cos x...............142

Exercise 3.38: Use None in keyword arguments....................143

Exercise 3.39: Write a sort function for a list of 4-tuples...............143

Exercise 3.40: Find prime numbers.............................145

Exercise 3.41: Find pairs of characters...........................145

Exercise 3.42: Count substrings...............................145

Exercise 3.43: Resolve a problem with a function...................145

Exercise 3.44: Determine the types of some objects..................146

Exercise 3.45: Find an error in a program.........................146

Exercise 4.1: Make an interactive program........................216

Exercise 4.2: Read a number from the command line.................216

Exercise 4.3: Read a number from a file..........................216

Exercise 4.4: Read and write several numbers from and to file...........217

Exercise 4.5: Use exceptions to handle wrong input..................217

Exercise 4.6: Read input from the keyboard.......................217

Exercise 4.7: Read input from the command line....................217

Exercise 4.8: Try MSWord or LibreOffice to write a program...........218

Exercise 4.9: Prompt the user for input to a formula..................218

Exercise 4.10: Read parameters in a formula from the command line.......218

Exercise 4.11: Use exceptions to handle wrong input.................218

Exercise 4.12: Test validity of input data.........................219

Exercise 4.13: Raise an exception in case of wrong input..............219

Exercise 4.14: Evaluate a formula for data in a file...................219

Exercise 4.15: Write a function given its test function.................219

Exercise 4.16: Compute the distance it takes to stop a car..............220

Exercise 4.17: Look up calendar functionality......................221

Exercise 4.18: Use the StringFunction tool........................221

Exercise 4.19: Why we test for specific exception types...............221

Exercise 4.20: Make a complete module.........................221

Exercise 4.21: Organize a previous program as a module..............222

Exercise 4.22: Read options and values from the command line..........222

Exercise 4.23: Check if mathematical identities hold.................222

Exercise 4.24: Compute probabilities with the binomial distribution.......224

Exercise 4.25: Compute probabilities with the Poisson distribution........224

Exercise 5.1: Fill lists with function values........................313

Exercise 5.2: Fill arrays; loop version...........................313

Exercise 5.3: Fill arrays; vectorized version.......................313

Exercise 5.4: Plot a function.................................313

Exercise 5.5: Apply a function to a vector........................313

Exercise 5.6: Simulate by hand a vectorized expression...............313

Exercise 5.7: Demonstrate array slicing..........................314

Exercise 5.8: Replace list operations by array computing...............314

Exercise 5.9: Plot a formula..................................314

Exercise 5.10: Plot a formula for several parameters..................314

Exercise 5.11: Specify the extent of the axes in a plot.................314

Exercise 5.12: Plot exact and inexact Fahrenheit-Celsius conversion formulas 314

Exercise 5.13: Plot the trajectory of a ball.........................314

Exercise 5.14: Plot data in a two-column file......................315

Exercise 5.15: Write function data to file.........................315

Exercise 5.16: Plot data from a file.............................316

Exercise 5.17: Write table to file...............................316

Exercise 5.18: Fit a polynomial to data points......................317

Exercise 5.19: Fit a polynomial to experimental data.................318

Exercise 5.20: Read acceleration data and find velocities..............318

Exercise 5.21: Read acceleration data and plot velocities...............319

Exercise 5.22: Plot a tripโ€™s path and velocity from GPS coordinates.......319

Exercise 5.23: Vectorize the Midpoint rule for integration..............320

Exercise 5.24: Vectorize a function for computing the area of a polygon....320

Exercise 5.25: Implement Lagrangeโ€™s interpolation formula.............321

Exercise 5.26: Plot Lagrangeโ€™s interpolating polynomial...............321

Exercise 5.27: Investigate the behavior of Lagrangeโ€™s interpolating polynomials 322 Exercise 5.28: Plot a wave packet 322

Exercise 5.29: Judge a plot..................................322

Exercise 5.30: Plot the viscosity of water.........................323

Exercise 5.31: Explore a complicated function graphically.............323

Exercise 5.32: Plot Taylor polynomial approximations to sin x...........323

Exercise 5.33: Animate a wave packet...........................324

Exercise 5.34: Animate a smoothed Heaviside function...............324

Exercise 5.35: Animate two-scale temperature variations..............324

Exercise 5.36: Use non-uniformly distributed coordinates for visualization...325

Exercise 5.37: Animate a sequence of approximations to n.............325

Exercise 5.38: Animate a planetโ€™s orbit..........................325

Exercise 5.39: Animate the evolution of Taylor polynomials............326

Exercise 5.40: Plot the velocity profile for pipeflow..................327

Exercise 5.41: Plot sum-of-sines approximations to a function...........327

Exercise 5.42: Animate the evolution of a sum-of-sine approximation to

a function...................................327

Exercise 5.43: Plot functions from the command line.................328

Exercise 5.44: Improve command-line input.......................328

Exercise 5.45: Demonstrate energy concepts from physics..............328

Exercise 5.46: Plot a w-like function............................328

Exercise 5.47: Plot a piecewise constant function....................329

Exercise 5.48: Vectorize a piecewise constant function................329

Exercise 5.49: Visualize approximations in the Midpoint integration rule....329

Exercise 5.50: Visualize approximations in the Trapezoidal integration rule . 330 Exercise 5.51: Experience overflow in a function 330

Exercise 5.52: Apply a function to a rank 2 array....................331

Exercise 5.53: Explain why array computations fail..................331

Exercise 5.54: Verify linear algebra results........................331

Exercise 6.1: Make a dictionary from a table.......................402

Exercise 6.2: Explore syntax differences: lists vs. dicts................402

Exercise 6.3: Use string operations to improve a program..............403

Exercise 6.4: Interpret output from a program......................403

Exercise 6.5: Make a dictionary...............................403

Exercise 6.6: Make a nested dictionary..........................404

Exercise 6.7: Make a nested dictionary from a file...................404

Exercise 6.8: Make a nested dictionary from a file...................404

Exercise 6.9: Compute the area of a triangle.......................405

Exercise 6.10: Compare data structures for polynomials...............405

Exercise 6.11: Compute the derivative of a polynomial................405

Exercise 6.12: Specify functions on the command line................405

Exercise 6.13: Interpret function specifications.....................406

Exercise 6.14: Compare average temperatures in cities................407

Exercise 6.15: Generate an HTML report with figures................407

Exercise 6.16: Allow different types for a function argument............408

Exercise 6.17: Make a function more robust.......................408

Exercise 6.18: Find proportion of bases inside/outside exons............408

Exercise 7.1: Make a function class.............................470

Exercise 7.2: Add a data attribute to a class.......................471

Exercise 7.3: Add functionality to a class.........................471

Exercise 7.4: Make classes for a rectangle and a triangle...............471

Exercise 7.5: Make a class for quadratic functions...................472

Exercise 7.6: Make a class for straight lines.......................472

Exercise 7.7: Flexible handling of function arguments................472

Exercise 7.8: Wrap functions in a class..........................473

Exercise 7.9: Flexible handling of function arguments................473

Exercise 7.10: Deduce a class implementation......................474

Exercise 7.11: Implement special methods in a class.................474

Exercise 7.12: Make a class for summation of series..................474

Exercise 7.13: Apply a numerical differentiation class................475

Exercise 7.14: Implement an addition operator.....................475

Exercise 7.15: Implement in-place += and -= operators................476

Exercise 7.16: Implement a class for numerical differentiation...........476

Exercise 7.17: Examine a program.............................477

Exercise 7.18: Modify a class for numerical differentiation.............477

Exercise 7.19: Make a class for the Heaviside function................478

Exercise 7.20: Make a class for the indicator function.................478

Exercise 7.21: Make a class for piecewise constant functions............479

Exercise 7.22: Speed up repeated integral calculations................479

Exercise 7.23: Apply a class for polynomials......................480

Exercise 7.24: Find a bug in a class for polynomials..................480

Exercise 7.25: Implement subtraction of polynomials.................480

Exercise 7.26: Test the functionality of pretty print of polynomials........480

Exercise 7.27: Vectorize a class for polynomials....................481

Exercise 7.28: Use a dict to hold polynomial coefficients..............481

Exercise 7.29: Extend class Vec2D to work with lists/tuples............482

Exercise 7.30: Extend class Vec2D to 3D vectors...................483

Exercise 7.31: Use NumPy arrays in class Vec2D...................483

Exercise 7.32: Impreciseness of interval arithmetics..................484

Exercise 7.33: Make classes for students and courses.................484

Exercise 7.34: Find local and global extrema of a function..............484

Exercise 7.35: Find the optimal production for a company..............485

Exercise 8.1: Flip a coin times................................549

Exercise 8.2: Compute a probability............................550

Exercise 8.3: Choose random colors............................550

Exercise 8.4: Draw balls from a hat.............................550

Exercise 8.5: Computing probabilities of rolling dice.................550

Exercise 8.6: Estimate the probability in a dice game.................550

Exercise 8.7: Compute the probability of hands of cards...............551

Exercise 8.8: Decide if a dice game is fair........................551

Exercise 8.9: Adjust a game to make it fair........................551

Exercise 8.10: Make a test function for Monte Carlo simulation..........551

Exercise 8.11: Generalize a game..............................551

Exercise 8.12: Compare two playing strategies.....................552

Exercise 8.13: Investigate strategies in a game.....................552

Exercise 8.14: Investigate the winning chances of some games...........552

Exercise 8.15: Compute probabilities of throwing two dice.............553

Exercise 8.16: Vectorize flipping a coin..........................553

Exercise 8.17: Vectorize a probablility computation..................553

Exercise 8.18: Throw dice and compute a small probability.............553

Exercise 8.19: Is democracy reliable as a decision maker?..............553

Exercise 8.20: Difference equation for random numbers...............555

Exercise 8.21: Make a class for drawing balls from a hat...............555

Exercise 8.22: Independent versus dependent random numbers..........555

Exercise 8.23: Compute the probability of flipping a coin..............556

Exercise 8.24: Simulate binomial experiments......................557

Exercise 8.25: Simulate a poker game...........................557

Exercise 8.26: Estimate growth in a simulation model................557

Exercise 8.27: Investigate guessing strategies......................557

Exercise 8.28: Vectorize a dice game...........................558

Exercise 8.29: Compute n by a Monte Carlo method.................558

Exercise 8.30: Compute n by a Monte Carlo method.................558

Exercise 8.31: Compute n by a random sum.......................558

Exercise 8.32: 1D random walk with drift........................558

Exercise 8.33: 1D random walk until a point is hit...................558

Exercise 8.34: Simulate making a fortune from gaming................559

Exercise 8.35: Simulate pollen movements as a 2D random walk.........559

Exercise 8.36: Make classes for 2D random walk....................559

Exercise 8.37: 2D random walk with walls; scalar version..............560

Exercise 8.38: 2D random walk with walls; vectorized version...........560

Exercise 8.39: Simulate mixing of gas molecules....................561

Exercise 8.40: Simulate slow mixing of gas molecules................561

Exercise 8.41: Guess beer brands..............................561

Exercise 8.42: Simulate stock prices............................562

Exercise 8.43: Compute with option prices in finance.................562

Exercise 8.44: Differentiate noise measurements....................563

Exercise 8.45: Differentiate noisy signals.........................564

Exercise 8.46: Model noise in a time signal.......................565

Exercise 8.47: Speed up Markov chain mutation....................566

Exercise 9.1: Demonstrate the magic of inheritance..................635

Exercise 9.2: Make polynomial subclasses of parabolas...............635

Exercise 9.3: Implement a class for a function as a subclass.............636

Exercise 9.4: Create an alternative class hierarchy for polynomials........636

Exercise 9.5: Make circle a subclass of an ellipse....................636

Exercise 9.6: Make super- and subclass for a point...................636

Exercise 9.7: Modify a function class by subclassing.................637

Exercise 9.8: Explore the accuracy of difference formulas..............637

Exercise 9.9: Implement a subclass.............................637

Exercise 9.10: Make classes for numerical differentiation..............638

Exercise 9.11: Implement a new subclass for differentiation............638

Exercise 9.12: Understand if a class can be used recursively............638

Exercise 9.13: Represent people by a class hierarchy.................638

Exercise 9.14: Add a new class in a class hierarchy..................639

Exercise 9.15: Compute convergence rates of numerical integration methods . 640 Exercise 9.16: Add common functionality in a class hierarchy 641

Exercise 9.17: Make a class hierarchy for root finding................641

Exercise 9.18: Make a calculus calculator class.....................641

Exercise 9.19: Compute inverse functions........................642

Exercise 9.20: Make line drawing of a person; program...............643

Exercise 9.21: Make line drawing of a person; class..................643

Exercise 9.22: Animate a person with waving hands..................643

Exercise A.1: Determine the limit of a sequence....................671

Exercise A.2: Compute n via sequences..........................672

Exercise A.3: Reduce memory usage of difference equations............672

Exercise A.4: Compute the development of a loan...................672

Exercise A.5: Solve a system of difference equations.................672

Exercise A.6: Modify a model for fortune development...............672

Exercise A.7: Change index in a difference equation.................673

Exercise A.8: Construct time points from dates.....................673

Exercise A.9: Visualize the convergence of Newtonโ€™s method...........674

Exercise A.10: Implement the secant method......................674

Exercise A.11: Test different methods for root finding................675

Exercise A.12: Make difference equations for the Midpoint rule..........675

Exercise A.13: Compute the arc length of a curve...................675

Exercise A.14: Find difference equations for computing sin x............676

Exercise A.15: Find difference equations for computing cos x...........677

Exercise A.16: Make a guitar-like sound.........................677

Exercise A.17: Damp the bass in a sound file......................677

Exercise A.18: Damp the treble in a sound file.....................678

Exercise A.19: Demonstrate oscillatory solutions of the logistic equation....678

Exercise A.20: Automate computer experiments....................679

Exercise A.21: Generate an HTML report........................679

Exercise A.22: Use a class to archive and report experiments............680

Exercise A.23: Explore logistic growth interactively.................681

Exercise A.24: Simulate the price of wheat........................681

Exercise B.1: Interpolate a discrete function.......................709

Exercise B.2: Study a function for different parameter values............710

Exercise B.3: Study a function and its derivative....................710

Exercise B.4: Use the Trapezoidal method........................711

Exercise B.5: Compute a sequence of integrals.....................711

Exercise B.6: Use the Trapezoidal method........................712

Exercise B.7: Compute trigonometric integrals.....................712

Exercise B.8: Plot functions and their derivatives....................713

Exercise B.9: Use the Trapezoidal method........................714

Exercise C.1: Solve a nonhomogeneous linear ODE..................729

Exercise C.2: Solve a nonlinear ODE...........................729

Exercise C.3: Solve an ODE for y.x/............................729

Exercise C.4: Experience instability of an ODE.....................730

Exercise C.5: Solve an ODE with time-varying growth................730

Exercise D.1: Model sudden movements of the plate.................755

Exercise D.2: Write a callback function..........................756

Exercise D.3: Improve input to the simulation program................756

Exercise E.1: Solve a simple ODE with function-based code............802

Exercise E.2: Solve a simple ODE with class-based code..............802

Exercise E.3: Solve a simple ODE with the ODEsolver hierarchy.........802

Exercise E.4: Solve an ODE specified on the command line............802

Exercise E.5: Implement a numerical method for ODEs...............803

Exercise E.6: Solve an ODE for emptying a tank....................803

Exercise E.7: Solve an ODE for the arc length.....................804

Exercise E.8: Simulate a falling or rising body in a fluid...............804

Exercise E.9: Verify the limit of a solution as time grows..............805

Exercise E.10: Scale the logistic equation.........................806

Exercise E.11: Compute logistic growth with time-varying carrying capacity . 806 Exercise E.12: Solve an ODE until constant solution 807

Exercise E.13: Use a problem class to hold data about an ODE...........807

Exercise E.14: Derive and solve a scaled ODE problem...............808

Exercise E.15: Clean up a file to make it a module...................809

Exercise E.16: Simulate radioactive decay........................809

Exercise E.17: Compute inverse functions by solving an ODE...........809

Exercise E.18: Make a class for computing inverse functions............810

Exercise E.19: Add functionality to a class........................810

Exercise E.20: Compute inverse functions by interpolation.............811

Exercise E.21: Code the 4th-order Runge-Kutta method; function.........811

Exercise E.22: Code the 4th-order Runge-Kutta method; class...........811

Exercise E.23: Compare ODE methods..........................811

Exercise E.24: Code a test function for systems of ODEs..............812

Exercise E.25: Code Heunโ€™s method for ODE systems; function..........812

Exercise E.26: Code Heunโ€™s method for ODE systems; class............812

Exercise E.27: Implement and test the Leapfrog method...............812

Exercise E.28: Implement and test an Adams-Bashforth method..........813

Exercise E.29: Solve two coupled ODEs for radioactive decay...........813

Exercise E.30: Implement a 2nd-order Runge-Kutta method; function......813

Exercise E.31: Implement a 2nd-order Runge-Kutta method; class........813

Exercise E.32: Code the iterated midpoint method; function............814

Exercise E.33: Code the iterated midpoint method; class...............814

Exercise E.34: Make a subclass for the iterated midpoint method.........815

Exercise E.35: Compare the accuracy of various methods for ODEs.......815

Exercise E.36: Animate how various methods for ODEs converge........815

Exercise E.37: Study convergence of numerical methods for ODEs........815

Exercise E.38: Find a bodyโ€™s position along with its velocity............816

Exercise E.39: Add the effect of air resistance on a ball................816

Exercise E.40: Solve an ODE system for an electric circuit.............817

Exercise E.41: Simulate the spreading of a disease by a SIR model........817

Exercise E.42: Introduce problem and solver classes in the SIR model......819

Exercise E.43: Introduce vaccination in a SIR model.................820

Exercise E.44: Introduce a vaccination campaign in a SIR model.........820

Exercise E.45: Find an optimal vaccination period...................821

Exercise E.46: Simulate human-zombie interaction..................821

Exercise E.47: Simulate a zombie movie.........................823

Exercise E.48: Simulate a war on zombies........................824

Exercise E.49: Explore predator-prey population interactions............824

Exercise E.50: Formulate a 2nd-order ODE as a system...............825

imageExercise E.51: Solve u u 0...............................826

Exercise E.52: Make a tool for analyzing oscillatory solutions...........826

Exercise E.53: Implement problem, solver, and visualizer classes.........827

Exercise E.54: Use classes for flexible choices of models..............831

Exercise E.55: Apply software for oscillating systems................831

Exercise E.56: Model the economy of fishing......................832


๐Ÿ“œ SIMILAR VOLUMES


Introduction to Scientific Programming W
โœ Joakim Sundnes ๐Ÿ“‚ Library ๐Ÿ“… 2020 ๐Ÿ› Springer-Nature New York Inc ๐ŸŒ English

<p>This open access book offers an initial introduction to programming for scientific and computational applications using the Python programming language. The presentation style is compact and example-based, making it suitable for students and researchers with little or no prior experience in progr

Introduction to Scientific Programming w
โœ Joakim Sundnes ๐Ÿ“‚ Library ๐Ÿ“… 2020 ๐Ÿ› Springer International Publishing;Springer ๐ŸŒ English

<p><p>This open access book offers an initial introduction to programming for scientific and computational applications using the Python programming language. The presentation style is compact and example-based, making it suitable for students and researchers with little or no prior experience in pr

Introduction to Programming with Python
โœ Vivian Bailey ๐Ÿ“‚ Library ๐Ÿ“… 2015 ๐Ÿ› Software Engineering Pub Co ๐ŸŒ English

<h2>Make a Great Living and Create Exciting Software Applications - Become a Python Programmer Today! </h2> <br /> <br /><b>Why should you learn the Python programming language?</b> <br /> <br />Python is simple, easy-to-learn, and very powerful. Many programmers make top dollar with Python - it

Introduction to Programming with Python
โœ Vivian Bailey ๐Ÿ“‚ Library ๐Ÿ“… 2015 ๐Ÿ› Software Engineering Publishing Co ๐ŸŒ English

<h2>Make a Great Living and Create Exciting Software Applications - Become a Python Programmer Today! </h2> <br /> <br /><b>Why should you learn the Python programming language?</b> <br /> <br />Python is simple, easy-to-learn, and very powerful. Many programmers make top dollar with Python - it

Introduction to Computer Programming wit
โœ Harris Wang ๐Ÿ“‚ Library ๐Ÿ“… 2023 ๐Ÿ› AU Press, Athabasca University ๐ŸŒ English

This introduction to computer programming with Python begins with some of the basics of computing and programming before diving into the fundamental elements and building blocks of computer programs in Python language. From the installation of Python, Python interactive programming, and integrated d