Metody numeryczne. Artur Wymysłowski, prof. PWr. Wrocław

Podobne dokumenty
Python wstęp do programowania dla użytkowników WCSS

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI EFEKTY KSZTAŁCENIA

Kurs rozszerzony języka Python

Przegląd języka Python. Łukasz Anwajler

Podstawy programowania w języku C

Wykresy i interfejsy użytkownika

Programowanie obiektowe

Języki skryptowe w programie Plans

Wprowadzenie do programowania

1 Podstawy c++ w pigułce.

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

Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program.

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Zaawansowany kurs języka Python

Język skryptowy: Laboratorium 1. Wprowadzenie do języka Python

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Programowanie w języku Python. Grażyna Koba

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

Python dla początkujących. Małgorzata Niewiem AGH, GGiOŚ, Katedra Geoinformatyki i Informatyki Stosowanej SATIM Satelitarny Monitoring

Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści

1 Podstawy c++ w pigułce.

Podstawy Informatyki Computer basics

Programowanie obiektowe

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

Informatyka 1. Plan dzisiejszych zajęć. zajęcia nr 1. Elektrotechnika, semestr II rok akademicki 2008/2009

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Wstęp do programowania

Wstęp do programowania

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Redis, skrypty w języku Lua

Pisząc okienkowy program w Matlabie wykorzystujemy gotowe obiekty graficzne, lub możemy tworzyć własne obiekty dziedzicząc już zdefiniowane.

Programowanie, algorytmy i struktury danych

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

PROGRAMOWANIE W PYTHONIE OD PIERWSZYCH KROKÓW

Informatyka- wykład. Podstawy programowania w Pythonie. dr Marcin Ziółkowski

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

Java w 21 dni / Rogers Cadenhead. Gliwice, cop Spis treści. O autorze 11. Wprowadzenie 13 TYDZIEŃ I JĘZYK JAVA

Wstęp do programowania

Programowanie strukturalne i obiektowe

WYKŁAD. Jednostka prowadząca: Wydział Techniczny. Kierunek studiów: Elektronika i telekomunikacja. Nazwa przedmiotu: Język programowania C++

Python. Skąd taka nazwa? Kurs systemu UNIX 1

Podstawy programowania skrót z wykładów:

Kurs wybieralny: Zastosowanie technik informatycznych i metod numerycznych w elektronice

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH

TEST KOŃCOWY DLA KLASY III GIMNAZJUM- POGRAMOWANIE. Szkoła Podstawowa Nr 5. im. Księcia Mazowieckiego Siemowita IV w Gostyninie.

Wprowadzenie do Python

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Java EE produkcja oprogramowania

WYKORZYSTANIE PORTALU DYDAKTYCZNEGO W NAUCE JĘZYKÓW PROGRAMOWANIA

PRZEWODNIK PO PRZEDMIOCIE

Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

Podstawy Programowania C++

Podstawy programowania. Wykład 3 Konstrukcje sterujące. Krzysztof Banaś Podstawy programowania 1

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

ECDL Podstawy programowania Sylabus - wersja 1.0

Język programowania Scala / Grzegorz Balcerek. Wyd. 2. Poznań, cop Spis treści

2 Przygotował: mgr inż. Maciej Lasota

Wykład Ćwiczenia Laboratorium Projekt Seminarium

Programowanie (C++) NI 5

PRZEWODNIK PO PRZEDMIOCIE

Paradygmaty programowania

Część 4 życie programu

Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java

Podstawy programowania w Pythonie

Języki C i C++ Wykład: 2. Wstęp Instrukcje sterujące. dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD

Plan. krótkie opisy modułów. 1 Uwagi na temat wydajności CPython a. 2 Podstawowe techniki poprawiające wydajność obliczeniową

PRZEWODNIK PO PRZEDMIOCIE

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Serwer WWW Apache. Plik konfiguracyjny httpd.conf Definiujemy m.in.: Aktualne wersje 2.4.6, , zakończony projekt

KOTLIN. Język programowania dla Androida

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

Przetwarzanie i analiza danych w języku Python / Marek Gągolewski, Maciej Bartoszuk, Anna Cena. Warszawa, Spis treści

