30
by

What advantages has it? Programming.pdf · Mark Lutz & David Ascher, Learning Python, O’Reilly, 1999 (Help for Programmers) Mark Lutz, Programming Python, O’Reilly, 2001 (Solutions

  • Upload
    others

  • View
    14

  • Download
    0

Embed Size (px)

Citation preview

Page 1: What advantages has it? Programming.pdf · Mark Lutz & David Ascher, Learning Python, O’Reilly, 1999 (Help for Programmers) Mark Lutz, Programming Python, O’Reilly, 2001 (Solutions

by

Page 2: What advantages has it? Programming.pdf · Mark Lutz & David Ascher, Learning Python, O’Reilly, 1999 (Help for Programmers) Mark Lutz, Programming Python, O’Reilly, 2001 (Solutions

What advantages has it?

Page 3: What advantages has it? Programming.pdf · Mark Lutz & David Ascher, Learning Python, O’Reilly, 1999 (Help for Programmers) Mark Lutz, Programming Python, O’Reilly, 2001 (Solutions

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: What advantages has it? Programming.pdf · Mark Lutz & David Ascher, Learning Python, O’Reilly, 1999 (Help for Programmers) Mark Lutz, Programming Python, O’Reilly, 2001 (Solutions

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: What advantages has it? Programming.pdf · Mark Lutz & David Ascher, Learning Python, O’Reilly, 1999 (Help for Programmers) Mark Lutz, Programming Python, O’Reilly, 2001 (Solutions

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. By

Typing a ‘dot’ after the object variable name, we can access a list

of methods associated with it.

Examples

>>> a=“hello”

>>> a.capitalize()

‘Hello’

Basic Objects

Page 6: What advantages has it? Programming.pdf · Mark Lutz & David Ascher, Learning Python, O’Reilly, 1999 (Help for Programmers) Mark Lutz, Programming Python, O’Reilly, 2001 (Solutions

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

>>> i

3

>>>a=“hello”+“world!”

>>>a

“hello world!”

>>>a=“hello”

>>>b=a

>>>print a,b

hello hello

>>>b=“world!”

>>>print a,b

hello world!

Examples

Basic Objects

Page 7: What advantages has it? Programming.pdf · Mark Lutz & David Ascher, Learning Python, O’Reilly, 1999 (Help for Programmers) Mark Lutz, Programming Python, O’Reilly, 2001 (Solutions

A list is a collection of other Python objects. Lists can contain a variety

of 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. There

is an access to individual elements of a list is through the [] operator (as

In 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: What advantages has it? Programming.pdf · Mark Lutz & David Ascher, Learning Python, O’Reilly, 1999 (Help for Programmers) Mark Lutz, Programming Python, O’Reilly, 2001 (Solutions

Simple Python program in the Editor (e.g. within Spyder). You can give

a name, e.g. PythonObjects.py, ‘py’ extension refers to a Python file.

# Floats and integers

print 2**10 #2 to the power 10

x=0.5

print 2.5*x/3

# Strings

s=“Hello World!”

print 3*s # implies concatenation

# Lists

a=[0,1,2,3] # list, not an array or vector

b=range(4) # list, with the same contents as a

print a,b

print 3*a # implies concatenation

Python Scripts

File Edit Format Run Options Windows Help

PythonObjects.py-…

Page 9: What advantages has it? Programming.pdf · Mark Lutz & David Ascher, Learning Python, O’Reilly, 1999 (Help for Programmers) Mark Lutz, Programming Python, O’Reilly, 2001 (Solutions

The following output appears in the Console window after running

the code PythonObjects.py

1024

0.416666666667

Hello 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: What advantages has it? Programming.pdf · Mark Lutz & David Ascher, Learning Python, O’Reilly, 1999 (Help for Programmers) Mark Lutz, Programming Python, O’Reilly, 2001 (Solutions

The following example illustrates the use of ‘for’, ‘if’ and ‘while’

commands in Python.

# Flow control in Python

for 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: What advantages has it? Programming.pdf · Mark Lutz & David Ascher, Learning Python, O’Reilly, 1999 (Help for Programmers) Mark Lutz, Programming Python, O’Reilly, 2001 (Solutions

The following output appears in the Console window

after running the code FControl.py

0 0

1 1

2 4

3 9

4 16

5 26

6 37

7 50

8 66

9 83

-------------------------

Output

Page 12: What advantages has it? Programming.pdf · Mark Lutz & David Ascher, Learning Python, O’Reilly, 1999 (Help for Programmers) Mark Lutz, Programming Python, O’Reilly, 2001 (Solutions

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

>>> a

7

User Input

Page 13: What advantages has it? Programming.pdf · Mark Lutz & David Ascher, Learning Python, O’Reilly, 1999 (Help for Programmers) Mark Lutz, Programming Python, O’Reilly, 2001 (Solutions

There are numerical objects (arrays, dot product, etc) and methods

that are not part of the core Python language, but are part of the numpy

and 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 Pylab

import pylab as py #(or e.g. import numpy as py)

x=py.array([0,1,2,3]) # creates an array from a list

y=x+x # this is now an addition not concatenation

print y

a=py.pi # the number 3.1415926535897931

theta=py.arange(-a,a,0.1) # sample from -pi to +pi using arange

z=py.sin(theta) # compute sin(theta) for all samples

print sz.max() # find the maximum value

Numerical Python

File Edit Format Run Options Windows Help

UsingPylab.py-…

Page 14: What advantages has it? Programming.pdf · Mark Lutz & David Ascher, Learning Python, O’Reilly, 1999 (Help for Programmers) Mark Lutz, Programming Python, O’Reilly, 2001 (Solutions

The resulting output in the Console window is shown

[0 2 4 6]

0.999923257564

Output

Page 15: What advantages has it? Programming.pdf · Mark Lutz & David Ascher, Learning Python, O’Reilly, 1999 (Help for Programmers) Mark Lutz, Programming Python, O’Reilly, 2001 (Solutions

Python also supports the use of complex numbers through the use of

symbol “j” that represents −1.

>>> a=3+4j

>>> a**2

‘(-7+24j)'

>>> sqrt(a) # it is needed to import Numerical Python before

‘(2+1j)

Complex Numbers

Examples

Page 16: What advantages has it? Programming.pdf · Mark Lutz & David Ascher, Learning Python, O’Reilly, 1999 (Help for Programmers) Mark Lutz, Programming Python, O’Reilly, 2001 (Solutions

There are numerical objects (arrays, dot product, etc) and methods

that are not part of the core Python language, but are part of the numpy

and 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 Algebra

import pylab as py #(or e.g. import numpy as py)

A=py.array([[2,-1],[-1,2]]) # creates an array from a list

B=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: What advantages has it? Programming.pdf · Mark Lutz & David Ascher, Learning Python, O’Reilly, 1999 (Help for Programmers) Mark Lutz, Programming Python, O’Reilly, 2001 (Solutions

# 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: What advantages has it? Programming.pdf · Mark Lutz & David Ascher, Learning Python, O’Reilly, 1999 (Help for Programmers) Mark Lutz, Programming Python, O’Reilly, 2001 (Solutions

Pylab supports 2D and 3D plotting via matlibplot

(http://matplot.souceforge.net) package that can be

Accessed through pylab.

Plots

MatLibPlot.py-…

File Edit Format Run Options Windows Help

# 2-D plots using Python/Pylab

import pylab as py

pi=py.pi

x=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: What advantages has it? Programming.pdf · Mark Lutz & David Ascher, Learning Python, O’Reilly, 1999 (Help for Programmers) Mark Lutz, Programming Python, O’Reilly, 2001 (Solutions

The resulting output in the Console window is shown

Plots

Page 20: What advantages has it? Programming.pdf · Mark Lutz & David Ascher, Learning Python, O’Reilly, 1999 (Help for Programmers) Mark Lutz, Programming Python, O’Reilly, 2001 (Solutions

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 functions

SampleFunctions.py-…

File Edit Format Run Options Windows Help

# Module consists of 1-D functions, and derivatives of some of these funcs.

import pylab as py

def f1(x):

f=-x*py.exp(-x**2) # returns -x*exp(-x**2)

return f

def 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: What advantages has it? Programming.pdf · Mark Lutz & David Ascher, Learning Python, O’Reilly, 1999 (Help for Programmers) Mark Lutz, Programming Python, O’Reilly, 2001 (Solutions

The resulting output in the Console window is shown below

>>> import SimpleFunctions

>>> SimpleFunctions.f1(2)

-0.036631277777468357

Modules

Page 22: What advantages has it? Programming.pdf · Mark Lutz & David Ascher, Learning Python, O’Reilly, 1999 (Help for Programmers) Mark Lutz, Programming Python, O’Reilly, 2001 (Solutions

Python offers a rich set language features for passing arguments into

Functions. 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 arguments

def 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: What advantages has it? Programming.pdf · Mark Lutz & David Ascher, Learning Python, O’Reilly, 1999 (Help for Programmers) Mark Lutz, Programming Python, O’Reilly, 2001 (Solutions

The resulting output in the Console window is shown below

0.3 4 hello

0.4 4 hello

0.5 5 hello

0.5 5 hello

0.6 4 world

0.6 4 world

0.7 7 world

Function Arguments

Page 24: What advantages has it? Programming.pdf · Mark Lutz & David Ascher, Learning Python, O’Reilly, 1999 (Help for Programmers) Mark Lutz, Programming Python, O’Reilly, 2001 (Solutions

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

>>> 5.0/2

2.5

>>> 5/2

2

>>> from __future__ import division

>>> 5/2

2.5

>>> A=array([[2,1],[1,2]]); x=array([1,-1])

>>> b=A*x

>>> b

array([[2,-1],

[1,-2]]]) # the ‘*’operator is interpreted as 𝑏𝑖𝑗 = 𝐴𝑖𝑗𝑥𝑗

>>> b=dot(A,x)

>>> b

array([1,-1]) # the ‘dot’ operator is interpreted as 𝑏𝑖𝑗 = 𝐴𝑖𝑗𝑥𝑗 𝑗

Python Quirks

Examples

Page 25: What advantages has it? Programming.pdf · Mark Lutz & David Ascher, Learning Python, O’Reilly, 1999 (Help for Programmers) Mark Lutz, Programming Python, O’Reilly, 2001 (Solutions

An important concept “class”, in object oriented languages such Python,

Is a collection of objects and methods that are closely related.

import pylab as py

class 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 v

if __name__=="__main__":

p=Polynomial([1,-1,2])

a=p.a

print a

st=__str__();

print st

p1=evaluate(2.0)

print p1

import PolynomialClass

from PolynomialClass import Polynomial

def __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: What advantages has it? Programming.pdf · Mark Lutz & David Ascher, Learning Python, O’Reilly, 1999 (Help for Programmers) Mark Lutz, Programming Python, O’Reilly, 2001 (Solutions

SfePy - 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: What advantages has it? Programming.pdf · Mark Lutz & David Ascher, Learning Python, O’Reilly, 1999 (Help for Programmers) Mark Lutz, Programming Python, O’Reilly, 2001 (Solutions

Biot problem - deformable

porous mediumm

With using modules/lib.:

numpy, sfepy

Page 28: What advantages has it? Programming.pdf · Mark Lutz & David Ascher, Learning Python, O’Reilly, 1999 (Help for Programmers) Mark Lutz, Programming Python, O’Reilly, 2001 (Solutions

Biot problem - deformable porous medium with the no-penetration boundary condition on boundary region With using modules/libraries: sfepy.linalg, sfepy.mechanics.matcoefs

Page 29: What advantages has it? Programming.pdf · Mark Lutz & David Ascher, Learning Python, O’Reilly, 1999 (Help for Programmers) Mark Lutz, Programming Python, O’Reilly, 2001 (Solutions

Linear 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.matcoefs sfepy.homogenization.utils

Page 30: What advantages has it? Programming.pdf · Mark Lutz & David Ascher, Learning Python, O’Reilly, 1999 (Help for Programmers) Mark Lutz, Programming Python, O’Reilly, 2001 (Solutions

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