Download - Python Programming

Transcript
Page 1: Python  Programming

Python Programming

overview

by

Aliki Muradova

Technical University of Crete

Page 2: Python  Programming

WHY PYTHON?What advantages has it?

Page 3: Python  Programming

PYTHON PROGRAMMING

The Reasons for Choosing Python

Python is free It is object-oriented It is interpreted It is operating-system independent It has an excellent optimization

module It offers modern COM modules for

interfacing with Solids Works

Page 4: Python  Programming

PYTHON PROGRAMMING

Getting Started with Python

Python(x,y) package from http://code.google.com/p/pythonxy The Python(x,y) package comes with all numerical and scientific Python modules. Python(x,y) is a free scientific and engineering development software for numerical computations, data analysis and data visualization based on Python programming language. Spyder is excellent integrated development environment (IDE). Index for some packages related to python http://pypi.python.org/pypi?%3Aaction=index SfePy is a software for solving systems of coupled partial

differential equations (PDEs) by the finite element method in 2D and 3D http://stepy.org http://plateformesn-m2p.ensam.eu/SphinxDoc/cnem/index.html http://femhub.org/

Page 5: Python  Programming

PYTHON PROGRAMMING

Since Python is an object-oriented language,everything one creates in Python is an object, including integers, float,strings, arrays, etc.

>>> i=4>>> x=3.56>>> a=“hello”

Examples

Associated with objects are methods that act on these objects. ByTyping a ‘dot’ after the object variable name, we can access a listof methods associated with it.

Examples

>>> a=“hello”>>> a.capitalize()‘Hello’

Basic Objects

Page 6: Python  Programming

PYTHON PROGRAMMING

For integers and floats, it is interpreted as the usual addition; for strings it is interpreted in Python as a concatenation. We can reassign the variables.

>>> i=1+2>>> i3>>>a=“hello”+“world!”>>>a“hello world!”>>>a=“hello”>>>b=a>>>print a,bhello hello>>>b=“world!”>>>print a,bhello world!

Examples

Basic Objects

Page 7: Python  Programming

PYTHON PROGRAMMING

A list is a collection of other Python objects. Lists can contain a varietyof objects (integers, strings, etc). They can contain other list objects as in b= [3,a]. Addition of lists leads to a concatenation as in c=a+a. Thereis an access to individual elements of a list is through the [] operator (asIn a[2]). The indexing of individual elements f a list starts from 0.

>>> a=[1, 2, “srt”]>>> b=[3,a] >>> c=a+a>>> print a,b,c[1, 2, “str”][3, [1, 2, “str”]][1, 2, “str”,1, 2, “str”]>>> b=a>>>b[2]=3>>>print a[1, 2, 3]>>> range(5)[0, 1, 2, 3, 4]

Examples

Lists

Page 8: Python  Programming

PYTHON PROGRAMMING

Simple Python program in the Editor (e.g. within Spyder). You can givea name, e.g. PythonObjects.py, ‘py’ extension refers to a Python file.

# Floats and integersprint 2**10 #2 to the power 10x=0.5print 2.5*x/3# Stringss=“Hello World!”print 3*s # implies concatenation# Listsa=[0,1,2,3] # list, not an array or vectorb=range(4) # list, with the same contents as aprint a,bprint 3*a # implies concatenation

Python Scripts

File Edit Format Run Options Windows Help

PythonObjects.py-…

Page 9: Python  Programming

PYTHON PROGRAMMING

The following output appears in the Console window after running the code PythonObjects.py

10240.416666666667Hello World!Hello World!Hello World![0, 1, 2, 3] [0, 1, 2, 3][0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3]

Output

Page 10: Python  Programming

PYTHON PROGRAMMING

The following example illustrates the use of ‘for’, ‘if’ and ‘while’ commands in Python.

# Flow control in Pythonfor i in range(10): # does not include 10 if i<=4: print i, i**2 elif i<=7: print i,i**2+1 else: print i,i**2+2 s='-'while len(s)<25: s+='-'print s

Flow Control

File Edit Format Run Options Windows Help

FControl.py-…

Page 11: Python  Programming

PYTHON PROGRAMMING

The following output appears in the Console window after running the code FControl.py

0 01 12 43 94 165 266 377 508 669 83-------------------------