Programowanie I C / C++ laboratorium 01 Organizacja zajęć

Programowanie robota mobilnego E-puck w języku Python

Programowanie obiektowe Object programming. Elektrotechnika II stopień (I stopień / II stopień) Ogólno akademicki (ogólno akademicki / praktyczny)

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Podstawy Programowania Obiektowego

Kontrola przebiegu programu

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek

Programowanie RAD Delphi

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

E-E-A-1008-s5 Komputerowa Symulacja Układów Nazwa modułu. Dynamicznych. Elektrotechnika I stopień Ogólno akademicki. Przedmiot kierunkowy

Wprowadzenie do języka Java

Podstawy programowania. Wprowadzenie

Programowanie obiektowe zastosowanie języka Java SE

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

Programowanie obiektowe - 1.

Metody numeryczne Laboratorium 2

Transkrypt:

Metody numeryczne Artur Wymysłowski, prof. PWr. Wrocław

Informacje ogólne Prowadzący: dr hab. inż. Artur Wymysłowski, prof. PWr. tel. 71 320 3327 email: artur.wymyslowski@pwr.edu.pl Materiały do wykładów i ćwiczeń są dostępne na stronie internetowej: http://wymyslowski.wemif.net Konsultacje: wtorek, godz.11-13, p.309, C-2 środa, godz.9-13, p.309, C-2 Wykład => 7 wykładów i test zaliczeniowy Laboratorium => 7 ćwiczeń laboratoryjnych i ocena jako średnia

Wykład Cel nauka podstaw metod numerycznych w zastosowaniach naukowych i inżynierskich nie jest nauka programowania, pomimo, że zajęcia będą prowadzona z wykorzystaniem języka programowania Python, a może właśnie dlatego! Zakres tematyczny: błędy metod numerycznych numeryczne metody całkowania i różniczkowania rozwiązywanie równań i układów równań liniowych i nieliniowych interpolacja, aproksymacja i ekstrapolacja równania różniczkowe projektowanie numeryczne: optymalizacja, planowanie eksperymentów, itp.

Ćwiczenia laboratoryjne Ćwiczenia laboratoryjne: realizowane w oparciu o system operacyjny Linux lub ewentualnie Windows programy pisane z wykorzystaniem języka programowania Python proponowane środowisko programistyczne to DrPython, Ninja, Geany (Linux) Zakres tematyczny: nauka języka Pythona IDE: DrPython, Geany lub Ninja przykłady i zastosowanie praktyczne metod numerycznych omówionych na wykładzie

Dlaczego metody numeryczne? Metody numeryczne są ściśle powiązane z rozwojem technik informatycznych, metod komputerowych i sprzętu komputerowego i są wykorzystywane w modelowaniu i symulacjach numerycznych Zastosowania w nauce: analiza i badanie problemów dla których brak rozwiązań analitycznych weryfikacja modeli teoretycznych... Zastosowania w inżynierii: analiza i przetwarzanie danych pomiarowych projektowanie numeryczne modelowanie i symulacje numeryczne automatyka i robotyka...

Dlaczego język Python? Możliwość tworzenia aplikacji z wykorzystaniem podstawowych paradygmatów programowania: programowanie strukturalne programowanie funkcyjne programowanie obiektowe Zalety języka: prosty i łatwy w nauce dynamiczne sprawdzanie typów danych zarządzania pamięcią z wykorzystaniem tzw. garbage collection bogaty zestaw bibliotek naukowych i inżynierskich Programowanie to przyjemność! dostępny za darmo wykorzystywany w systemie Linux do pisania skryptów na powłoki używany przez komputery jednopłytkowe oparte na Linuxie (np. RaspbberyPi, BananaPi, itp.) do programowania interfejsu GPIO Alternatywy: Matlab, Octave, WolframAlpha

GPIO GPIO - General purpose input/output: piny nie mają predefiniowanych zadań piny mogą być skonfigurowane jako wejście "input" lub wyjście "output" piny mogą być aktywowane lub dezaktywowane wartości wejściowe są odczytywane z wejścia (np. stan wysoki lub niski) wartości wyjściowe są podawane na wyjście wartości wejściowe można wykorzystać jako przerwania IRQs (np. zdarzenia wybudzające) Przykładowy kod programu w języku Python:

