Python for Computational Science and Engineering
Introduction to
Python for Computational Science and Engineering
(A beginner's guide)
Hans Fangohr Faculty of Engineering and the Environment
University of Southampton September 7, 2015
2
Contents
1 Introduction
9
1.1 Computational Modelling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.1.2 Computational Modelling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.1.3 Programming to support computational modelling . . . . . . . . . . . . . . . . 10
1.2 Why Python for scientific computing? . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2.1 Optimisation strategies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.2.2 Get it right first, then make it fast . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.2.3 Prototyping in Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.3 Literature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.3.1 Recorded video lectures on Python for beginners . . . . . . . . . . . . . . . . . 13
1.3.2 Python tutor mailing list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.4 Python version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.5 This document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.6 Your feedback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2 A powerful calculator
17
2.1 Python prompt and Read-Eval-Print Loop (REPL) . . . . . . . . . . . . . . . . . . . . 17
2.2 Calculator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.3 Integer division . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.3.1 How to avoid integer division . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.3.2 Why should I care about this division problem? . . . . . . . . . . . . . . . . . . 19
2.4 Mathematical functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.5 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.5.1 Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.6 Impossible equations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.6.1 The += notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3 Data Types and Data Structures
25
3.1 What type is it? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.2 Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.2.1 Integers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.2.2 Long integers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.2.3 Floating Point numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.2.4 Complex numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.2.5 Functions applicable to all types of numbers . . . . . . . . . . . . . . . . . . . . 27
3.3 Sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.3.1 Sequence type 1: String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.3.2 Sequence type 2: List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.3.3 Sequence type 3: Tuples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3
4
CONTENTS
3.3.4 Indexing sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.3.5 Slicing sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.3.6 Dictionaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.4 Passing arguments to functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.4.1 Call by value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.4.2 Call by reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.4.3 Argument passing in Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.4.4 Performance considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.4.5 Inadvertent modification of data . . . . . . . . . . . . . . . . . . . . . . . . . . 41 3.4.6 Copying objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 3.5 Equality and Identity/Sameness . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 3.5.1 Equality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 3.5.2 Identity / Sameness . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.5.3 Example: Equality and identity . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4 Introspection
45
4.1 dir() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.1.1 Magic names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.2 type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.3 isinstance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.4 help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.5 Docstrings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5 Input and Output
51
5.1 Printing to standard output (normally the screen) . . . . . . . . . . . . . . . . . . . . 51
5.1.1 Simple print (not compatible with Python 3.x) . . . . . . . . . . . . . . . . . . 51
5.1.2 Formatted printing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.1.3 "str" and " str " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.1.4 "repr" and " repr " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.1.5 Changes from Python 2 to Python 3: print . . . . . . . . . . . . . . . . . . . . 54
5.1.6 Changes from Python 2 to Python 3: formatting of strings . . . . . . . . . . . 54
5.2 Reading and writing files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.2.1 File reading examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
6 Control Flow
59
6.1 Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
6.1.1 Conditionals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
6.2 If-then-else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
6.3 For loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
6.4 While loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
6.5 Relational operators (comparisons) in if and while statements . . . . . . . . . . . . . 62
6.6 Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
6.6.1 Raising Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.6.2 Creating our own exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
6.6.3 LBYL vs EAFP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
7 Functions and modules
67
7.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.2 Using functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.3 Defining functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
7.4 Default values and optional parameters . . . . . . . . . . . . . . . . . . . . . . . . . . 70
CONTENTS
5
7.5 Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 7.5.1 Importing modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 7.5.2 Creating modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 7.5.3 Use of name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 7.5.4 Example 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 7.5.5 Example 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
8 Functional tools
77
8.1 Anonymous functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
8.2 Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
8.3 Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
8.4 List comprehension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
8.5 Reduce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
8.6 Why not just use for-loops? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
8.7 Speed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
9 Common tasks
85
9.1 Many ways to compute a series . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
9.2 Sorting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
10 From Matlab to Python
91
10.1 Important commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
10.1.1 The for-loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
10.1.2 The if-then statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
10.1.3 Indexing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
10.1.4 Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
11 Python shells
93
11.1 IDLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
11.2 Python (command line) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
11.3 Interactive Python (IPython) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
11.3.1 IPython console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
11.3.2 IPython Notebook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
11.4 Spyder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
11.5 Editors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
12 Symbolic computation
97
12.1 SymPy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
12.1.1 Symbols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
12.1.2 isympy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
12.1.3 Numeric types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
12.1.4 Differentiation and Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
12.1.5 Ordinary differential equations . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
12.1.6 Series expansions and plotting . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
12.1.7 Linear equations and matrix inversion . . . . . . . . . . . . . . . . . . . . . . . 104
12.1.8 Non linear equations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
12.1.9 Output: LATEX interface and pretty-printing . . . . . . . . . . . . . . . . . . . . 107 12.1.10 Automatic generation of C code . . . . . . . . . . . . . . . . . . . . . . . . . . 108
12.2 Related tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
................
................
In order to avoid copyright disputes, this page is only a partial summary.
To fulfill the demand for quickly locating and searching documents.
It is intelligent file search solution for home and business.
Related download
- making games with python pygame
- object oriented programming c start
- métodos mágicos en python 3 pycon
- about the tutorial rxjs ggplot2 python data
- python for computational science and engineering
- supercharged python take your code to the next level
- learning the pythonic way
- introductionandmotivation github pages
- wait ipython can do that europython 2019
- beginning programming with python download free pdf
Related searches
- science and technology essays
- all about science and technology
- science and nature magazine articles
- philosophy of science and technology
- importance of science and technology
- science and technology essay topics
- cross sales and engineering company
- science and technology and ethics
- materials science and engineering salary
- roman architecture and engineering facts
- science and sensory for toddlers
- management science and engineering phd