Output

Page 12: Python  Programming

PYTHON PROGRAMMING

Python provides two commands, namely ‘raw_input’ and ‘input’ for user.The first command returns the user input as a string, while the second Command will interpret and evaluate the input, and return the interpreted value if the evaluation is meaningful.

>>> a=raw_input(“Enter data:”)Enter data: 3*4-5>>> a'3*4-5'>>> a=input(“Enter data:”)Enter data: 3*4-5>>> a7

User Input

Page 13: Python  Programming

PYTHON PROGRAMMING

There are numerical objects (arrays, dot product, etc) and methods that are not part of the core Python language, but are part of the numpyand scipy libraries/modules. They are installed when we install Python. However, in order to access them in a script file we must import them.

# Using Pylabimport pylab as py #(or e.g. import numpy as py)x=py.array([0,1,2,3]) # creates an array from a listy=x+x # this is now an addition not concatenationprint ya=py.pi # the number 3.1415926535897931theta=py.arange(-a,a,0.1) # sample from -pi to +pi using arangez=py.sin(theta) # compute sin(theta) for all samplesprint sz.max() # find the maximum value

Numerical Python

File Edit Format Run Options Windows Help

UsingPylab.py-…

Page 14: Python  Programming

PYTHON PROGRAMMING

The resulting output in the Console window is shown

[0 2 4 6]0.999923257564

Output

Page 15: Python  Programming

PYTHON PROGRAMMING

Python also supports the use of complex numbers through the use of symbol “j” that represents .

>>> a=3+4j>>> a**2‘(-7+24j)'>>> sqrt(a) # it is needed to import Numerical Python before‘(2+1j)

Complex Numbers

Examples

Page 16: Python  Programming

PYTHON PROGRAMMING

There are numerical objects (arrays, dot product, etc) and methods that are not part of the core Python language, but are part of the numpyand scipy libraries/modules. They are installed when we install Python. However, in order to access them in a script file we must import them.

# Linear Algebraimport pylab as py #(or e.g. import numpy as py)A=py.array([[2,-1],[-1,2]]) # creates an array from a listB=py.array([1,1])x=py.solve(A,b)print “Solution for 2x2 problem is” +str(x)

Linear Algebra

File Edit Format Run Options Windows Help

LinearAlgebra.py-…

Page 17: Python  Programming

PYTHON PROGRAMMING

# Linear Algebra (continuation)Lambda, V=py.eig(A)print “Eigenvalues of matrix are” +str(Lambda)Print “Eigenvectors of matrix are \n” +str(V)A=py.rand(50,50)xIn=py.rand(50,1)B=py.dot(A,xIn)xOut=py.solve(A,b)Err=py.norm(xIn-xOut)print “Error for a random matrix solve is “ +str(err)

Linear Algebra (cont.)

File Edit Format Run Options Windows Help

LinearAlgebra.py-…

Page 18: Python  Programming

PYTHON PROGRAMMING