Octave Język programowania: ukierunkowany na zastosowania naukowe wbudowane funkcje rysowania wykresów i wizualizacji danych darmowy; wspierane systemy: Linux, macos i Windows kompatybilny z programem Matlab, np. skrypty Zastosowania: rozwiązywanie układu algebraicznych równań liniowych działania na wektorach i macierzach wizualizacja danych na wykresach 2D i 3D IDE

http://www.wolframalpha.com / WolframAlpha

Python Język programowania Python: opracowany w latach 90 przez holendra Guido van Rossumema następca języka ABC Założenia twórcy: języka interpretowany, interaktywny i skryptowy posiadający dynamiczny system typów danych automatycznie zarządzający pamięcią Uwagi: aktualnie Python jest rozwijany na zasadzie projektu Open Source i jest zarządzany przez Python Software Foundation, będącą organizacją non-profit przykładowe implementacje to standardowa CPython (pisany w C) oraz inne jak: Jython (pisany w Javie), IronPython (opracowany na platformę.net).

Materiały pomocnicze Książki: Python Books A Byte of Python Ukąś Pythona - tłumaczenie Dive Into Python Thinking in Python Strony internetowe: strona oficjalna: http://www.python.org/ dokumentacja: http://docs.python.org/ strona polska: http://pl.python.org/ podstawy: http://www.python.rk.edu.pl/

Podstawy Język interpretowany => analiza w trakcie Rozszerzenie programu *.py Program uruchamia się na maszynie wirtualnej => tak jak Java Program jest kompilowany do tzw. bytecode *.pyc

Rodzaje pracy - interaktywny W celu uruchomienia tzw. maszyny wirtualnej (interpretatora) języka Python w systemie Linux, należy uruchomić konsolę oraz wpisać słowo python Korzystając z interpretatora języka Python można pracować w sposób interaktywny

Rodzaje pracy - skryptowy Inny rodzaj pracy to uruchamianie wcześniej przygotowanych skryptów (np. umieszczonych w katalogu domowym) Standardowe rozszerzenie programów skryptowych w Pythonie to *.py

Rodzaje pracy - programowy Do pisania programów/skryptów korzysta się z IDE, np. DrPython, Geany, Ninja DrPython, Geany lub Ninja są edytorami prostymi i zostały opracowane z myślą o tworzeniu programów w sposób szybki, łatwy i przyjemny

Biblioteki naukowe i inżynierskie Typowe biblioteki Pythona wykorzystywane w zastosowaniach naukowych i inżynierskich: numpy - obsługa funkcji i macierzy => obiekt array scipy - obliczenia naukowe i inżynierskie => algorytmy matplotlib - wykresy 2D i 3D + inne np. obrazy wxpython - grafika z wykorzystaniem biblioteki wx PyQt - grafika z wykorzystaniem biblioteki Qt PyGame - tworzenie gier W celu skorzystania z wybranej biblioteki Pythona korzysta się z instrukcji import, np.: import numpy import numpy as np from numpy import *

Przykład zastosowania - numpy Obliczenia z wykorzystaniem macierzy => array lista - automatyczne rozpoznawanie typów - definicja listy: a=[1,2,3] - definicja tablicy: a=numpy.array([1,2,3]) a=range(10) b=range(10) c = [] for i in range(len(a)): c.append(a[i] + b[i]) macierz

Lista a tablica W jaki sposób komputer przechowuje dane: zmienne, tablice, listy, słowniki, itp. Tablica => rozmiar nie może się zmieniać w sposób dynamiczny i musi być zadeklarowany na początku Lista (jedno lub dwukierunkowa) => rozmiar może się zmieniać w sposób dynamiczny wskaźnik Matematyk Informatyk

Przykład zastosowania - scipy Biblioteka zorganizowana w postaci pakietów, które powinny być wczytywane oddzielnie

Przykład zastosowania - matplotlib Tworzenie wykresów funkcji

