SymPy matematyka symboliczna w Pythonie

Podobne dokumenty
SymPy czyli matematyka w Pythonie

Wspomaganie obliczeń matematycznych. dr inż. Michał Michna

Wykład 7 - Inne moduły wspierające obliczenia numeryczne

Wspomaganie obliczeń matematycznych. dr inż. Michał Michna

dr inż. Michał Michna WSPOMAGANIE OBLICZEŃ MATEMATYCZNYCH

ELEKTROTECHNIKA Semestr 1 Rok akad / ZADANIA Z MATEMATYKI Zestaw Przedstaw w postaci algebraicznej liczby zespolone: (3 + 2j)(5 2j),

Program zajęć pozalekcyjnych z matematyki poziom rozszerzony- realizowanych w ramach projektu Przez naukę i praktykę na Politechnikę

83 Przekształcanie wykresów funkcji (cd.) 3

1.1. Rachunek zdań: alternatywa, koniunkcja, implikacja i równoważność zdań oraz ich zaprzeczenia.

PROGRAM KLASY Z ROZSZERZONĄ MATEMATYKĄ

Rozkład materiału: matematyka na poziomie rozszerzonym

Zagadnienia na egzamin licencjacki

Obliczenia Symboliczne

Wykład z okazji dnia liczby π

Tydzień nr 9-10 (16 maja - 29 maja), Równania różniczkowe, wartości własne, funkcja wykładnicza od operatora - Matematyka II 2010/2011L

Elementy logiki (4 godz.)

V. WYMAGANIA EGZAMINACYJNE

Wykorzystanie programów komputerowych do obliczeń matematycznych, cz. 2/2

Wykład Ćwiczenia Laboratorium Projekt Seminarium 15 30

Dział Rozdział Liczba h

ROZKŁAD MATERIAŁU DO II KLASY LICEUM (ZAKRES ROZSZERZONY) A WYMAGANIA PODSTAWY PROGRAMOWEJ.

Wykorzystanie programów komputerowych do obliczeń matematycznych

Równania liniowe i nieliniowe

Poradnik encyklopedyczny

Szczegółowy rozkład materiału dla klasy 3b poziom rozszerzny cz. 1 - liceum

Matematyka. rok akademicki 2008/2009, semestr zimowy. Konwersatorium 1. Własności funkcji

Wykorzystanie programów komputerowych do obliczeń matematycznych, cz. 2/2

Wykaz treści i umiejętności zawartych w podstawie programowej z matematyki dla IV etapu edukacyjnego

Propozycja szczegółowego rozkładu materiału dla 4-letniego technikum, zakres podstawowy i rozszerzony. Klasa I (90 h)

WYMAGANIA EDUKACYJNE NA POSZCZEGÓLNE OCENY MATEMATYKA STOSOWANA - KLASA II I. POWTÓRZENIE I UTRWALENIE WIADOMOŚCI Z ZAKRESU KLASY PIERWSZEJ

Standardy wymagań maturalnych z matematyki - matura

Rozkład materiału KLASA I

WYDZIAŁ PODSTAWOWYCH PROBLEMÓW TECHNIKI KARTA PRZEDMIOTU

WYKŁADY Z MATEMATYKI DLA STUDENTÓW UCZELNI EKONOMICZNYCH

Wykład Ćwiczenia Laboratorium Projekt Seminarium Liczba godzin zajęć zorganizowanych w Uczelni ,5 1

Standardy wymagań maturalnych z matematyki - matura 2010

Kierunek: Matematyka Poziom studiów: Studia II stopnia Forma i tryb studiów: Stacjonarne

Obliczenia Naukowe. Wykład 11:Pakiety do obliczeń: naukowych i inżynierskich Przegląd i porównanie. Bartek Wilczyński

Matematyki i Nauk Informacyjnych, Zakład Procesów Stochastycznych i Matematyki Finansowej B. Ogólna charakterystyka przedmiotu

