chapter1: basics numericalanalysis,lunduniversity · computationalmathematicswithpython chapter1:...

29
Computational Mathematics with Python Chapter 1: Basics Numerical Analysis, Lund University Claus Führer, Jan Erik Solem, Olivier Verdier, Tony Stillfjord Spring 2011 Numerical Analysis, Lund University, 2011 1

Upload: others

Post on 04-Aug-2020

52 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Chapter1: Basics NumericalAnalysis,LundUniversity · ComputationalMathematicswithPython Chapter1: Basics NumericalAnalysis,LundUniversity Claus Führer, Jan Erik Solem, Olivier Verdier,

Computational Mathematics with PythonChapter 1: Basics

Numerical Analysis, Lund UniversityClaus Führer, Jan Erik Solem, Olivier Verdier, Tony Stillfjord

Spring 2011

Numerical Analysis, Lund University, 2011 1

Page 2: Chapter1: Basics NumericalAnalysis,LundUniversity · ComputationalMathematicswithPython Chapter1: Basics NumericalAnalysis,LundUniversity Claus Führer, Jan Erik Solem, Olivier Verdier,

Introduction and MotivationPython vs Other LanguagesExamples

ConceptsBasic TypesVariablesListsFor Loop

Practical Information

Numerical Analysis, Lund University, 2011 2

Page 3: Chapter1: Basics NumericalAnalysis,LundUniversity · ComputationalMathematicswithPython Chapter1: Basics NumericalAnalysis,LundUniversity Claus Führer, Jan Erik Solem, Olivier Verdier,

Introduction and MotivationPython vs Other LanguagesExamples

ConceptsBasic TypesVariablesListsFor Loop

Practical Information

Numerical Analysis, Lund University, 2011 3

Page 4: Chapter1: Basics NumericalAnalysis,LundUniversity · ComputationalMathematicswithPython Chapter1: Basics NumericalAnalysis,LundUniversity Claus Führer, Jan Erik Solem, Olivier Verdier,

Why Python?

Python is. . .I Free and open sourceI It is a scripting language, meaning that it is interpretedI It is modern: object oriented, exception handling, dynamic

typing etc.I Plenty of libraries, in particular scientific ones: linear algebra;

visualisation tools: plotting, image analysis; differential equationssolving; symbolic computations; statistics ; etc.

I Many possible usages: Scientific computing (of course :-)),scripting, web sites, text parsing, etc.

I Used by YouTube, Google, NASA, Los Alamos, NSA among others

Numerical Analysis, Lund University, 2011 4

Page 5: Chapter1: Basics NumericalAnalysis,LundUniversity · ComputationalMathematicswithPython Chapter1: Basics NumericalAnalysis,LundUniversity Claus Führer, Jan Erik Solem, Olivier Verdier,

Python vs language XX

Java, C++ Object oriented compiled languages. Very limitedand extremely verbose. Low level compared topython. Few scientific libraries.

C, FORTRAN Very low level compiled language. Useful in someCPU critical situations.

php, ruby Other interpreted languages. PHP is web oriented.Ruby is as flexible as python but has no scientificlibrary.

MATLAB Tool for matrix computation that evolved forscientific computing. The scientific library is hugebut it is not a programming language. Extremelyexpensive.

Numerical Analysis, Lund University, 2011 5

Page 6: Chapter1: Basics NumericalAnalysis,LundUniversity · ComputationalMathematicswithPython Chapter1: Basics NumericalAnalysis,LundUniversity Claus Führer, Jan Erik Solem, Olivier Verdier,

Examples

Python may be used in interactive mode:»> x = 3»> y = 5»> print(x + y)8

Here we solve [1 23 4

]· x =

[21

]

»> M = array([[1., 2.],[3., 4.]])

»> V = array([2., 1.])»> x = solve(M, V)»> print(x)[-3. 2.5]

Numerical Analysis, Lund University, 2011 6

Page 7: Chapter1: Basics NumericalAnalysis,LundUniversity · ComputationalMathematicswithPython Chapter1: Basics NumericalAnalysis,LundUniversity Claus Führer, Jan Erik Solem, Olivier Verdier,

More examples