Paradygmaty programowania Programowanie strukturalne: programowania preferujące hierarchiczne dzielenie kodu na bloki, z jednym punktem wejścia i jednym lub wieloma punktami wyjścia nieużywanie instrukcji skoku (goto) oraz instrukcji typu break, continue, switch (z C) używanie instrukcji warunkowych (if, if...else), pętli (while, repeat), wyboru (case) Programowanie funkcyjne: programowania w którym funkcje należą do wartości podstawowych (często wywoływanych rekurencyjnie), a nie na wykonywaniu poleceń raz zdefiniowana funkcja zwraca zawsze tą samą wartość dla zadanych wartości argumentów tak, jak funkcje matematyczne Programowanie obiektowe: programowania w którym programy definiuje się za pomocą obiektów elementów łączących stan (dane/pola) i zachowanie (metody/procedury) programowanie obiektowe ma ułatwić pisanie, konserwację i wielokrotne użycie programów lub ich fragmentów

Funkcja a? 1 wartość y dla danego x np. 2 wartości y dla danego x

Równania vs. funkcje x2+y2=1

Przykład programowania - strukturalne wejście wyjście

Przykład programowania - funkcyjne

Przykład programowania - obiektowe

Uwagi - Python Możliwość pisania kodu z jednoczesnym wykorzystaniem różnych paradygmatów programowania Aktualnie korzysta się z kilku wersji Pythona, tj. 2 (stabilna 2.7) lub 3 (ostatnio wersja 3.6). Jednak ze względu na fakt, że wybrane biblioteki są kompilowane i stabilne pod określoną wersję, to proponuje się korzystanie do celów dydaktycznych z Pythona w wersji 2.7

Struktura programu Dane Algorytmy i metody Sterowanie (90%) Język programowania: składnia + semantyka

Typy danych - podstawowe Kategoria Typ None types.nonetype bool int Liczby Zbiory Posiada dwie wartości: True i False Liczby całkowite o rozmiarze 32 bitów Liczby całkowite o dowolnej długości - ograniczeniem jest dostępna pamięć float Liczby zmiennoprzecinkowe o długości 64 bitów => standard IEEE 754 set Zbiór nieuporządkowany unikalnych elementów, gdzie set => zmienny, frozenset => niezmienny frozenset list tuple Odwzorowania Obiekt pusty, który nie posiada żadnej wartości. Składnia to słowo None long str Sekwencje Opis dict Uporządkowany zbiór, indeksowany liczbami nieujemnymi. Sekwencje mogą zawierać dowolny obiekt Pythona. Przykładem sekwencji jest łańcuch znaków Składa się z dwóch grup obiektów: pierwszy to zbiór kluczy, które indeksują grupę drugą zawierającą zbiór wartości

Typy danych - uwagi Przestrzeń nazw (ang. namespace) => słowniki zawierające nazwy i wartości obiektów wewnątrz danej przestrzeni: globalnej lokalnej modułów klas Zasięg: program => globalne funkcja => lokalne Uwagi: wyświetlanie przestrzeni nazw: globals(), locals() instrukcja global wymusza przypisanie nazwy do globalnej przestrzeni nazw lokalna globalna

Operatory - podstawowe

Operatory - inne Bitowe A & B : iloczyn logiczny A B : suma logiczna A ^ B : bitowa różnica symetryczna ~A : negacja bitowa A<<B, A>>B : przesunięcie A o B pozycji w lewo lub prawo Podstawienia A = B : podstawia do zmiennej A referencję (położenie) do B A []= B : podstawia do zmiennej A referencję do A[]B, np. A+=1 => A=A+1 Logiczne: A==B : True jeżeli równe lub inaczej False A!=B lub A<>B : True jeżeli różne lub inaczej False A>B lub A>=B : True jeżeli większe (równe) lub inaczej False A<B lub A<=B : True jeżeli mniejsze (równe) lub inaczej False