Opis przedmiotu: Matematyka I

Ciągi liczbowe. Zbigniew Koza. Wydział Fizyki i Astronomii

Pakiet edukacyjny do nauki przedmiotów ścisłych i kształtowania postaw przedsiębiorczych

MATEMATYKA. kurs uzupełniający dla studentów 1. roku PWSZ. w ramach»europejskiego Funduszu Socjalnego« Adam Kolany.

automatyka i robotyka II stopień (I stopień / II stopień) ogólnoakademicki (ogólno akademicki / praktyczny)

SPIS TREŚCI WSTĘP LICZBY RZECZYWISTE 2. WYRAŻENIA ALGEBRAICZNE 3. RÓWNANIA I NIERÓWNOŚCI

Rozdział VII. Przekształcenia geometryczne na płaszczyźnie Przekształcenia geometryczne Symetria osiowa Symetria środkowa 328

MATeMAtyka zakres rozszerzony

Koordynator przedmiotu dr Artur Bryk, wykł., Wydział Transportu Politechniki Warszawskiej B. Ogólna charakterystyka przedmiotu

Projekty standardów wymagań egzaminacyjnych z matematyki (materiał do konsultacji)

PWSZ w Tarnowie Instytut Politechniczny Elektrotechnika

Kierunek: Matematyka Poziom studiów: Studia II stopnia Forma i tryb studiów: Stacjonarne

Kurs Start plus poziom zaawansowany, materiały dla prowadzących, Marcin Kościelecki. Zajęcia 1.

Spis treści. Przedmowa... 9

Matematyka zajęcia fakultatywne (Wyspa inżynierów) Dodatkowe w ramach projektu UE

Funkcje. Część druga. Zbigniew Koza. Wydział Fizyki i Astronomii

2.1. Postać algebraiczna liczb zespolonych Postać trygonometryczna liczb zespolonych... 26

WYMAGANIA WSTĘPNE Z MATEMATYKI

PRZEWODNIK PO PRZEDMIOCIE

GEODEZJA I KARTOGRAFIA I stopień (I stopień / II stopień) Ogólnoakademicki (ogólnoakademicki / praktyczny)

Obliczenia inżynierskie. oprogramowanie matematyczne

Matematyka I i II - opis przedmiotu

Przedmiotowe Ocenianie Z Matematyki Liceum Ogólnokształcące obowiązuje w roku szkolnym 2016 / 2017

Matematyka do liceów i techników Szczegółowy rozkład materiału Klasa III zakres rozszerzony 563/3/2014

Spis treści. I. Skuteczne. Od autora... Obliczenia inżynierskie i naukowe... Ostrzeżenia...XVII

Symulacja obliczeń kwantowych

E-N-1112-s1 MATEMATYKA Mathematics

Geodezja i Kartografia I stopień (I stopień / II stopień) Ogólnoakademicki (ogólnoakademicki / praktyczny) Stacjonarne (stacjonarne / niestacjonarne)

Matematyka do liceów i techników Szczegółowy rozkład materiału Klasa III zakres rozszerzony

Uniwersytet Śląski w Katowicach str. 1 Wydział Informatyki i Nauki o Materiałach. opis efektu kształcenia

MINIMUM PROGRAMOWE DLA SŁUCHACZY CKU NR 1

Kryteria oceniania z matematyki Klasa III poziom rozszerzony

Wymagania edukacyjne z matematyki klasa IV technikum

MATEMATYKA. WYMAGANIA EDUKACYJNE KLASA I, II, III Bożena Tarnowiecka, Arkadiusz Wolski. KLASA I Wymagania

Zakres materiału obowiązujący do próbnej matury z matematyki

IV etap edukacyjny Cele kształcenia wymagania ogólne

Kierunek: Matematyka Poziom studiów: Studia II stopnia Forma i tryb studiów: Stacjonarne

Zdający posiada umiejętności w zakresie: 1. wykorzystania i tworzenia informacji: interpretuje tekst matematyczny i formułuje uzyskane wyniki