Computing eiπ and 2100:»> print(exp(1j*pi)) # should return -1 :-)(-1+1.22464679915e-16j)»> print(2**100)1267650600228229401496703205376L

Computing ζ(x) =∑∞

k=11kx . For x = 2 we know that ζ(2) = π2

6 :# for x = 2:»> print(scipy.special.zeta(2., 1))1.64493406685»> print(pi**2/6)1.6449340668482264

Numerical Analysis, Lund University, 2011 7

Page 8: Chapter1: Basics NumericalAnalysis,LundUniversity · ComputationalMathematicswithPython Chapter1: Basics NumericalAnalysis,LundUniversity Claus Führer, Jan Erik Solem, Olivier Verdier,

Introduction and MotivationPython vs Other LanguagesExamples

ConceptsBasic TypesVariablesListsFor Loop

Practical Information

Numerical Analysis, Lund University, 2011 8

Page 9: Chapter1: Basics NumericalAnalysis,LundUniversity · ComputationalMathematicswithPython Chapter1: Basics NumericalAnalysis,LundUniversity Claus Führer, Jan Erik Solem, Olivier Verdier,

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

2**(2+2) # 161j**2 # -1

Numerical Analysis, Lund University, 2011 9

Page 10: Chapter1: Basics NumericalAnalysis,LundUniversity · ComputationalMathematicswithPython Chapter1: Basics NumericalAnalysis,LundUniversity Claus Führer, Jan Erik Solem, Olivier Verdier,

Strings

Strings are “lists” of characters, enclosed by simple or doublequotes:’valid string ’"string with double quotes"

You may also use triple quotes for strings including multiple lines:""" This isa long ,long string """

Numerical Analysis, Lund University, 2011 10

Page 11: Chapter1: Basics NumericalAnalysis,LundUniversity · ComputationalMathematicswithPython Chapter1: Basics NumericalAnalysis,LundUniversity Claus Führer, Jan Erik Solem, Olivier Verdier,

Strings

Strings are “lists” of characters, enclosed by simple or doublequotes:’valid string ’"string with double quotes"

You may also use triple quotes for strings including multiple lines:""" This isa long ,long string """

Numerical Analysis, Lund University, 2011 10

Page 12: Chapter1: Basics NumericalAnalysis,LundUniversity · ComputationalMathematicswithPython Chapter1: Basics NumericalAnalysis,LundUniversity Claus Führer, Jan Erik Solem, Olivier Verdier,

Concept: 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.

Examplex = [3, 4] # a list object is createdy = x # this object now has two labels : x and ydel x # we delete one of the labelsdel y # both labels are removed : the object is deleted

Numerical Analysis, Lund University, 2011 11

Page 13: Chapter1: Basics NumericalAnalysis,LundUniversity · ComputationalMathematicswithPython Chapter1: Basics NumericalAnalysis,LundUniversity Claus Führer, Jan Erik Solem, Olivier Verdier,

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, 2011 12

Page 14: Chapter1: Basics NumericalAnalysis,LundUniversity · ComputationalMathematicswithPython Chapter1: Basics NumericalAnalysis,LundUniversity Claus Führer, Jan Erik Solem, Olivier Verdier,

List Examples

ExampleL1 = [1, 2]L1[0] # 1L1[1] # 2L1[2] # raises IndexError

L2 = [’a’, 1, [3, 4]]L2[0] # ’a’L2[2][0] # 3

L2[-1] # last element : [3,4]L2[-2] # second to last: 1

Numerical Analysis, Lund University, 2011 13

Page 15: Chapter1: Basics NumericalAnalysis,LundUniversity · ComputationalMathematicswithPython Chapter1: Basics NumericalAnalysis,LundUniversity Claus Führer, Jan Erik Solem, Olivier Verdier,

List Utilities

I range(n) creates a list with n elements, starting with zero:print(range(5))[0, 1, 2, 3, 4]

I len(L) gives the length of a list:len([’a’, 1, 2, 34]) # returns 4

I Use append to append an element to a list:L = [’a’, ’b’, ’c’]L[-1] # ’c’L.append(’d’)L # L is now [’a’, ’b’, ’c’, ’d ’]L[-1] # ’d’