Pylab supports 2D and 3D plotting via matlibplot(http://matplot.souceforge.net) package that can beAccessed through pylab.

Plots

MatLibPlot.py-…

File Edit Format Run Options Windows Help

# 2-D plots using Python/Pylabimport pylab as pypi=py.pix=py.arrange(0,2*pi,pi/50)y=py.sin(x)Z=py.cos(x)py.plot(x,y)py.plot(x,z)py.xlabel(“x”)py.ylabel(“sin(x)&cos(x)”)py.legend(“sin(x)’,’cos(x)”))py.savefig(“Fig2.png”)py.show()

Page 19: Python  Programming

PYTHON PROGRAMMING

The resulting output in the Console window is shown

Plots

Page 20: Python  Programming

PYTHON PROGRAMMING

One can include multiple functions within a single Python file, and Access each one of them individually (a distinct advantage over Matlab).

Modules

Example: a file containing multiple functionsSampleFunctions.py-…

File Edit Format Run Options Windows Help# Module consists of 1-D functions, and derivatives of some of these funcs.

import pylab as pydef f1(x): f=-x*py.exp(-x**2) # returns -x*exp(-x**2) return fdef f1_gradient(x): g=-py.exp(x**2)+2*x*x*py.exp(-x**2) # returns the derivative of f return g def f2_hessian(x): h=6*x*py.exp(x**2)-4*x**3*py.exp(-x**2) # return the second derivative of f

Page 21: Python  Programming

PYTHON PROGRAMMING

The resulting output in the Console window is shown below

>>> import SimpleFunctions>>> SimpleFunctions.f1(2)-0.036631277777468357

Modules

Page 22: Python  Programming

PYTHON PROGRAMMING

Python offers a rich set language features for passing arguments intoFunctions. We consider the function f1 (together with a testing script)

Function Arguments

FunctionsArguments.py-…

File Edit Format Run Options Windows Help

# Example to illustrate function argumentsdef f1(x, a=4, s=‘hello’): print x, a, s

if __name__==“__main__”: f1(0.3) f1(x=0.4) f1(x=0.5,a=5) f1(0.5, a=5) f1(x=0.6,s=“world”) f1(0.6,s=“world”) f1(s=“world”,a=7,x=0.7)

Page 23: Python  Programming

PYTHON PROGRAMMING

The resulting output in the Console window is shown below

0.3 4 hello0.4 4 hello0.5 5 hello0.5 5 hello0.6 4 world0.6 4 world0.7 7 world

Function Arguments

Page 24: Python  Programming

PYTHON PROGRAMMING

There are a few Python ‘quirks’ that one must keep in mind

>>> 5.0/22.5>>> 5/22>>> from __future__ import division>>> 5/22.5>>> A=array([[2,1],[1,2]]); x=array([1,-1])>>> b=A*x>>> barray([[2,-1], [1,-2]]]) # the ‘*’operator is interpreted as >>> b=dot(A,x)>>> barray([1,-1]) # the ‘dot’ operator is interpreted as

Python Quirks

Examples

Page 25: Python  Programming

PYTHON PROGRAMMING

An important concept “class”, in object oriented languages such Python, Is a collection of objects and methods that are closely related.

import pylab as pyclass Polynomial: def __init__ (self,aIn): self.a=py.array(aIn)

Python Class

def evaluate(x): #v=a[0]+a[1]*x+a[2]*x**2+... v,temp=0.0,1.0 for coeff in a: v+=coeff*temp temp*=x return vif __name__=="__main__": p=Polynomial([1,-1,2]) a=p.a print a st=__str__(); print st p1=evaluate(2.0) print p1

import PolynomialClassfrom PolynomialClass import Polynomialdef __str__(): string=str(a[0]) for i, coeff in enumerate(a[1:]): if coeff == 0.0: continue elif (coeff<0): sign=' - ' else: sign=' + ' string+=sign+str(abs(coeff))+’*x^’+str(i+1) return string

PolynomialClass.py

Page 26: Python  Programming

PYTHON PROGRAMMINGSfePy - software for solving PDEs in Python SfePy is a software for solving systems of

coupled partial differential equations (PDEs) by the finite element method in 2D and 3D

SfePy can use many terms to build systems of partial differential equations (PDEs) to be solved

SfePy comes with a number of examples that can get you started

Sources :http://sfepy.org , http://femhub.org/ http://plateformesn- m2p.ensam.eu/SphinxDoc/cnem/index.html

Page 27: Python  Programming

BIOT/BIOT.PYBiot problem - deformable porous mediumm

With using modules/lib.:numpy, sfepy

Page 28: Python  Programming

BIOT/BIOT_NPBC.PYBiot problem - deformable porous medium with the no-penetration boundary condition on boundary regionWith using modules/libraries: sfepy.linalg, sfepy.mechanics.matcoefs

Page 29: Python  Programming

LINEAR_ELASTICITY/LINEAR_VISCOELASTIC.PYLinear viscoelasticity with pressure traction load on surface and constrained to one-dimensional motion.The fading memory terms require an unloaded initial configuration, so the load starts in the second time step.With using modules/libraries

sfepy.base.base sfepy.mechanics.matcoefssfepy.homogenization.utils

Page 30: Python  Programming

PYTHON PROGRAMMING

References

Mark Lutz & David Ascher, Learning Python, O’Reilly, 1999 (Help for Programmers)

Mark Lutz, Programming Python, O’Reilly, 2001 (Solutions for Python Programmers)

Documentations from internet sources


Top Related