Pakiety matematyczne. Matematyka Stosowana. dr inż. Krzysztof Burnecki

Elementy rachunku różniczkowego i całkowego

Zagadnienia na egzamin poprawkowy z matematyki - klasa I 1. Liczby rzeczywiste

Przedmiotowy system oceniania wraz z określeniem wymagań edukacyjnych (zakres rozszerzony)

Kierunek: Matematyka Poziom studiów: Studia II stopnia Forma i tryb studiów: Stacjonarne

Kierunek: Matematyka Poziom studiów: Studia II stopnia Forma i tryb studiów: Stacjonarne

LUBELSKA PRÓBA PRZED MATURĄ 09 MARCA Kartoteka testu. Maksymalna liczba punktów. Nr zad. Matematyka dla klasy 3 poziom podstawowy

WYMAGANIA Z WIEDZY I UMIEJĘTNOŚCI NA POSZCZEGÓLNE STOPNIE SZKOLNE DLA KLASY CZWARTEJ H. zakres rozszerzony. Wiadomości i umiejętności

Kształcenie w zakresie podstawowym. Klasa 1

Kierunek: Informatyka Poziom studiów: Studia I stopnia Forma i tryb studiów: Stacjonarne. Wykład Ćwiczenia

Wymagania edukacyjne z matematyki - klasa III (poziom rozszerzony) wg programu nauczania Matematyka Prosto do matury

Rozkład materiału z matematyki dla II klasy technikum zakres podstawowy I wariant (38 tyg. 2 godz. = 76 godz.)

MATEMATYKA IV etap edukacyjny. I. Wykorzystanie i tworzenie informacji. II. Wykorzystanie i interpretowanie reprezentacji.

Nowa podstawa programowa z matematyki ( w liceum od r.)

PROGRAM ZAJĘĆ WYRÓWNAWCZYCH Z MATEMATYKI NA KIERUNKU MATEMATYKA

Przedmiotowe Ocenianie Z Matematyki - Technikum. obowiązuje w roku szkolnym 2016 / 2017

Kierunek i poziom studiów: Sylabus modułu: Wstęp do algebry i teorii liczb (03-M01N-WATL) Nazwa wariantu modułu (opcjonalnie): -

Wymagania kl. 3. Zakres podstawowy i rozszerzony

PORÓWNANIE TREŚCI ZAWARTYCH W OBOWIĄZUJĄCYCH STANDARDACH EGZAMINACYJNYCH Z TREŚCIAMI NOWEJ PODSTAWY PROGRAMOWEJ

Nr postępowania: ZP/366/055/U/13 ZAKRESY NATERIAŁU

ZESTAW ISTOTNYCH ZAGADNIEŃ

Załącznik nr 2 do PSO z matematyki, ZSP Nr 1 w Krośnie. Treści nauczania zakres rozszerzony

Transkrypt:

SymPy matematyka symboliczna w Pythonie Mateusz Paprocki <mattpap@gmail.com> Continuum Analytics, Inc. 30 listopada 2015

Co to jest matematyka symboliczna? Python operuje na liczbach zmiennoprzecinkowych (IEEE-754): In[1]: import math In[2]: math. sqrt (3) 1.7320508075688772 W matematyce symbolicznej operujemy na liczbach i symbolach: In[3]: import sympy In[4]: sympy. sqrt (3) 3 In[5]: _4. evalf () In[6]: _4. evalf (n= 50) 1.73205080756888 1.7320508075688772935274463415058723669428052538104 2 z 21

Co to jest matematyka symboliczna? Dokładne wyniki In[7]: math. sqrt (3) **2 2.9999999999999996 In[8]: sympy. sqrt (3) **2 3 In[9]: 1 - math. sin ( math. pi) 0.9999999999999999 In[ 10]: 1 - sympy. sin ( sympy. pi) 1 3 z 21