Składnia + semantyka Język Python posiada wiele cech wspólnych z językami: C, Perl i Java Składnia jest zapożyczona z obiektowości, np. dowolne dane są obiektami i posiadają swoje metody, np. liczby, listy, itp.: lokalizacja: print id(obiekt) typ: print type(obiekt) wartość: print obiekt obiekt Stosowanie wcięć kodu brak nawiasów () {} cecha wyróżniająca wcięcia Inne: komentarze w kodzie programu => (#) cudzysłów do oznaczania łańcucha znaków => ('') lub (') instrukcje wielowierszowe => (\)

Instrukcje sterujące Instrukcje warunkowe: if else elif Pętle: while for (stosuje się do sekwencji, np. listy) Instrukcje przerwania: break continue s_old= Wydzial wemif

Funkcje Definicja funkcji: def funkcja(x,y):... return... definiuje się przy użyciu składni: def funkcja (parametry) parametry funkcji mogą mieć wartości domyślne def funkcja(x=1,y=2): Wywołanie funkcji... wywołuje się poprzez nazwę i podanie wartości parametrów: funkcja(1) wartości parametrów mogą być przekazywane przez nazwę: funkcja(parametr=1) parametry mogą być przekazywane jako krotka za pomocą (*) Wartości funkcji są zwracane za pomocą instrukcji return Funkcje w Pythonie są obiektami: można je przechowywać jako elementy listy można je przekazywać jako argument lub zwracać jako wartość

Funkcje wbudowane Moduł podstawowy, np.: obsługa list dostęp do plików itp.

Obiekty Python jest zbudowany wokół koncepcji obiektu Obiekty posiadają: tożsamość, typ, wartość, np. dane atrybuty => wartość metody => funkcje Uwagi: dostęp do atrybutów i metod realizuje się poprzez (.): obiekt.atrybut obiekt.metoda() specjalnym metodą jest metoda inicjalizująca obiekt: obiekt. init () specjalnym prefiksem jest słowo self, które stosujemy wewnątrz klasy aby odnieść się do atrybutów i metod tej klasy (J. C/C++ => this) self jest pierwszym argumentem we wszystkich metodach klasy => często pomijane class Klasa(obiekt): argumenty def init ():... def metody():...

Obsługa błędów Obsługa błędów polega na wykorzystaniu wyjątków: bloki zamknięte słowem try obsługiwane wewnątrz bloku except dodatkowo blok finally zamiast except => zawsze wykonany, niezależnie od tego czy wystąpi wyjątek Zgłaszanie wyjątków przez program raise : powoduje przerwanie kodu zgłoszenie wyjątku

Standardowe wejście i wyjście Wejście stdin: input() : linia z analizą raw_input() : linia bez analizy! Wyjście stdout: print : domyślne formatowanie print % : z formatowaniem %s - łańcuch %d - liczba całkowita %f - liczba zmiennoprzecinkowa

Moduły i biblioteki W celu skorzystania z wybranej biblioteki Pythona korzysta się z instrukcji import i from, np.: import numpy import numpy as np from numpy import * Przykład: Standardowe odwołania: >>> import numpy as np >>> import scipy as sp >>> import matplotlib as mpl >>> import matplotlib.pyplot as plt import numpy => a=numpy.array([1,2,3]) import numpy as np => a=np.array([1,2,3]) from numpy import * => a=array([1,2,3]) połączenie przestrzeni nazw: globalnej i modułu problemem może być nadpisywanie nazw

Python 2.* vs. 3.* funkcja: print 2.* => print a 3.* => print(a) funkcja: input 2.* => raw_input('a=') 3.* => input('a=') itp.

Przykład 2.7 vs. 3.4

Instalacja Linux (terminal): apt-get apt-get apt-get apt-get apt-get install install install install install python2.7 python-numpy python-scipy python-matplotlib drpython Windows: https://www.python.org/ anaconda miniconda itp.

Podsumowanie Zajęcia: cel => nauka metod numerycznych w celach naukowych i inżynierskich zajęcia prowadzone z wykorzystaniem języka programowania Python celem nie jest nauka programowania ale tworzenie i wykorzystanie algorytmów numerycznych Python: interpretowany ogólnego przeznaczenia wysokiego poziomu ukierunkowany na czytelność kodu źródłowego. różne paradygmaty programowania inne zalety i możliwości języka Python: praca na plikach wielowątkowość praca z bazami danych implementacja komunikacji internetowej i programowanie usług sieciowych obsługa portów i przerwań itp. komputery jednopłytkowe

Dziękuję za uwagę