Numerical Analysis, Lund University, 2011 14

Page 16: Chapter1: Basics NumericalAnalysis,LundUniversity · ComputationalMathematicswithPython Chapter1: Basics NumericalAnalysis,LundUniversity Claus Führer, Jan Erik Solem, Olivier Verdier,

List Utilities

I range(n) creates a list with n elements, starting with zero:print(range(5))[0, 1, 2, 3, 4]

I len(L) gives the length of a list:len([’a’, 1, 2, 34]) # returns 4

I Use append to append an element to a list:L = [’a’, ’b’, ’c’]L[-1] # ’c’L.append(’d’)L # L is now [’a’, ’b’, ’c’, ’d ’]L[-1] # ’d’

Numerical Analysis, Lund University, 2011 14

Page 17: Chapter1: Basics NumericalAnalysis,LundUniversity · ComputationalMathematicswithPython Chapter1: Basics NumericalAnalysis,LundUniversity Claus Führer, Jan Erik Solem, Olivier Verdier,

List Utilities

I range(n) creates a list with n elements, starting with zero:print(range(5))[0, 1, 2, 3, 4]

I len(L) gives the length of a list:len([’a’, 1, 2, 34]) # returns 4

I Use append to append an element to a list:L = [’a’, ’b’, ’c’]L[-1] # ’c’L.append(’d’)L # L is now [’a’, ’b’, ’c’, ’d ’]L[-1] # ’d’

Numerical Analysis, Lund University, 2011 14

Page 18: Chapter1: Basics NumericalAnalysis,LundUniversity · ComputationalMathematicswithPython Chapter1: Basics NumericalAnalysis,LundUniversity Claus Führer, Jan Erik Solem, Olivier Verdier,

Comprehensive lists

A convenient way to build up lists is to use the comprehensive listsconstruct, possibly with a conditional inside.

DefinitionThe syntax of a comprehensive list is[<expr> for <variable> in <list>]

ExampleL = [2, 3, 10, 1, 5]

L2 = [x*2 for x in L] # [4, 6, 20 , 2, 10]

L3 = [x*2 for x in L if 4 < x <= 10] # [20 , 10]

Numerical Analysis, Lund University, 2011 15

Page 19: Chapter1: Basics NumericalAnalysis,LundUniversity · ComputationalMathematicswithPython Chapter1: Basics NumericalAnalysis,LundUniversity Claus Führer, Jan Erik Solem, Olivier Verdier,

Comprehensive Lists in Maths

Mathematical NotationThis is very close to the mathematical notation for sets. Compare:

L2 = {2x; x ∈ L}

andL2 = [2*x for x in L]

One big difference though is that lists are ordered while sets aren’t.

Numerical Analysis, Lund University, 2011 16

Page 20: Chapter1: Basics NumericalAnalysis,LundUniversity · ComputationalMathematicswithPython Chapter1: Basics NumericalAnalysis,LundUniversity Claus Führer, Jan Erik Solem, Olivier Verdier,

Operations on Lists

I Adding two lists concatenates (sammanfoga) them:L1 = [1, 2]L2 = [3, 4]L = L1 + L2 # [1, 2, 3, 4]

I Logically, multiplying a list with an integer concatenates thelist with itself several times: n*L is equivalent toL + L + · · ·+ L︸ ︷︷ ︸

n times

.

L = [1, 2]3 * L # [1, 2, 1, 2, 1, 2]

(To multiply each element by c, we use arrays instead of lists.)

Numerical Analysis, Lund University, 2011 17

Page 21: Chapter1: Basics NumericalAnalysis,LundUniversity · ComputationalMathematicswithPython Chapter1: Basics NumericalAnalysis,LundUniversity Claus Führer, Jan Erik Solem, Olivier Verdier,

Operations on Lists

I Adding two lists concatenates (sammanfoga) them:L1 = [1, 2]L2 = [3, 4]L = L1 + L2 # [1, 2, 3, 4]

I Logically, multiplying a list with an integer concatenates thelist with itself several times: n*L is equivalent toL + L + · · ·+ L︸ ︷︷ ︸

n times

.

L = [1, 2]3 * L # [1, 2, 1, 2, 1, 2]

