Python Intro
description
Transcript of Python Intro
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Mechanika teoretycznaPython w obliczeniach naukowych
Janusz Szwabiski
Instytut Fizyki Teoretycznej UWr
11 padziernika 2005
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Co to takiego?Gdzie szuka?Wbudowana pomocZaawansowany kalkulatorElementy jzyka
Python
interpretowany, wysokopoziomowy jzyk programowania
darmowy
obiektowy
dynamiczna semantyka i elegancka skadnia
bogata biblioteka standardowa
idealny do tworzenia skryptw i tzw. byskawicznegorozwania aplikacji
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Co to takiego?Gdzie szuka?Wbudowana pomocZaawansowany kalkulatorElementy jzyka
Zasoby w sieci
Strona gwna Pythonahttp://www.python.org
Strona polska Pythonahttp://www.python.org.pl
Narzdzia naukowe dla Pythonahttp://www.scipy.org/
VPython - wizualizacje 3Dhttp://vpython.org/
Janusz Szwabiski Mechanika teoretyczna
http://www.python.orghttp://www.python.org.plhttp://www.scipy.org/http://vpython.org/
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Co to takiego?Gdzie szuka?Wbudowana pomocZaawansowany kalkulatorElementy jzyka
G. van Rossum, Python Tutorialhttp://www.python.org/doc/2.3.4/tut/tut.html
M. Pilgrim, Dive into Pythonhttp://diveintopython.org/
A. Downey, J. Elkner, C. Meyers, How to think like acomputer scientist
http://www.greenteapress.com/thinkpython/
B. Eckel, Thinking in Pythonhttp://www.mindview.net/Books/TIPython
Janusz Szwabiski Mechanika teoretyczna
http://www.python.org/doc/2.3.4/tut/tut.htmlhttp://diveintopython.org/http://www.greenteapress.com/thinkpython/http://www.mindview.net/Books/TIPython
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Co to takiego?Gdzie szuka?Wbudowana pomocZaawansowany kalkulatorElementy jzyka
D. Mertz, Text Processing in Pythonhttp://gnosis.cx/TPiP/
F. Lundh, An introduction to Tkinterhttp://www.pythonware.com/library/tkinter/introduction/
Janusz Szwabiski Mechanika teoretyczna
http://gnosis.cx/TPiP/http://www.pythonware.com/library/tkinter/introduction/
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Co to takiego?Gdzie szuka?Wbudowana pomocZaawansowany kalkulatorElementy jzyka
Pomoc
szwab in@voya ger : ~ $ pythonPython 2 . 4 . 2 (#2 , Sep 30 2005 , 2 1 : 1 9 : 0 1 )[ GCC 4 . 0 . 2 20050808 ( p r e r e l e a s e ) ( Ubuntu 4.0.1 4 ubuntu8 ) ] on l i n u x 2Type " h e l p " , " c o p y r i g h t " , " c r e d i t s " or " l i c e n s e " f o r more i n f o r m a t i o n .>>> h e l pType h e l p ( ) f o r i n t e r a c t i v e he lp , or h e l p ( o b j e c t ) f o r h e l p about o b j e c t .>>> h e l p ( )
Welcome to Python 2 . 4 ! This i s the o n l i n e h e l p u t i l i t y .
I f t h i s i s your f i r s t t ime u s i n g Python , you s h o u l d d e f i n i t e l y check outthe t u t o r i a l on the I n t e r n e t at h t t p : / /www. python . org / doc / t u t / .
E n t e r the name o f any module , keyword , or t o p i c to g e t h e l p on w r i t i n gPython programs and u s i n g Python modules . To q u i t t h i s h e l p u t i l i t y andr e t u r n to the i n t e r p r e t e r , j u s t t y p e " q u i t " .
To g e t a l i s t o f a v a i l a b l e modules , keywords , or t o p i c s , t y p e " modules " ," keywords " , or " t o p i c s " . Each module a l s o comes with a onel i n e summaryo f what i t does ; to l i s t the modules whose summaries c o n t a i n a g i v e n wordsuch as "spam " , t y p e " modules spam " .
he lp >
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Co to takiego?Gdzie szuka?Wbudowana pomocZaawansowany kalkulatorElementy jzyka
he lp > modules
P l e a s e w a i t a moment w h i l e I g a t h e r a l i s t o f a l l a v a i l a b l e modules . . .
ADNS TgaImagePlug in dumbdbm p y i d 3 l i bArg ImagePlug in T i f f I m a g e P l u g i n dummy_thread pyosd ( package )A r r a y P r i n t e r T i f f T a g s dummy_threading pyunoBaseHTTPServer Tix easydoc q u o p r iB a s t i o n T k c o n s t a n t s easydocp randomB d f F o n t F i l e Tkdnd e m a i l ( package ) r a n l i bB i c y c l e R e p a i r M a n _ I d l e T k i n t e r e n c o d i n g s ( package ) r eBmpImagePlugin U s e r A r r a y epydoc ( package ) r e a d l i n eB u f r S t u b I m a g e P l u g i n U s e r D i c t e r r n o r e c o n v e r tCDDB U s e r L i s t eunuchs ( package ) r e g e xCDROM U s e r S t r i n g e x c e p t i o n s r e g e x _ s y n t a xCGIHTTPServer Wal ImageFi le f c n t l r e g s u bCORBA WmfImagePlugin f i l e c m p r e p o r t l a b ( package )Canvas XVThumbImagePlugin f i l e i n p u t r e p r...
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Co to takiego?Gdzie szuka?Wbudowana pomocZaawansowany kalkulatorElementy jzyka
he lp > mathHelp on module math :
NAMEmath
FILE/ u s r / l i b / python2 . 4 / l i b dyn load /math . so
MODULE DOCSh t t p : / /www. python . org / doc / c u r r e n t / l i b / modulemath . html
DESCRIPTIONThis module i s a l w a y s a v a i l a b l e . I t p r o v i d e s a c c e s s to themathemat ica l f u n c t i o n s d e f i n e d by the C s t a n d a r d .
FUNCTIONSacos ( . . . )
acos ( x )
Return the a r c c o s i n e ( measured i n r a d i a n s ) o f x ....
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Co to takiego?Gdzie szuka?Wbudowana pomocZaawansowany kalkulatorElementy jzyka
he lp > keywords
Here i s a l i s t o f the Python keywords . E n t e r any keyword to g e t more h e l p .
and e l s e import r a i s ea s s e r t e x c e p t i n r e t u r nbreak exec i s t r yc l a s s f i n a l l y lambda w h i l ec o n t i n u e f o r not y i e l dd e f from ord e l g l o b a l p a s se l i f i f p r i n t
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Co to takiego?Gdzie szuka?Wbudowana pomocZaawansowany kalkulatorElementy jzyka
he lp > t o p i c s
Here i s a l i s t o f a v a i l a b l e t o p i c s . E n t e r any t o p i c name to g e t more h e l p .
ASSERTION DELETION LOOPING SEQUENCESASSIGNMENT DICTIONARIES MAPPINGMETHODS SHIFTINGATTRIBUTEMETHODS DICTIONARYLITERALS MAPPINGS SLICINGSATTRIBUTES DYNAMICFEATURES METHODS SPECIALATTRIBUTESAUGMENTEDASSIGNMENT ELLIPSIS MODULES SPECIALIDENTIFIERSBACKQUOTES EXCEPTIONS NAMESPACES SPECIALMETHODSBASICMETHODS EXECUTION NONE STRINGMETHODSBINARY EXPRESSIONS NUMBERMETHODS STRINGSBITWISE FILES NUMBERS SUBSCRIPTSBOOLEAN FLOAT OBJECTS TRACEBACKSCALLABLEMETHODS FORMATTING OPERATORS TRUTHVALUECALLS FRAMEOBJECTS PACKAGES TUPLELITERALSCLASSES FRAMES POWER TUPLESCODEOBJECTS FUNCTIONS PRECEDENCE TYPEOBJECTSCOERCIONS IDENTIFIERS PRINTING TYPESCOMPARISON IMPORTING PRIVATENAMES UNARYCOMPLEX INTEGER RETURNING UNICODECONDITIONAL LISTLITERALS SCOPINGCONVERSIONS LISTS SEQUENCEMETHODS1DEBUGGING LITERALS SEQUENCEMETHODS2
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Co to takiego?Gdzie szuka?Wbudowana pomocZaawansowany kalkulatorElementy jzyka
he lp > q u i t
You a r e now l e a v i n g h e l p and r e t u r n i n g to the Python i n t e r p r e t e r .I f you want to ask f o r h e l p on a p a r t i c u l a r o b j e c t d i r e c t l y from thei n t e r p r e t e r , you can t y p e " h e l p ( o b j e c t ) " . E x e c u t i n g " h e l p ( s t r i n g ) "has the same e f f e c t as t y p i n g a p a r t i c u l a r s t r i n g at the he lp > prompt .
>>>
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Co to takiego?Gdzie szuka?Wbudowana pomocZaawansowany kalkulatorElementy jzyka
Zaawansowany kalkulator
>>> 2+24>>> x=20>>> y=23>>> xy120>>> _0.11 2 . 0
>>> a , b=3 ,56>>> a , b( 3 , 56)
>>> a3>>> b56>>> 7/32>>> 7.0/32.3333333333333335
>>> x=y=z=0>>> x , y , z( 0 , 0 , 0)
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Co to takiego?Gdzie szuka?Wbudowana pomocZaawansowany kalkulatorElementy jzyka
operatory arytmetyczne+ /
komentarze>>> 7/3 # d z i e l e n i e c a l k o w i t e zwraca l i c z b e z a o k r a g l o n a w d o l2
liczby zespolone>>> complex ( 2 , 3 )(2+3 j )>>> 1 j 1J(1+0 j )>>> a = 1 . 5 + 0 . 5 j>>> a . r e a l1 . 5
>>> a . imag0 . 5
>>> abs ( a )1 .5811388300841898
>>> 3a(4 .5+1.5 j )
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Co to takiego?Gdzie szuka?Wbudowana pomocZaawansowany kalkulatorElementy jzyka
Pierwszy program w Pythonie
plik tekstowy o dowolnej nazwie, np. rkwad.py# rkwad . py# Program o b l i c z a j a c y p i e r w i a s t k i# r z e c z y w i s t e t r o j m i a n u kwadratowego
import math
a , b , c = i n p u t ( " Podaj w s p o l c z y n n i k i ( a , b , c ) : " )pd = math . s q r t ( b2 4ac )x1 = (b+pd )/(2 a )x2 = (bpd )/(2 a )p r i n t "\ n P i e r w i a t k i wynosza : x1 =", x1 , " x2 =", x2
wywoanie w konsoliszwab in@voya ger : ~ / UniWroclaw / Talks / P y t h o n I n t r o $ python rkwad . pyPodaj w s p o l c z y n n i k i ( a , b , c ) : 1 ,4 ,2P i e r w i a t k i wynosza : x1= 0.585786437627 x2= 3.41421356237szwabin@voya ger : ~ / UniWroclaw / Talks / P y t h o n I n t r o $ python rkwad . pyPodaj w s p o l c z y n n i k i ( a , b , c ) : 1 ,1 ,1Traceback ( most r e c e n t c a l l l a s t ) :
F i l e " rkwad . py " , l i n e 8 , i n ?pd = math . s q r t ( b2 4ac )
V a l u e E r r o r : math domain e r r o r
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Co to takiego?Gdzie szuka?Wbudowana pomocZaawansowany kalkulatorElementy jzyka
Moduy
pliki zawierajce instrukcje Pythona
definicje z moduu mog by importowane
do przegldania moduw suy funkcja dir()
>>> import math>>> d i r ( math )
[ __doc__ , __fi le__ , __name__ , acos , a s i n , atan , atan2 , c e i l , cos , cosh , d e g r e e s , e , exp , fabs , f l o o r , fmod , f r e x p , hypot , ldexp , log , log10 , modf , p i , pow , r a d i a n s , s i n , s i n h , s q r t , tan , tanh ]
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Co to takiego?Gdzie szuka?Wbudowana pomocZaawansowany kalkulatorElementy jzyka
kilka sposobw importowania
>>> import math>>> a=math . s q r t ( 2 )
>>> import math as m>>> a=m. s q r t ( 2 )
>>> from math import >>> a=s q r t ( 2 )
>>> from math import s q r t as squareRoot>>> a=squareRoot ( 2 )
moliwo tworzenia wasnych moduw
Global Module Indexhttp://www.python.org/doc/2.4.2/modindex.html
Python Library Referencehttp://www.python.org/doc/2.4.2/lib/lib.html
Janusz Szwabiski Mechanika teoretyczna
http://www.python.org/doc/2.4.2/modindex.htmlhttp://www.python.org/doc/2.4.2/lib/lib.html
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Co to takiego?Gdzie szuka?Wbudowana pomocZaawansowany kalkulatorElementy jzyka
acuchy znakw
>>> s1 = "To j e s t l a n c u c h znakow ">>> s2 = To j e s t i n n y l a n c u c h znakow >>> s3 = """ To j e s t l a n c u c h znakow , k t o r y
r o z c i a g a s i e na w i e l e w i e r s z y """>>> s4 = "\" Cytowanie \"">>> p r i n t s4" Cytowanie ">>> " Wita j " + " s w i e c i e " Wita j s w i e c i e
>>> " Wita j "3 W i t a j W i t a j W i t a j
>>> g r e e t = " Wita j ">>> p r i n t g r e e t [ 0 ]W>>> g r e e t [ 2 : 4 ] ta
>>> g r e e t [ 2 : ] t a j
>>> l e n ( g r e e t )5>>> p r i n t g r e e t [ 1] , g r e e t [2]j a
>>> s t r ( 1 0 )10
>>> e v a l ( 3+4 )7
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Co to takiego?Gdzie szuka?Wbudowana pomocZaawansowany kalkulatorElementy jzyka
acuchw znakw w Pythonie nie mona modyfikowa!
>>> s="Ala ma kota ">>> s [0 ]="O"Traceback ( most r e c e n t c a l l l a s t ) :
F i l e "< s t d i n >", l i n e 1 , i n ?TypeError : o b j e c t doesn t s u p p o r t i tem a s s i g m e n t
biblioteka standardowa string:capitalize(s) rfind(s,substring)
upper(s) replace(s,old,new)
lower(s) strip(s)
ljust(s) rstrip(s)
center(s) lstrip(s)
rjust(s) split(s,char)
count(substring,s) join(stringList)
find(s,substring)
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Co to takiego?Gdzie szuka?Wbudowana pomocZaawansowany kalkulatorElementy jzyka
Zoone typy danych - listy
>>> l i s t a =[" a " , " b " , " p r z y k l a d " ]>>> l i s t a [ 0 ] a
>>> l i s t a [ 2 ] p r z y k l a d
>>> l i s t a [1] p r z y k l a d
>>> l i s t a . append ( nowy )>>> l i s t a[ a , b , p r z y k l a d , nowy ]
>>> l i s t a . i n s e r t ( 2 , " t r z e c i " )>>> l i s t a[ a , b , t r z e c i , p r z y k l a d , nowy ]
>>> l i s t a . extend ( [ j eden , dwa ] )>>> l i s t a[ a , b , t r z e c i , p r z y k l a d , nowy , j eden , dwa ]
>>> l i s t a . i n d e x ( t r z e c i )2>>> c i n l i s t aF a l s e
>>> l i s t a . remove ( nowy )>>> l i s t a[ a , b , t r z e c i , p r z y k l a d , j eden , dwa ]
>>> l i s t a . pop ( )dwa
>>> l i s t a[ a , b , t r z e c i , p r z y k l a d , j eden ]
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Co to takiego?Gdzie szuka?Wbudowana pomocZaawansowany kalkulatorElementy jzyka
>>> l i s t a +[ inny , e lement ][ a , b , t r z e c i , p r z y k l a d , j eden , inny , e lement ]
>>> l i =[1 ,2 ]3[ 1 , 2 , 1 , 2 , 1 , 2 ]
>>> l i . s o r t ( )>>> l i[ 1 , 1 , 1 , 2 , 2 , 2 ]
>>> l i = [ 1 , 2 , 3 , 4 ]>>> l i 2 = [ elem2 f o r elem i n l i ]>>> l i 2[ 1 , 4 , 9 , 1 6 ]
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Co to takiego?Gdzie szuka?Wbudowana pomocZaawansowany kalkulatorElementy jzyka
Zoone typy danych - krotki (ang. tuples)
>>> t = ( " a " , " b " , " p r z y k l a d " )>>> t [ 0 ] a
>>> t [ 2 ] p r z y k l a d
>>> t [1] p r z y k l a d
>>> a i n tTrue
Uwaga!
Krotki nie mog by modyfikowane!
>>> t [2 ]=3Traceback ( most r e c e n t c a l l l a s t ) :
F i l e "< s t d i n >", l i n e 1 , i n ?TypeError : o b j e c t doesn t s u p p o r t i tem a s s i g n m e n t
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Co to takiego?Gdzie szuka?Wbudowana pomocZaawansowany kalkulatorElementy jzyka
Zoone typy danych - sowniki
>>> d = {" s e r v e r " : " d e f i a n t " , " u s e r " : " szwab in "}>>> d{ user : szwab in , s e r v e r : d e f i a n t }
>>> d [ s e r v e r ] d e f i a n t
>>> d [ s e r v e r ] = voyager >>> d{ user : szwab in , s e r v e r : voyager }
>>> d [ u id ]=501>>> d{ u id : 501 , user : szwab in , s e r v e r : voyager }
>>> d e l d [ u id ]>>> d{ user : szwab in , s e r v e r : voyager }
>>> d . c l e a r ( )>>> d{}>>> d = {" s e r v e r " : " d e f i a n t " , " u s e r " : " szwab in "}>>> d{ user : szwab in , s e r v e r : d e f i a n t }
>>> d . k e y s ( )[ user , s e r v e r ]
>>> d . v a l u e s ( )[ szwab in , d e f i a n t ]
>>> d . i t e m s ( )[ ( user , szwab in ) , ( s e r v e r , d e f i a n t ) ]
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Co to takiego?Gdzie szuka?Wbudowana pomocZaawansowany kalkulatorElementy jzyka
>>> d . c l e a r ( )>>> d{}>>> d = {" s e r v e r " : " d e f i a n t " , " u s e r " : " szwab in "}>>> d{ user : szwab in , s e r v e r : d e f i a n t }
>>> d . k e y s ( )[ user , s e r v e r ]
>>> d . v a l u e s ( )[ szwab in , d e f i a n t ]
>>> d . i t e m s ( )[ ( user , szwab in ) , ( s e r v e r , d e f i a n t ) ]
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Co to takiego?Gdzie szuka?Wbudowana pomocZaawansowany kalkulatorElementy jzyka
Ptla while
>>> a , b =0,1>>> w h i l e b == =
kada sekwencja o dugoci niezerowej oznacza prawd
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Co to takiego?Gdzie szuka?Wbudowana pomocZaawansowany kalkulatorElementy jzyka
Ptla if
>>> x = i n t ( raw_input ( " Podaj l i c z b e : " ) )>>> i f x < 0 :. . . p r i n t l i c z b a ujemna . . . e l i f x == 0 :. . . p r i n t zero . . . e l s e :. . . p r i n t l i c z b a dodatn ia . . .
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Co to takiego?Gdzie szuka?Wbudowana pomocZaawansowany kalkulatorElementy jzyka
Ptla for
iteracja po elementach sekwencji:
>>> a = [ jeden , dwa , t r z y ]>>> f o r x i n a :. . . p r i n t x , l e n ( x ). . .j e d e n 5dwa 3t r z y 4
iteracja od liczby do liczby z uyciem funkcji range()
>>> f o r i i n range ( 1 0 ) :. . . p r i n t i ,. . .0 1 2 3 4 5 6 7 8 9
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Co to takiego?Gdzie szuka?Wbudowana pomocZaawansowany kalkulatorElementy jzyka
Definiowanie wasnych funkcji
>>> d e f f i b ( n ) :. . . " C iag F i b o n a c c i e g o ". . . a , b = 0 , 1. . . w h i l e b < n :. . . p r i n t b ,. . . a , b = b , a+b. . .
>>> f i b (2000)1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597
>>> d e f f i b 2 ( n ) :. . . " W a r t o s c i c i a g u F i b o n a c c i e g o ". . . wynik = [ ]. . . a , b = 0 , 1. . . w h i l e b < n :. . . wynik . append ( b ). . . a , b = b , a+b. . . r e t u r n wynik. . .
>>> f100 = f i b 2 (100)>>> f100[ 1 , 1 , 2 , 3 , 5 , 8 , 13 , 21 , 34 , 55 , 8 9 ]
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Co to takiego?Gdzie szuka?Wbudowana pomocZaawansowany kalkulatorElementy jzyka
Odczyt z i zapis do pliku
szwab in@voya ger : ~ $ c a t l u d . dat1850.0 1 .4021950.0 2 .4861960.0 3 .0141970.0 3 .6831985.0 4 .8422000.0 6 .1272025.0 8 .177
>>> import s t r i n g>>> x = [ ] ; y =[ ]>>> f=open ( l u d . dat , r )>>> l i n e s=f . r e a d l i n e s ( )>>> f o r l i n e i n l i n e s :. . . x v a l , y v a l=l i n e . s p l i t ( ). . . x . append ( f l o a t ( x v a l ) ). . . y . append ( f l o a t ( y v a l ) ). . .
>>> f . c l o s e ( )>>> x[ 1 8 5 0 . 0 , 1 9 5 0 . 0 , 1 9 6 0 . 0 , 1 9 7 0 . 0 , 1 9 8 5 . 0 , 2 0 0 0 . 0 , 2 0 2 5 . 0 ]
>>> y[1 .40199 99 9 9 9 9 99 9 9 9 , 2 .4860000000000002 , 3 .0139999999999998 ,3 .6829999999999998 , 4 .8419999999999996 , 6 .1269999999999998 ,8 .176999999 99 99 9 96 ]
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Co to takiego?Gdzie szuka?Wbudowana pomocZaawansowany kalkulatorElementy jzyka
>>> x = [ 1 . 0 , 2 . 0 , 3 . 0 , 4 . 0 , 5 . 0 , 6 . 0 ]>>> y=[ i 2 f o r i i n x ]>>> f=open ( kwadrat . dat , w )>>> f o r i i n range ( l e n ( x ) ) :. . . f . w r i t e ( %g %g\n % ( x [ i ] , y [ i ] ) ). . .
>>> f . c l o s e ( )
szwab in@voya ger : ~ $ c a t kwadrat . dat1 12 43 94 165 256 36
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Elementy SciPySciPy w przykadach
SciPy
biblioteka numeryczna dla Pythona
strona gwnahttp://www.scipy.org
wymagania
gcc/g77Python z obsug biblioteki zlibNumerical Pythonbiblioteki Atlas i FFTW (wydajno!)WxPython, PyGist, GnuplotF2PY
Janusz Szwabiski Mechanika teoretyczna
http://www.scipy.org
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Elementy SciPySciPy w przykadach
Pierwsze kroki
sposoby importowania
>>> from s c i p y import
>>> import s c i p y
pomoc
>>> s c i p y . i n f o ( s c i p y . o p t i m i z e )O p t i m i z a t i o n Too l s
==================
A c o l l e c t i o n o f g e n e r a lpurpose o p t i m i z a t i o n r o u t i n e s .
fmin NelderMead Simplex a l g o r i t h m( u s e s o n l y f u n c t i o n c a l l s )
fmin_powel l Powel l s ( m o d i f i e d ) l e v e l s e t method ( u s e s o n l yf u n c t i o n c a l l s )
fmin_cg Nonl i n e a r ( PolakR u b i e r e ) c o n j u g a t e g r a d i e n t a l g o r i t h m( can use f u n c t i o n and g r a d i e n t ) .
.
.
.
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Elementy SciPySciPy w przykadach
kod rdowy uywanych funkcji
>>> s c i p y . s o u r c e ( s c i p y . i n t e g r a t e . o d e i n t )>>> s c i p y . s o u r c e ( s c i p y . i n t e g r a t e . o d e i n t )I n f i l e : / u s r / l i b / python2 . 4 / s i t epackages / s c i p y / i n t e g r a t e / odepack . py
d e f o d e i n t ( func , y0 , t , a r g s =() , Dfun=None , c o l _ d e r i v =0, f u l l _ o u t p u t =0,ml=None , mu=None , r t o l=None , a t o l=None , t c r i t =None , h0 =0.0 ,hmax=0.0 , hmin =0.0 , i x p r =0, mxstep =0, mxhni l =0, mxordn=12,mxords=5, p r i n t m e s s g =0):
""" I n t e g r a t e a system o f o r d i n a r y d i f f e r e n t i a l e q u a t i o n s .
D e s c r i p t i o n :
S o l v e a system o f o r d i n a r y d i f f e r e n t i a l e q u a t i o n s Us ing l s o d a from theFORTRAN l i b r a r y odepack .
S o l v e s the i n i t i a l v a l u e prob lem f o r s t i f f o r nons t i f f s y s t e m so f f i r s t o r d e r odes :
dy / dt = f u n c ( y , t0 , . . . ) where y can be a v e c t o r ....
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Elementy SciPySciPy w przykadach
Moduy dostpne w pakiecie
cluster algorytmy klasteryzacji danych
cow pakiet do programowania rwnolegego
fftpack domylny pakiet FFT
fftw pakiet do FFT oparty o bibliotek FFTW
ga algorytmy genetyczne
gplt pakiet do wykresw w Gnuplocie
integrate cakowanie numeryczne
interpolate interpolacja
io funkcje wejcia/wyjcia
linalg algebra liniowa
optimize zagadnienia optymalizacji
plt pakiet do wykresw w WxPython
signal przetwarzanie sygnaw
special funkcje specjalne
stats funkcje statystyczne
xplt pakiet do wykresw w Gist
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Elementy SciPySciPy w przykadach
Macierze
tworzenie
>>> A1=s c i p y . mat ( [ 1 3 5 ; 2 5 1 ; 2 3 8 ] )>>> A2=s c i p y . mat ( [ 5 3 5 ; 2 3 1 ; 4 3 1 ] )>>> A1
Matr ix ( [ [ 1 , 3 , 5 ] ,[ 2 , 5 , 1 ] ,[ 2 , 3 , 8 ] ] )
dodawanie
>>> A1+A2Matr ix ( [ [ 6 , 6 , 1 0 ] ,
[ 4 , 8 , 2 ] ,[ 6 , 6 , 9 ] ] )
mnoenie przez skalar
>>> 2A1Matr ix ( [ [ 2 , 6 , 1 0 ] ,
[ 4 , 10 , 2 ] ,[ 4 , 6 , 1 6 ] ] )
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Elementy SciPySciPy w przykadach
mnoenie macierzy
>>> A1A2Matr ix ( [ [ 3 1 , 27 , 1 3 ] ,
[ 2 4 , 24 , 1 6 ] ,[ 4 8 , 39 , 2 1 ] ] )
macierz odwrotna
>>> A = s c i p y . mat ( [ 1 3 5 ; 2 5 1 ; 2 3 8 ] )>>> B = A . I>>> ABMatr ix ( [ [ 1 .00000000 e +00, 5 .55111512 e17, 4 .85722573 e17] ,
[ 1.38777878 e16, 1 .00000000 e +00, 7 .63278329 e17] ,[ 2.22044605 e16, 5 .55111512 e17, 1 .00000000 e +00] ] )
>>> C=s c i p y . l i n a l g . i n v (A)>>> ACMatr ix ( [ [ 1 .00000000 e00, 6.93889390 e17, 1 .04083409 e16] ,
[ 2.77555756 e16, 1 .00000000 e +00, 1 .31838984 e16] ,[ 3.33066907 e16, 0 .00000000 e +00, 1 .00000000 e +00] ] )
>>> s c i p y . round (AC)a r r a y ( [ [ 1 . , 0. , 0 . ] ,
[ 0. , 1 . , 0 . ] ,[ 0. , 0 . , 1 . ] ] )
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Elementy SciPySciPy w przykadach
wyznacznik
>>> A = s c i p y . mat ( [ 1 3 5 ; 2 5 1 ; 2 3 8 ] )>>> s c i p y . l i n a l g . det (A)25.000000000000004
norma
>>> A = s c i p y . mat ( [ 1 5 2 ; 2 4 1 ; 3 6 2 ] )>>> s c i p y . l i n a l g . norm (A , 2 )9 .918391609146008
>>> s c i p y . l i n a l g . norm (A , 1 )15>>> s c i p y . l i n a l g . norm (A , s c i p y . i n f )11
A1 = maxj=1,...,n
nX
i=1
|a |
A2 =p
max
A = maxi=1,...,n
nX
j=1
|a |
AE =
v
u
u
t
mX
i=1
nX
j=1
a2
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Elementy SciPySciPy w przykadach
wartoci i wektory wasne
>>> A = s c i p y . mat ( [ 1 5 2 ; 2 4 1 ; 3 6 2 ] )>>> la , v = s c i p y . l i n a l g . e i g (A)>>> l1 , l2 , l 3 = l a>>> p r i n t l1 , l2 , l 3(7.95791620491+0 j ) (1.25766470568+0 j ) (0.299748500767+0 j )>>> p r i n t v [ : , 0 ][0.5297175 0.44941741 0.71932146]>>> p r i n t v [ : , 1 ][0.90730751 0.28662547 0 . 3 0 7 6 3 4 3 9 ]>>> p r i n t v [ : , 2 ][ 0 .28380519 0.39012063 0 . 8 7 5 9 3 4 0 8 ]
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Elementy SciPySciPy w przykadach
Ukady rwna liniowych
>>> A = s c i p y . mat ( [ 1 3 5 ; 2 5 1 ; 2 3 8 ] )>>> b = s c i p y . mat ( [ 1 0 ; 8 ; 3 ] )>>> A . IbMatr ix ( [ [ 9 . 2 8 ] ,
[ 5 . 1 6 ] ,[ 0 . 7 6 ] ] )
>>> s c i p y . l i n a l g . s o l v e (A , b ) # l e p s z a metodaa r r a y ( [ [ 9 . 2 8 ] ,
[ 5 . 1 6 ] ,[ 0 . 7 6 ] ] )
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Elementy SciPySciPy w przykadach
Rwnania nieliniowe
>>> d e f fun ( x ) :. . . r e t u r n x2 2. . .
>>> s c i p y . o p t i m i z e . f s o l v e ( fun , 1 )1 .4142135623730947
>>> s c i p y . round (_22)0.0
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Elementy SciPySciPy w przykadach
Cakowanie
>>> d e f fun ( x ) :. . . r e t u r n s c i p y . exp(xx ). . .
>>> wynik = s c i p y . i n t e g r a t e . quad ( fun , s c i p y . I n f , s c i p y . I n f ) [ 0 ]>>> dokladny_wynik = s c i p y . s q r t ( s c i p y . p i )>>> wynikdok ladny_wynik2.2204460492503131 e16
>>> s c i p y . round (_)0.0
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Elementy SciPySciPy w przykadach
Rwnania rniczkowe zwyczajne
dN(t)
dt= N(t), N(0) = 1
>>> d e f d e r (N, t ) :. . . r e t u r n N. . .
>>> N0=1;>>> t=s c i p y . arange ( 0 , 1 0 . 0 , 0 . 1 ) ;>>> N=s c i p y . i n t e g r a t e . o d e i n t ( der , N0 , t ) ;>>> s c i p y . g p l t . p l o t ( t ,N)
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Elementy SciPySciPy w przykadach
SciPy w przykadach
Rozwi ukad rwna0
B
B
@
1 2 3 41 4 9 161 8 27 641 16 81 256
1
C
C
A
x =
0
B
B
@
21044190
1
C
C
A
Oblicz b Ax, gdzie x jest rozwizaniem numerycznym
>>> import s c i p y>>> A = s c i p y . mat ( [ 1 2 3 4 ; 1 4 9 1 6 ; 1 8 27 6 4 ; 1 16 81 2 5 6 ] )>>> b = s c i p y . mat ( [ 2 ; 1 0 ; 4 4 ; 1 9 0 ] )>>> r e s = s c i p y . l i n a l g . s o l v e (A, b )>>> r e sa r r a y ( [ [ 1 . ] ,
[ 1 . ] ,[ 1. ] ,[ 1 . ] ] )
>>> norma = s c i p y . l i n a l g . norm (bA r e s , s c i p y . i n f )>>> norma0 . 0
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Elementy SciPySciPy w przykadach
Oblicz cak1
2
Z
2
0exp
n
21/2
sin(x)o
dx
>>> import s c i p y>>> d e f fun ( x ) :. . . r e t u r n s c i p y . exp ( s c i p y . s i n ( x )/ s c i p y . s q r t ( 2 ) ) / ( 2 s c i p y . p i ). . .
>>> c a l k a = s c i p y . i n t e g r a t e . quad ( fun ,0 ,2 s c i p y . p i )>>> c a l k a(1 .1289609294 54 1 90 2 , 7 .4290708898647612 e09)
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Elementy SciPySciPy w przykadach
Ustal punkt, w ktrym przecinaj si krzywe y = 3x oraz y = ex
>>> import s c i p y>>> d e f fun ( x ) :. . . r e t u r n s c i p y . exp ( x)3x. . .
>>> pp = s c i p y . o p t i m i z e . f s o l v e ( fun , 1 )>>> pp0.61906128673594507
>>> fun ( pp )0 . 0
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Elementy SciPySciPy w przykadach
Znajd pierwiastki rzeczywiste rwnania
9x4
+ 18x3
+ 38x2 57x + 14 = 0
>>> import s c i p y>>> w i e l = s c i p y . p o l y 1 d ( [9 ,18 ,38 , 57 ,14 ])>>> p r i n t w i e l
4 3 29 x + 18 x + 38 x 57 x + 14>>> f o r x i n w i e l . r : #w i e l . r z a w i e r a w s z y s t k i e p i e r w i a s t k i. . . i f x . imag==0: p r i n t x. . .(0.666666666667+0 j )(0.333333333333+0 j )
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Elementy SciPySciPy w przykadach
Jest dana macierz hermitowska
A =
0
B
B
@
1 1 i 1 2i 1 3i1 + i 2 2 i 2 2i1 + 2i 2 + i 3 3 i1 + 3i 2 + 2i 3 + i 4
1
C
C
A
Znajd wartoci i wektory wasne macierzy A
>>> import s c i p y>>> A = s c i p y . mat ( [ 1 11 j 12 j 13 j ; 1+1 j 2 21 j 22 j ;
1+2 j 2+1 j 3 31 j ; 1+3 j 2+2 j 3+1 j 4 ] )>>> la , v=s c i p y . l i n a l g . e i g (A)>>> f o r l i n l a : p r i n t l. . .(10.3993569323 1.29665879217 e17 j )(1.22156553583+1.36699815578 e16 j )(0 .518667170807+1.4608912657 e16 j )(0.303541432686 4.07914215526 e17 j )
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
Elementy SciPySciPy w przykadach
Rozwi rwnanie opisujce ruch wahada matematycznego
+g
Rsin = 0
Wyniki przedstaw na wykresie.
>>> import s c i p y , math>>> p h i 0 =0.5>>> v0 =0.0>>> i n i t =[ ph i0 , v0 ]>>> d e f d e r ( ph i , t ) :. . . r e t u r n [ p h i [1] , math . s i n ( p h i [ 0 ] ) ]. . .
>>> t=s c i p y . arange ( 0 , 1 0 . 0 , 0 . 0 5 )>>> p h i=s c i p y . i n t e g r a t e . o d e i n t ( der , i n i t , t )>>> s c i p y . g p l t . p l o t ( t , p h i )
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
VPythonStudium przypadku - rzut poziomy
VPython
http://vpython.org
biblioteka do tworzenia grafiki 3D w Pythonie
zaawansowane animacje niewielkim nakadem si
Janusz Szwabiski Mechanika teoretyczna
http://vpython.org
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
VPythonStudium przypadku - rzut poziomy
Rzut poziomy
x
yy
x
v
0
0
0
gx = x0 + V0 t
y = y0 gt2
2
Cel
animacja lotu piki
narysowanie toru piki
wizualizacja wektora prdkoci piki
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
VPythonStudium przypadku - rzut poziomy
#!/ u s r / b i n / env python
from v i s u a l import
x0 , y0 = 10,6yz0=0v0 =4.0g =0.981s c e n e = d i s p l a y ( t i t l e =Rzut poziomy , width =400 , h e i g h t =400)s c e n e . a u t o s c a l e = 0z i e m i a = box ( pos =(x0 , yz0 , 0 ) , s i z e = ( 4 0 , 0 . 1 , 0 ) , c o l o r=c o l o r . b l u e )p i l k a = s p h e r e ( pos =(x0 , y0 , 0 ) , r a d i u s =0.5 , c o l o r=c o l o r . r e d )p i l k a . v e l o c i t y = v e c t o r ( v0 , 0 , 0 )wektor = arrow ( pos=p i l k a . pos , a x i s=p i l k a . v e l o c i t y , c o l o r=c o l o r . y e l l o w ,
s h a f t w i d t h =0.3)p i l k a . t r a i l = c u r v e ( c o l o r=p i l k a . c o l o r )t=0w h i l e 1 :
r a t e (100)p i l k a . pos = [ x0+v0t , y0g t t / 2 . 0 , 0 ]i f p i l k a . y < z i e m i a . y :
breakp i l k a . t r a i l . append ( pos=p i l k a . pos )p i l k a . v e l o c i t y=v e c t o r ( v0 ,gt , 0 )wektor . pos=p i l k a . poswektor . a x i s=p i l k a . v e l o c i t yt=t +.01
Janusz Szwabiski Mechanika teoretyczna
-
PythonPython w obliczeniach numerycznych
Wizualizacje w Pythonie
VPythonStudium przypadku - rzut poziomy
Janusz Szwabiski Mechanika teoretyczna
PythonCo to takiego?Gdzie szukac?Wbudowana pomocZaawansowany kalkulatorElementy jezyka
Python w obliczeniach numerycznychElementy SciPySciPy w przykladach
Wizualizacje w PythonieVPythonStudium przypadku - rzut poziomy