Co to jest matematyka symboliczna? Operacje na symbolach i wyrażeniach In[11]: x**2-1 NameError : name x is not defined In[ 12]: f = lambda x: x**2-1 In[ 13]: f (10) 99 In[ 14]: sympy. var ( x ) x In[15]: x**2-1 x 2 1 In[16]: _. subs (x, 10) 99 In[ 17]: sympy. factor ( _15 ) 4 z 21 (x 1) (x + 1)

Co to jest matematyka symboliczna? Wzory ogólne In[ 18]: sum ([ i for i in range (0, 10+1) ]) 55 In[ 19]: n, k = sympy. symbols ( n,k ) In[ 20]: sympy. summation (k, (k, 0, n)) In[21]: _. subs (n, 10) n 2 2 + n 2 55 5 z 21

Matematyka w Pythonie moduł math wbudowany moduł matematyczny podstawowe operacje na liczbach zmiennoprzecinkowych NumPy, SciPy biblioteki numeryczne (macierze, optymalizacja) Swiginac, Pynac,... warstwa abstrakcji nad biblioteką GiNaC (C++) duża wydajność, ale mała funkcjonalność trudne w rozwijaniu Sage kompletny system algebry komputerowej podstawowy instalator to 0.8-1.4 GB (Linux 64) zawiera SymPy SymPy 6 z 21

Dlaczego SymPy? Istnieje wiele systemów matematycznych: systemy komercyjne: Mathematica, Maple, Magma,... systemy Open Source: AXIOM, GiNaC, Maxima, PARI, Sage, Singular, Yacas,... Problemy: większość wymyśla swój własny język programowania trudna lub niemożliwa rozbudowa systemu i naprawa błędów systemy komercyjne są bardzo kosztowne 7 z 21

Dlaczego SymPy? Istnieje wiele systemów matematycznych: systemy komercyjne: Mathematica, Maple, Magma,... systemy Open Source: AXIOM, GiNaC, Maxima, PARI, Sage, Singular, Yacas,... Problemy: większość wymyśla swój własny język programowania trudna lub niemożliwa rozbudowa systemu i naprawa błędów systemy komercyjne są bardzo kosztowne 7 z 21

Co to jest SymPy? biblioteka pisana w Pythonie import sympy i możemy całkować bez nowego środowiska, języka,... bez rozszerzeń kompilowanych brak obligatoryjnych zależności (poza mpmath) działa dowolnej platformie (Jython) prostota architektury kod w bibliotece oraz REPL nie powinny się (bardzo) różnić łatwość w rozbudowie na dowolnym poziomie szeroka funkcjonalność obsługa najważniejszych gałęzi matematyki wspieranie zaawansowanych metod i algorytmów integracja z IPython/Jupiter, NumPy,... liberalna licencja: BSD 8 z 21

SymPy: historia i trochę liczb 2006 teraz (Ondřej Čertík, od 2011 Aaron Meurer) 400 autorów 450+ tysięcy linii kodu, testów i dokumentacji wykonanie testów (na Travis CI) trwa średnio 9 godzin 48 projektów (45 studentów) w Google Summer of Code 9 z 21

Możliwości podstawowe możlowści podstawowa arytmetyka: +, -, *, /, ** liczby dowolnej precyzji rozwijanie wyrażeń podstawianie wyrażeń upraszczanie/przekształcanie wyrażeń dopasowywanie do wzorców wyrażenia nieprzemienne stałe matematyczne (π, e, złoty podział) funkcje elementarne (trygonometryczne, hiperboliczne, wykładnicza, logarytmy) kombinatoryczne, całkowitoliczbowe (n!, liczby Stirlinga) komponenty liczb zespolonych (Rx, Ix, x ) wielomiany specjalne (cyklotomiczne, Czebyszewa) harmoniki sferyczne inne funkcje specjalne (Γ(x), ζ(x)) analiza matematyczna różniczkowanie całkowanie granice szeregi (Taylor, Laurent, Puiseux) algebra wielomianów artymetyka, największy wspólny dzielnik rozkład na czynniki rozkład bezkwadratowy bazy Gröbnera rozkład na ułamki proste wyróżnik i rugownik izolacja pierwiastków rozwiązywanie równań równania wielomianowe równania algebraiczne równania transcendentalne równania różniczkowe równania różnicowe równania diofantyczne równania zadane przedziałami układy równań nierówności kombinatoryka permutacje, kombinacje,partycje, podzbiory grupy permutacji (wielościany, kostka Rubkika) kody Prüfera, Graya 10 z 21