(To multiply each element by c, we use arrays instead of lists.)

Numerical Analysis, Lund University, 2011 17

Page 22: Chapter1: Basics NumericalAnalysis,LundUniversity · ComputationalMathematicswithPython Chapter1: Basics NumericalAnalysis,LundUniversity Claus Führer, Jan Erik Solem, Olivier Verdier,

Concept: for loop

for loopA for loop allows to loop through a list using an index variable.This variable is successively equal to all the elements in the list.

ExampleL = [1, 2, 10]for s in L:

print(s * 2) # output : 2 4 20

Numerical Analysis, Lund University, 2011 18

Page 23: Chapter1: Basics NumericalAnalysis,LundUniversity · ComputationalMathematicswithPython Chapter1: Basics NumericalAnalysis,LundUniversity Claus Führer, Jan Erik Solem, Olivier Verdier,

Concept: for loop

for loopA for loop allows to loop through a list using an index variable.This variable is successively equal to all the elements in the list.

ExampleL = [1, 2, 10]for s in L:

print(s * 2) # output : 2 4 20

Numerical Analysis, Lund University, 2011 18

Page 24: Chapter1: Basics NumericalAnalysis,LundUniversity · ComputationalMathematicswithPython Chapter1: Basics NumericalAnalysis,LundUniversity Claus Führer, Jan Erik Solem, Olivier Verdier,

Indentation

The part to be repeated in the for loop has to be properly indented:for elt in my_list:

do_something ()something_else ()etc

print("loop finished") # outside the for block

Numerical Analysis, Lund University, 2011 19

Page 25: Chapter1: Basics NumericalAnalysis,LundUniversity · ComputationalMathematicswithPython Chapter1: Basics NumericalAnalysis,LundUniversity Claus Führer, Jan Erik Solem, Olivier Verdier,

Repeating a Task

One typical use of the for loop is to repeat a certain task a fixednumber of time:n = 30for i in range(n):

do_something # this gets executed n times

Numerical Analysis, Lund University, 2011 20

Page 26: Chapter1: Basics NumericalAnalysis,LundUniversity · ComputationalMathematicswithPython Chapter1: Basics NumericalAnalysis,LundUniversity Claus Führer, Jan Erik Solem, Olivier Verdier,

Introduction and MotivationPython vs Other LanguagesExamples

ConceptsBasic TypesVariablesListsFor Loop

Practical Information

Numerical Analysis, Lund University, 2011 21

Page 27: Chapter1: Basics NumericalAnalysis,LundUniversity · ComputationalMathematicswithPython Chapter1: Basics NumericalAnalysis,LundUniversity Claus Führer, Jan Erik Solem, Olivier Verdier,

Python Shell

I Start a python session by typing scipython in a unix shellI Check that it is working with: plot(rand(4));show()I A window should appear with a graph; you should be able to

type other commands without having to close the graphwindow

I when you want to quit, write exit()

When you want to run python at home please follow the installationinstruction on http://www.maths.lth.se/na/python/install(see also the course compendium)

Numerical Analysis, Lund University, 2011 22

Page 28: Chapter1: Basics NumericalAnalysis,LundUniversity · ComputationalMathematicswithPython Chapter1: Basics NumericalAnalysis,LundUniversity Claus Führer, Jan Erik Solem, Olivier Verdier,

Executing Scripts

You often want to execute the contents of a file.I We recommand to use Geany on the Linux machines (but any

other good editor will do)I Save your files in (for example) in $HOME/course/I Type (once) in ipython: cd courseI To execute the contents of a file named file.py just write

execfile(’file.py’) in ipython.

Numerical Analysis, Lund University, 2011 23

Page 29: Chapter1: Basics NumericalAnalysis,LundUniversity · ComputationalMathematicswithPython Chapter1: Basics NumericalAnalysis,LundUniversity Claus Führer, Jan Erik Solem, Olivier Verdier,

Getting Help

Some tips on how to use ipython:I To get help on an object just type ? after it and then returnI Use the arrow keys to reuse the last executed commandsI We will see later that you may use the tabulation key for

completion in general

Numerical Analysis, Lund University, 2011 24