33
Computational Programming with Python Lecture 1: First steps - A bit of everything. Numerical Analysis, Lund University Lecturer: Claus Führer, Alexandros Sopasakis 2017 Numerical Analysis, Lund University, 2017 1

Computational Programming with Python - Lunds …ctr.maths.lu.se/na/courses/NUMA01/course_media/material/unit01_U00... · ComputationalProgrammingwithPython Lecture1: Firststeps-Abitofeverything

  • 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

Elementary Plotting

Numerical Analysis, Lund University, 2017 21

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

Spyder

Example of a development environment, Spyder

Numerical Analysis, Lund University, 2017 23

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