Upload
vunhu
View
223
Download
0
Embed Size (px)
Citation preview
Computational Programming with PythonLecture 1: First steps - A bit of everything.
Numerical Analysis, Lund UniversityLecturer: Claus Führer, Alexandros Sopasakis
2017
Numerical Analysis, Lund University, 2017 1
Why Python?
Python is. . .I Free and open sourceI It is a scripting language - an interpreted not a compiled languageI It is object oriented with modern exception handling, dynamic
typing etc.I It has plenty of libraries among others the scientific ones: linear
algebra; visualisation tools: plotting, image analysis; differentialequations solving; symbolic computations; statistics ; etc.
I It has possible usages: Scientific computing, scripting, web sites,text parsing, data mining, ...
Numerical Analysis, Lund University, 2017 2
Premisses
I We work with a Python version ≥ 3.0.I We use an IPython shellI We use the work environment SpyderI We work (later) with the IPython notebook.I We start our programs with the line
extendedcharsextendedcharsextendedcharsextendedcharsextendedchars extendedchars extendedcharsfrom scipy import *
extendedcharsextendedchars
Numerical Analysis, Lund University, 2017 3
Course Book
Scientific Computing with Python 3Claus Führer, Jan Erik Solem, Olivier VerdierDecember 2016
www.packtpub.com/
Numerical Analysis, Lund University, 2017 4
Examples
Python may be used in interactive mode(executed in an IPython shell)
extendedcharsextendedcharsextendedcharsextendedcharsextendedchars extendedchars extendedcharsIn [2]: x = 3extendedcharsextendedcharsextendedchars extendedchars extendedcharsIn [3]: y = 5extendedcharsextendedcharsextendedchars extendedchars extendedcharsIn [4]: print(x + y)extendedcharsextendedcharsextendedchars extendedchars extendedchars8
extendedcharsextendedchars
Note:extendedcharsextendedchars
extendedcharsextendedcharsextendedchars extendedchars extendedcharsIn [2]:extendedcharsextendedchars
is the prompt string of the IPython shell. It counts thestatements. In the more basic Python shell the prompt string is>>>.
Numerical Analysis, Lund University, 2017 5
Examples: Linear Algebra
Let us solve (1 23 4
)· x =
(21
)
extendedcharsextendedcharsextendedcharsextendedcharsextendedchars extendedchars extendedcharsIn [5]: from scipy. linalg import solveextendedcharsextendedcharsextendedchars extendedchars extendedcharsIn [6]: M = array ([[1., 2.],extendedcharsextendedcharsextendedchars extendedchars extendedchars[3., 4.]])extendedcharsextendedcharsextendedchars extendedchars extendedcharsIn [7]: V = array ([2., 1.])extendedcharsextendedcharsextendedchars extendedchars extendedcharsIn [8]: x = solve(M, V)extendedcharsextendedcharsextendedchars extendedchars extendedcharsIn [9]: print(x)extendedcharsextendedcharsextendedchars extendedchars extendedchars[-3. 2.5]
extendedcharsextendedchars
Note: A line can be continued on the next line without anycontinuation symbol as long as parentheses or brackets are notclosed.
Numerical Analysis, Lund University, 2017 6
More examples
Computing eiπ and 2100:extendedcharsextendedchars
extendedcharsextendedcharsextendedchars extendedchars extendedcharsIn [10]: print(exp(1j*pi)) # should return -1extendedcharsextendedcharsextendedchars extendedchars extendedchars(-1+1. 22460635382e -16j)extendedcharsextendedcharsextendedchars extendedchars extendedcharsIn [11]: print(2** 100)extendedcharsextendedcharsextendedchars extendedchars extendedchars1267650600228229401496703205376
extendedcharsextendedchars
Note: Everything following # is treated as a comment.
Computing ζ(x) =∑∞k=1
1kx with ζ(2) = π2
6 givesextendedcharsextendedchars
extendedcharsextendedcharsextendedchars extendedchars extendedcharsIn [12]: import scipy. specialextendedcharsextendedcharsextendedchars extendedchars extendedcharsIn [13]: scipy. special .zeta(2., 1) # x = 2extendedcharsextendedcharsextendedchars extendedchars extendedchars1. 6449340668482266extendedcharsextendedcharsextendedchars extendedchars extendedcharsIn [14]: pi**2/6extendedcharsextendedcharsextendedchars extendedchars extendedchars1. 6449340668482264
extendedcharsextendedchars
Numerical Analysis, Lund University, 2017 7
Numbers
A number may be an integer, a real number or a complex number.The usual operations are
I + and - addition and substractionI * and / multiplication and divisionI ** power
extendedcharsextendedcharsextendedcharsextendedcharsextendedchars extendedchars extendedchars2**(2+2) # 16extendedcharsextendedcharsextendedchars extendedchars extendedchars1j**2 # -1
extendedcharsextendedchars
Numerical Analysis, Lund University, 2017 8
Strings
Strings are “lists” of characters, enclosed by simple or doublequotes:
extendedcharsextendedcharsextendedcharsextendedcharsextendedchars extendedchars extendedchars’valid string ’extendedcharsextendedcharsextendedchars extendedchars extendedchars" string with double quotes "
extendedcharsextendedchars
You may also use triple quotes for strings including multiple lines:extendedcharsextendedchars
extendedcharsextendedcharsextendedchars extendedchars extendedchars"\" "This isextendedcharsextendedcharsextendedchars extendedchars extendedcharsa long ,extendedcharsextendedcharsextendedchars extendedchars extendedcharslong string "\" "
extendedcharsextendedchars
Numerical Analysis, Lund University, 2017 9
Strings
Strings are “lists” of characters, enclosed by simple or doublequotes:
extendedcharsextendedcharsextendedcharsextendedcharsextendedchars extendedchars extendedchars’valid string ’extendedcharsextendedcharsextendedchars extendedchars extendedchars" string with double quotes "
extendedcharsextendedchars
You may also use triple quotes for strings including multiple lines:extendedcharsextendedchars
extendedcharsextendedcharsextendedchars extendedchars extendedchars"\" "This isextendedcharsextendedcharsextendedchars extendedchars extendedcharsa long ,extendedcharsextendedcharsextendedchars extendedchars extendedcharslong string "\" "
extendedcharsextendedchars
Numerical Analysis, Lund University, 2017 9
Variable
VariablesA variable is a reference to an object. An object may have severalreferences. One uses the assignment operator = to assign a valueto a variable.
Exampleextendedcharsextendedchars
extendedcharsextendedcharsextendedchars extendedchars extendedcharsx = [3, 4] # a list object is createdextendedcharsextendedcharsextendedchars extendedchars extendedcharsy = x # this object is now referenced by x and by yextendedcharsextendedcharsextendedchars extendedchars extendedcharsdel x # we delete one of the referencesextendedcharsextendedcharsextendedchars extendedchars extendedcharsdel y # all references are deleted : the object is deleted
extendedcharsextendedchars
Numerical Analysis, Lund University, 2017 10
Concept: Lists
ListsA Python list is an ordered list of objects, enclosed in squarebrackets. One accesses elements of a list using zero-based indicesinside square brackets.
Numerical Analysis, Lund University, 2017 11
List Examples
Exampleextendedcharsextendedchars
extendedcharsextendedcharsextendedchars extendedchars extendedcharsL1 = [1, 2]extendedcharsextendedcharsextendedchars extendedchars extendedcharsL1[0] # 1extendedcharsextendedcharsextendedchars extendedchars extendedcharsL1[1] # 2extendedcharsextendedcharsextendedchars extendedchars extendedcharsL1[2] # raises IndexErrorextendedcharsextendedcharsextendedchars extendedchars extendedcharsextendedcharsextendedcharsextendedchars extendedchars extendedcharsL2 = [’a’, 1, [3, 4]]extendedcharsextendedcharsextendedchars extendedchars extendedcharsL2[0] # ’a’extendedcharsextendedcharsextendedchars extendedchars extendedcharsL2[2][0] # 3extendedcharsextendedcharsextendedchars extendedchars extendedcharsextendedcharsextendedcharsextendedchars extendedchars extendedcharsL2[-1] # last element : [3,4]extendedcharsextendedcharsextendedchars extendedchars extendedcharsL2[-2] # second to last: 1
extendedcharsextendedchars
Numerical Analysis, Lund University, 2017 12
List UtilitiesI range(n) can be used to fill list with n elements, starting
with zero:extendedcharsextendedchars
extendedcharsextendedcharsextendedchars extendedchars extendedcharslist(range(5)) # [0, 1, 2, 3, 4]extendedcharsextendedchars
I len(L) gives the length of a list:extendedcharsextendedchars
extendedcharsextendedcharsextendedchars extendedchars extendedcharslen ([’a’, 1, 2, 34]) # returns 4extendedcharsextendedchars
I Use append to append an element to a list:extendedcharsextendedchars
extendedcharsextendedcharsextendedchars extendedchars extendedcharsL = [’a’, ’b’, ’c’]extendedcharsextendedcharsextendedchars extendedchars extendedcharsL[-1] # ’c’extendedcharsextendedcharsextendedchars extendedchars extendedcharsL. append (’d’)extendedcharsextendedcharsextendedchars extendedchars extendedcharsL # L is now [’a’, ’b’, ’c’, ’d ’]extendedcharsextendedcharsextendedchars extendedchars extendedcharsL[-1] # ’d’
extendedcharsextendedchars
Numerical Analysis, Lund University, 2017 13
List UtilitiesI range(n) can be used to fill list with n elements, starting
with zero:extendedcharsextendedchars
extendedcharsextendedcharsextendedchars extendedchars extendedcharslist(range(5)) # [0, 1, 2, 3, 4]extendedcharsextendedchars
I len(L) gives the length of a list:extendedcharsextendedchars
extendedcharsextendedcharsextendedchars extendedchars extendedcharslen ([’a’, 1, 2, 34 ]) # returns 4extendedcharsextendedchars
I Use append to append an element to a list:extendedcharsextendedchars
extendedcharsextendedcharsextendedchars extendedchars extendedcharsL = [’a’, ’b’, ’c’]extendedcharsextendedcharsextendedchars extendedchars extendedcharsL[-1] # ’c’extendedcharsextendedcharsextendedchars extendedchars extendedcharsL. append (’d’)extendedcharsextendedcharsextendedchars extendedchars extendedcharsL # L is now [’a’, ’b’, ’c’, ’d ’]extendedcharsextendedcharsextendedchars extendedchars extendedcharsL[-1] # ’d’
extendedcharsextendedchars
Numerical Analysis, Lund University, 2017 13
List UtilitiesI range(n) can be used to fill list with n elements, starting
with zero:extendedcharsextendedchars
extendedcharsextendedcharsextendedchars extendedchars extendedcharslist(range(5)) # [0, 1, 2, 3, 4]extendedcharsextendedchars
I len(L) gives the length of a list:extendedcharsextendedchars
extendedcharsextendedcharsextendedchars extendedchars extendedcharslen ([’a’, 1, 2, 34 ]) # returns 4extendedcharsextendedchars
I Use append to append an element to a list:extendedcharsextendedchars
extendedcharsextendedcharsextendedchars extendedchars extendedcharsL = [’a’, ’b’, ’c’]extendedcharsextendedcharsextendedchars extendedchars extendedcharsL[-1] # ’c’extendedcharsextendedcharsextendedchars extendedchars extendedcharsL. append (’d’)extendedcharsextendedcharsextendedchars extendedchars extendedcharsL # L is now [’a’, ’b’, ’c’, ’d ’]extendedcharsextendedcharsextendedchars extendedchars extendedcharsL[-1] # ’d’
extendedcharsextendedchars
Numerical Analysis, Lund University, 2017 13
List Comprehension
A convenient way to build up lists is to use the list comprehensionconstruct, possibly with a conditional inside.
DefinitionThe syntax of a list comprehension is
extendedcharsextendedcharsextendedcharsextendedcharsextendedchars extendedchars extendedchars[<expr > for <variable > in <list >]
extendedcharsextendedchars
Exampleextendedcharsextendedchars
extendedcharsextendedcharsextendedchars extendedchars extendedcharsL = [2, 3, 10 , 1, 5]extendedcharsextendedcharsextendedchars extendedchars extendedcharsL2 = [x*2 for x in L] # [4, 6, 20 , 2, 10]extendedcharsextendedcharsextendedchars extendedchars extendedcharsL3 = [x*2 for x in L if 4 < x <= 10] # [20 , 10]
extendedcharsextendedchars
Numerical Analysis, Lund University, 2017 14
List Comprehension in Mathematics
Mathematical NotationThis is very close to the mathematical notation for sets. Compare:
L2 = {2x; x ∈ L}
andextendedcharsextendedchars
extendedcharsextendedcharsextendedchars extendedchars extendedcharsL2 = [2*x for x in L]extendedcharsextendedchars
One big difference though is that lists are ordered while sets aren’t.
Numerical Analysis, Lund University, 2017 15
Operations on Lists
I Adding two lists concatenates (sammanfogar) them:extendedcharsextendedchars
extendedcharsextendedcharsextendedchars extendedchars extendedcharsL1 = [1, 2]extendedcharsextendedcharsextendedchars extendedchars extendedcharsL2 = [3, 4]extendedcharsextendedcharsextendedchars extendedchars extendedcharsL = L1 + L2 # [1, 2, 3, 4]
extendedcharsextendedchars
I Logically, multiplying a list with an integer concatenates thelist with itself several times: n*L is equivalent toL+ L+ · · ·+ L︸ ︷︷ ︸
n times
.
extendedcharsextendedcharsextendedcharsextendedcharsextendedchars extendedchars extendedcharsL = [1, 2]extendedcharsextendedcharsextendedchars extendedchars extendedchars3 * L # [1, 2, 1, 2, 1, 2]
extendedcharsextendedchars
(To multiply each element by c, we use arrays instead of lists.)
Numerical Analysis, Lund University, 2017 16
Operations on Lists
I Adding two lists concatenates (sammanfogar) them:extendedcharsextendedchars
extendedcharsextendedcharsextendedchars extendedchars extendedcharsL1 = [1, 2]extendedcharsextendedcharsextendedchars extendedchars extendedcharsL2 = [3, 4]extendedcharsextendedcharsextendedchars extendedchars extendedcharsL = L1 + L2 # [1, 2, 3, 4]
extendedcharsextendedchars
I Logically, multiplying a list with an integer concatenates thelist with itself several times: n*L is equivalent toL+ L+ · · ·+ L︸ ︷︷ ︸
n times
.
extendedcharsextendedcharsextendedcharsextendedcharsextendedchars extendedchars extendedcharsL = [1, 2]extendedcharsextendedcharsextendedchars extendedchars extendedchars3 * L # [1, 2, 1, 2, 1, 2]
extendedcharsextendedchars
(To multiply each element by c, we use arrays instead of lists.)
Numerical Analysis, Lund University, 2017 16
for loops
for loopA for loop allows to loop through a list using an index variable.This variable takes succesively the values of the elements in the list.
Exampleextendedcharsextendedchars
extendedcharsextendedcharsextendedchars extendedchars extendedcharsL = [1, 2, 10]extendedcharsextendedcharsextendedchars extendedchars extendedcharsfor s in L:extendedcharsextendedcharsextendedchars extendedchars extendedcharsprint(s * 2) # output : 2 4 20
extendedcharsextendedchars
Numerical Analysis, Lund University, 2017 17
for loops
for loopA for loop allows to loop through a list using an index variable.This variable takes succesively the values of the elements in the list.
Exampleextendedcharsextendedchars
extendedcharsextendedcharsextendedchars extendedchars extendedcharsL = [1, 2, 10]extendedcharsextendedcharsextendedchars extendedchars extendedcharsfor s in L:extendedcharsextendedcharsextendedchars extendedchars extendedcharsprint(s * 2) # output : 2 4 20
extendedcharsextendedchars
Numerical Analysis, Lund University, 2017 17
Repeating a Task
One typical use of the for loop is to repeat a certain task a fixednumber of times:
extendedcharsextendedcharsextendedcharsextendedcharsextendedchars extendedchars extendedcharsn = 30extendedcharsextendedcharsextendedchars extendedchars extendedcharsfor i in range(n):extendedcharsextendedcharsextendedchars extendedchars extendedcharsdo_something # this gets executed n times
extendedcharsextendedchars
Numerical Analysis, Lund University, 2017 18
Indentation
The part to be repeated in the for loop has to be properly indented:extendedcharsextendedchars
extendedcharsextendedcharsextendedchars extendedchars extendedcharsfor elt in my_list :extendedcharsextendedcharsextendedchars extendedchars extendedcharsdo_something ()extendedcharsextendedcharsextendedchars extendedchars extendedcharssomething_else ()extendedcharsextendedcharsextendedchars extendedchars extendedcharsetcextendedcharsextendedcharsextendedchars extendedchars extendedcharsprint ("loop finished ") # outside the for block
extendedcharsextendedchars
Note: In contrast to other programming languages, the indentationin Python is mandatory.
Many other kinds of Python structures also have to be indented,we will cover this when introducing them.
Numerical Analysis, Lund University, 2017 19
Indentation
The part to be repeated in the for loop has to be properly indented:extendedcharsextendedchars
extendedcharsextendedcharsextendedchars extendedchars extendedcharsfor elt in my_list :extendedcharsextendedcharsextendedchars extendedchars extendedcharsdo_something ()extendedcharsextendedcharsextendedchars extendedchars extendedcharssomething_else ()extendedcharsextendedcharsextendedchars extendedchars extendedcharsetcextendedcharsextendedcharsextendedchars extendedchars extendedcharsprint ("loop finished ") # outside the for block
extendedcharsextendedchars
Note: In contrast to other programming languages, the indentationin Python is mandatory.
Many other kinds of Python structures also have to be indented,we will cover this when introducing them.
Numerical Analysis, Lund University, 2017 19
Elementary Plotting
We first make the central visualization tool in Python available:extendedcharsextendedchars
extendedcharsextendedcharsextendedchars extendedchars extendedcharsfrom pylab import *extendedcharsextendedchars
Then we generate two listsextendedcharsextendedchars
extendedcharsextendedcharsextendedchars extendedchars extendedcharsx_list =list(range(100 )) # the first hundred numbersextendedcharsextendedcharsextendedchars extendedchars extendedcharsy_list =[ sqrt(x) for x in xlist]
extendedcharsextendedchars
And then we make a graphextendedcharsextendedchars
extendedcharsextendedcharsextendedchars extendedchars extendedcharsplot(x_list ,y_list ,’o’)extendedcharsextendedcharsextendedchars extendedchars extendedcharstitle(’My first plot ’)extendedcharsextendedcharsextendedchars extendedchars extendedcharsxlabel (’x’)extendedcharsextendedcharsextendedchars extendedchars extendedcharsylabel (’Square root of x’)extendedcharsextendedcharsextendedchars extendedchars extendedcharsshow ()
extendedcharsextendedchars
Numerical Analysis, Lund University, 2017 20
How to run a piece of code
There are two phases in Python programming:1. Writing the code2. Executing (running) it
For Task 2, one needs to give the code to the Python interpreterwhich reads the code and figures out what to do with it.
Short snippets of code can be written directly in the interpreterand executed interactively. We use the interpreter IPython whichhas extra features.
For writing a larger program, one generally uses a text editor whichcan highlight code in a good way.
There are also development suites which bundle the interpreter,editor and other things into the same program.
Numerical Analysis, Lund University, 2017 22
On our computers
The computers in the computer room should have Python andSpyder installed under Windows.
You should set up Spyder according to the instructions athttp://www.maths.lth.se/na/nahelp/
Numerical Analysis, Lund University, 2017 24
On your computer
To install Python and additional necessary libraries for this course,follow the instructions athttp://www.maths.lth.se/na/nahelp/
Numerical Analysis, Lund University, 2017 25
IPythonIPython is an enhanced Python interpreter.You can launch it as a stand-alone application, but it is alsoembedded in Spyder.Some notes on usage:
I To execute the contents of a file named myscript.py justwrite run myscript in IPython or use the green "run" arrow
in the Spyder toolbar.
I Use the arrow keys to visit previous commandsand
I Use the tabulation key to auto-complete commandsand names
I To get help on an object just type ? after it and then returnI When you want to quit, write exit()
Numerical Analysis, Lund University, 2017 26
Code Examples in the Lecture
I Summing and multiplying in loopsI Summing up the numbers from 1 to nI Finding all integers less than 100 which can be divided by 7I Summing up all integers less than 100 which can be divided
by 7I Plotting a circle
Note the operators % and == in Python for division with rest and for comparing two numbers. These will discussed
later in more detail.
Numerical Analysis, Lund University, 2017 27