Więcej możliwości matematyka dyskretna współczynniki dwumianowe funkcje hipergeometryczne sumy i produkty (skończone i nieskończone) teoria liczb generowanie i rozpoznawanie liczb pierwszych rozkład liczb całkowitych na czynniki ułamki łańcuchowe macierze arytmetyka, odwracanie macierzy wartości i wektory własne wielomian charakterystyczny wyznacznik Geometry punkty, linie, segmenty, elipsy, wielokąty,... przecinanie się, styczność, podobieństwo figur fizyka jednostki miar (analiza wymiarowa) stałe fizyczne mechanika klasyczne (dynamika bryły sztywnej) mechanika kwantowa (algebry Pauliego, algorytm Shora) optyka statystyka i rachunek prawdopodobieństwa rozkłady prawdopodobieństwa wyświetlanie wyrażeń 2D ASCII/Unicode LaTeX, MathML integracja z IPython/Jupyter notebook generacja kodu: C, Fortran, Python, JavaScript rysowanie wykresów 2D i 3D krzywe parametryczne figury geometryczne 11 z 21

Przykłady Podstawowa arytmetyka SymPy automatycznie stosuje podstawowe transformacje: In[1]: 1 + x - y - y - x**2/x, exp (1), sin (0) ( 2y + 1, e, 0) Zaawansowane transformacje aplikowane są manualnie: In[2]: sin (x)**2 + cos (x)**2 sin 2 (x) + cos 2 (x) In[3]: simplify (_) 1 12 z 21

