Python Intro

51
Python Python w obliczeniach numerycznych Wizualizacje w Pythonie Mechanika teoretyczna Python w obliczeniach naukowych Janusz Szwabiński Instytut Fizyki Teoretycznej UWr 11 października 2005 Janusz Szwabiński Mechanika teoretyczna

description

jhe

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