Przykłady Całkowanie i różniczkowanie In[1]: integrate ( sin (x*y*z), x, y) { 0 for yz = 0 ( 1 z log (xyz) + 1 2 log ( x 2 y 2 z 2) + Ci (xyz) ) otherwise In[2]: diff (_, x, y) { 0 for yz = 0 sin (xyz) otherwise 13 z 21 In[3]: _1. subs ({y: 0, z: 0}) In[4]: _1. args [1]. expr. subs ({ y: 0, z: 0}) 0 NaN

Przykłady Granice i szeregi 14 z 21 In[1]: lim = Limit ((1 + 1/n)**n, n, oo) In[2]: Eq(lim, lim. doit ()) lim n ( 1 + 1 n ) n = e In[3]: limit ( log (2 + sqrt ( atan (x))* sqrt ( sin (1/x))), x, 0) In[4]: log (2) series ( sin ( cos (x** 2)), x, n=10) sin (1) x 4 8 cos (1) + x 2 In[5]: summation (1/x**n, (n, 0, oo )) { 1 1 1 x ( 1 1 sin (1) + cos (1) 8 24 n=0 x n for 1 < 1 x otherwise ) + O ( x 10)

Problemy i pułapki liczby Pythona vs. liczby SymPy In[1]: 1/2 0 In[2]: Rational (1, 2), S (1) /2, S(" 1/2 "), S. Half In[3]: 1.23456789123456789 ( ) 1 2, 1 2, 1 2, 1 2 1.234567891234568 In[4]: Float (1.23456789123456789) 1.23456789123457 In[5]: Float (" 1.23456789123456789 ") 1.23456789123456789 15 z 21

Problemy i pułapki liczby Pythona vs. liczby SymPy In[1]: 1/2 0 In[2]: Rational (1, 2), S (1) /2, S(" 1/2 "), S. Half In[3]: 1.23456789123456789 ( ) 1 2, 1 2, 1 2, 1 2 1.234567891234568 In[4]: Float (1.23456789123456789) 1.23456789123457 In[5]: Float (" 1.23456789123456789 ") 1.23456789123456789 15 z 21

Problemy i pułapki porównywanie wyrażeń In[1]: (x + 1)**2 == x**2 + 2*x + 1 False In[2]: (x + 1)**2 == (x + 1)**2 True In[3]: simplify (( x + 1)**2 - x**2 + 2*x + 1) == 0 True In[4]: Eq ((x + 1)**2, x**2 + 2*x + 1) (x + 1) 2 = x 2 + 2x + 1 16 z 21

Problemy i pułapki porównywanie wyrażeń In[1]: (x + 1)**2 == x**2 + 2*x + 1 False In[2]: (x + 1)**2 == (x + 1)**2 True In[3]: simplify (( x + 1)**2 - x**2 + 2*x + 1) == 0 True In[4]: Eq ((x + 1)**2, x**2 + 2*x + 1) (x + 1) 2 = x 2 + 2x + 1 16 z 21

Problemy i pułapki limit rekurencji i pamięć podręczna In[1]: from sympy. core. cache import clear_cache In[2]: horner_poly = lambda n: horner ( sum ([ x**i for i in range (n) ])) In[3]: clear_cache (); horner_poly (70). subs (x, 1) 70 In[4]: clear_cache (); horner_poly (71). subs (x, 1) RuntimeError : maximum recursion depth exceeded In[5]: import sys In[6]: sys. setrecursionlimit (2* sys. getrecursionlimit ()) In[7]: clear_cache (); horner_poly (142). subs (x, 1) 142 In[8]: clear_cache (); horner_poly (143). subs (x, 1) RuntimeError : maximum recursion depth exceeded 17 z 21

Problemy i pułapki limit rekurencji i pamięć podręczna In[1]: from sympy. core. cache import clear_cache In[2]: horner_poly = lambda n: horner ( sum ([ x**i for i in range (n) ])) In[3]: clear_cache (); horner_poly (70). subs (x, 1) 70 In[4]: clear_cache (); horner_poly (71). subs (x, 1) RuntimeError : maximum recursion depth exceeded In[5]: import sys In[6]: sys. setrecursionlimit (2* sys. getrecursionlimit ()) In[7]: clear_cache (); horner_poly (142). subs (x, 1) 142 In[8]: clear_cache (); horner_poly (143). subs (x, 1) RuntimeError : maximum recursion depth exceeded 17 z 21

Informacje kontaktowe Strona główna projektu: www.sympy.org Dokumentacja: docs.sympy.org wiki.sympy.org Strony dodatkowe: live.sympy.org, gamma.sympy.org try.jupyter.org Lista mailingowa: sympy@googlegroups.com Kanał IRC: #sympy na FreeNode Repozytorium git: git clone git://github.com/sympy/sympy.git 18 z 21

Dodatkowe materiały SymPy tutorial at SciPy 2011 SymPy tutorial at SciPy 2013 (video) PyDy tutorial at SciPy 2015 (video) 19 z 21

Moja rola w projekcie pracuję nad SymPy od marca 2007 roku student w Google Summer of Code 2007 algorytmy rozwiązywania równań rekurencyjnych algorytmy sumowania nieoznaczonego i oznaczonego no i tak już zostało: algorytmy całkowania wielomiany, struktury algebraiczne przekształcanie/upraszczanie wyrażeń... poza tym: mentor w Google Summer of Code 2009, 2010, 2011, 2013 praca dyplomowa (Politechnika Wrocławska) konferencje (SciPy, EuroScipy, SciPy.In, PyCon.Pl, py4science) 20 z 21

Dziękuję za uwagę! Pytania, uwagi, dyskusja... [ ] 1 0 0 1 Σ dx dx SymPy 21 z 21