Numerical Methods College 1 A. Introductie B. Python A.A.N. Ridder Department EOR Vrije Universiteit Amsterdam Huispagina: http://personal.vu.nl/a.a.n.ridder/numprog/default.htm 6 september 2016 c Ad Ridder (VU) Numerical Methods Periode 1 (2016-2017) 1 / 28
Introductie c Ad Ridder (VU) Numerical Methods Periode 1 (2016-2017) 2 / 28
Doel Kennis van standaard/klassieke numerieke methoden en algoritmes voor EOR problemen. In staat om die methoden toe te passen op numerieke problemen. Vaardigheid om die methoden te implementeren in een vierde generatie computertaal (Python in periode 1; Ox in periode 2). Rapportage van resultaten (numeriek en grafisch!). c Ad Ridder (VU) Numerical Methods Periode 1 (2016-2017) 3 / 28
Opzet Periode 1 6 weken (week 36 t/m 41). Afwisselende 7 hoor/werkcollege op maan- en dinsdagen. Check het rooster (zie ook volgende slide). Tijdens deze colleges ligt nadruk op behandelen van opgaven. De stof word je geacht vooraf te hebben bestudeerd uit boek, Internet en notities van de docent. Woensdagen (11:00-12:45 respectievelijk 13:30-15:15) Python practicum in 5B-06. Inschrijven voor practicumgroep via VuNet. c Ad Ridder (VU) Numerical Methods Periode 1 (2016-2017) 4 / 28
Rooster van de Colleges nr datum tijd zaal onderwerp hst 1 di 6/9 11:00-12:45 12A-33 Introductie 2 di 13/9 11:00-12:45 12A-33 Python 3 ma 19/9 13:30-15:15 5A-33 Floating Point 1 4 di 20/9 11:00-12:45 12A-33 Nulpunten 3 5 di 27/9 11:00-12:45 15A-33 Interpolatie 4 6 di 4/10 11:00-12:45 15A-33 Integratie 5 7 ma 10/10 13:30-15:15 5A-33 Splines 6 c Ad Ridder (VU) Numerical Methods Periode 1 (2016-2017) 5 / 28
Boek In dit college wordt gebruikt E.W. Cheney & David Kincaid Numerical Mathematics And Computing Brooks/Cole; International edition of 7th revised edition (2012). De 6-th edition is ook goed genoeg (weinig inhoudelijke veranderingen, wel andere nummering en volgorde). Te verkrijgen bij Kraket of boekhandel. c Ad Ridder (VU) Numerical Methods Periode 1 (2016-2017) 6 / 28
Wat Zal Behandeld Worden Uit Boek? Periode 1. Hoofdstuk 1. Floating point representation. Hoofdstuk 3. Nonlinear systems (nulpunten van functies). Hoofdstuk 4. Interpolation. Hoofdstuk 5. Numerical integration. Hoofdstuk 6. Splines. Periode 2. Hoofdstuk 2. Linear systems. Hoofdstuk 8. More on Linear systems. Hoofdstuk 9. Kleinste kwadraten. Hoofdstuk 10. Monte Carlo methods (simulatie). Hoofdstuk 13. Minimalizatie. c Ad Ridder (VU) Numerical Methods Periode 1 (2016-2017) 7 / 28
Python In periode 1 wordt geprogrammeerd in Python. Practicum op de woensdagen van 11:00-12:45 of 13:30-15.15 uur in 5B-06. Verplicht drietal computeropdrachten in te leveren bij voorkeur in groepjes van twee. Opdrachten worden bekend gemaakt via Internet / Blackboard. c Ad Ridder (VU) Numerical Methods Periode 1 (2016-2017) 8 / 28
Website en BlackBoard De huispagina is http://personal.vu.nl/a.a.n.ridder/numprog/default.htm Bevat Notities van de onderwerpen. Opgaven voor de colleges. Computeropgaven voor de practica. De programmeeropdrachten. Voorbeeldprogramma s in Python. Oude tentamens. Links naar online Python tutorials en handleidingen. De pdf documenten komen ook op de Blackboard pagina. c Ad Ridder (VU) Numerical Methods Periode 1 (2016-2017) 9 / 28
Beoordeling 1. Deel 1 (periode 1): > Drie programmeeropdrachten (Python) moeten voldoende zijn (mag in groepjes van 2). > Schriftelijk toets op donderdag 27 oktober (individueel). Cijfer T 1 {1, 1.5,..., 10}. 2. Deel 2 (periode 2): > Programmeeropdrachten (Ox) moeten voldoende zijn. > Schriftelijk toets (individueel). Cijfer T 2 {1, 1.5,..., 10}. 3. Individuele opdracht. I = 0 als voldoende. I = 1 als onvoldoende of niet gedaan Eindcijfer: max{1, 0.5T 1 + 0.5T 2 2I}. c Ad Ridder (VU) Numerical Methods Periode 1 (2016-2017) 10 / 28
Wat Zijn Numerieke Methoden? Computerberekeningen voor complexe problemen in wetenschappelijke disciplines,... economie/econometrie operations research wiskundige economie wiskunde/statistiek Met andere woorden: oplossen van problemen zoals je gewend was op de middelbare school, maar nu op een aantal hogere niveaus en met computer ipv GR. c Ad Ridder (VU) Numerical Methods Periode 1 (2016-2017) 11 / 28
Typisch EOR Voorbeeld: Maximum Likelihood (MLE) 300 Gegeven data x 1, x 2,..., x n > 0 van schadeclaims bij een verzekeraar. Men vermoedt dat de data uit een Weibull verdeling komen: f (x) = αλ(λx) α 1 e (λx)α. Probleem: bereken of schat de parameters α, λ. 200 100 0. 0 10 10 20 20 30 30 40 40 50 n 1000 mean 9.788890 variance 153.051664 skewness 2.776043 kurtosis 13.541569 50 60 c Ad Ridder (VU) Numerical Methods Periode 1 (2016-2017) 12 / 28
Numerieke Uitwerking van MLE Likelihood is een functie van de parameters α, λ: n L(α, λ) = f (x i ). i=1 Uitwerken en log nemen: l(α, λ) = log L(α, λ) = n n n log α + αn log λ + (α 1) log x i (λx i ) α. i=1 i=1 Numeriek probleem: los op max{l(α, λ) : α, λ > 0}. 2-D onvoorwaardelijke optimalisering. Verschillende methoden met bijbehorende algoritmes. c Ad Ridder (VU) Numerical Methods Periode 1 (2016-2017) 13 / 28
Een Numerieke Methode van MLE FOC: nulpunten van de partiële eerste afgeleiden: l(α, λ) = 0; dα l(α, λ) = 0. dλ Na enige calculus krijg je λ = ( n/ xi α ) 1/α en 1 α + 1 n n log x i i=1 x α i log(x i ) n i=1 xα i Dit is een niet-lineaire vergelijking in α (herinner dat de data x i beschikbare getallen zijn). = 0. Heet ook wel nulpuntprobleem. Vele numerieke nulpuntmethoden. c Ad Ridder (VU) Numerical Methods Periode 1 (2016-2017) 14 / 28
Nulpunt Zoeken voor α Plot van de functie H(α) = 1/α + n i=1 log x i/n x α i log(x i )/ n i=1 xα i. H(α) 8 6 4 2 0 2 0 0.4 0.8 1.2 1.6 2 α Nulpuntmethoden worden behandeld in Hoofdstuk 3. c Ad Ridder (VU) Numerical Methods Periode 1 (2016-2017) 15 / 28
Wetenschappelijke Methode Een groter probleem wordt gestructureerd aangepakt. A. Probleembeschrijving. B. Abstracte (wiskundige of statistische) modellering: variabelen; relaties; functies;... C. Data verzamelen. D. Valideer wiskundig model. E. Ontwikkel een computerprogramma > gebaseerd op numerieke methoden (algoritmes). > of een simulatiemodel. F. Verifieer computerprogramma. G. Voer uit en rapporteer. c Ad Ridder (VU) Numerical Methods Periode 1 (2016-2017) 16 / 28
Data Science Tegenwoordig het vakgebied waar al het bovenstaande samenkomt. Gebaseerd op zogeheten Big Data. Interdisciplinair. Uit Wikipedia: Data science employs techniques and theories drawn from many fields within the broad areas of mathematics, statistics, operations research, information science, and computer science, including signal processing, probability models, machine learning, statistical learning, data mining, database, data engineering, pattern recognition and learning, visualization, predictive analytics, uncertainty modeling, data warehousing, data compression, computer programming, artificial intelligence, and high performance computing. c Ad Ridder (VU) Numerical Methods Periode 1 (2016-2017) 17 / 28
Programmeren Een belangrijk onderdeel in data science. Stap E in de wetenschappelijke methode. Probleem wordt gevisualiseerd, geanalyseerd, opgelost door de computer berekeningen te laten uitvoeren. Computer krijgt opdrachten via een computerprogramma. Programma is geschreven in een computertaal. Computertaal is de intermediair tussen de wetenschapper (en programmeur) en de computer. c Ad Ridder (VU) Numerical Methods Periode 1 (2016-2017) 18 / 28
Welke Computertaal? Een lijstje van talen waarvan je uit elke categorie er minstens één zou moeten kennen en kunnen, zie http://spectrum.ieee.org/computing/software/ the-2015-top-ten-programming-languages Voor een lijst met alle belangrijke computertalen, zie http://www.tiobe.com/tiobe_index Mijn lijst: > Algemeen: C, C++, Java. > Web, apps: PHP, Javascript, Ruby, Swift, C#. > Numeriek: Matlab/Octave, Julia, Mathematica, Ox. > Data science: Python, R. Elke taal heeft voor- en nadelen. c Ad Ridder (VU) Numerical Methods Periode 1 (2016-2017) 19 / 28
In het Vak Numerical Methods Periode 1: Python. Periode 2: Ox. c Ad Ridder (VU) Numerical Methods Periode 1 (2016-2017) 20 / 28
PYTHON c Ad Ridder (VU) Numerical Methods Periode 1 (2016-2017) 21 / 28
Citaties Uit https://generalassemb.ly/blog/ the-8-most-in-demand-programming-languages-of-2016/ What is it? > Python is an object-oriented programming language that is known for its clear syntax and readability. What can you do with it? > Python can be used to program web and desktop applications. It is also heavily used in the sciences to analyze data. Whats the learning curve like? > It is fairly easy to learn compared to more verbose languages like Java or C++. Who uses Python? > Data engineers, data scientists, and developers. Python is not industry specific, but task specificgreat for data processing, business intelligence, and some application development. c Ad Ridder (VU) Numerical Methods Periode 1 (2016-2017) 22 / 28
Waarom Niet Python? Enige overwegingen. Python is een geïnterpreteerde taal en dus trager dan gecompileerde talen zoals C, C#, Java, Julia, Swift,... Geen commerciële ondersteuning. R heeft beter en meer statistiekmethoden. Voor data science, de vergelijking tussen Python en R is op https://thenextweb.com/dd/2016/04/08/ start-using-python-andor-r-data-science-one-best/ Matlab heeft beter en meer optimaliseringsmethoden. Voor ontwikkelen van apps of dynamische websites zijn andere talen beter geschikt. c Ad Ridder (VU) Numerical Methods Periode 1 (2016-2017) 23 / 28
Python Versies Sinds 2008 een schisma : Python 2 versus Python 3. Huidige versies: > Python 2.7 (sinds 2010) subversie 2.7.12 (2016). > Python 3.5 (sinds 2015) subversie 3.5.2 (2016). Python 2 wordt niet verder ontwikkeld! Python 3 is de toekomst van deze computertaal. c Ad Ridder (VU) Numerical Methods Periode 1 (2016-2017) 24 / 28
Beschikbaarheid Python op de VU Python 2 is in computerzalen van de faculteit (versie 2.7.6). Distributie is Python(x,y). Helaas, de IT afdeling van de VU lukt het niet om daarnaast Python 3 te installeren op het netwerk. c Ad Ridder (VU) Numerical Methods Periode 1 (2016-2017) 25 / 28
Python Installeren op Eigen PC of Laptop Zelf downloaden en installeren op je PC of laptop is simpel (en gratis). Ga naar https://www.python.org en download je favoriete versie. Je moet zelf pakketten (modules) toevoegen, een tekst-editor uitzoeken, enz. Noodzakelijk zijn modules numpy, matplotlib, en scipy. Communicatie tussen Python en je bestanden uitzoeken. Eenvoudiger is een complete distributie te installeren zoals Python(x,y), WinPython, Anaconda, PyCharm, etc > Python(x,y): https://python-xy.github.io > WinPython: http://winpython.github.io > Anaconda: https://www.continuum.io > PyCharm: https://www.jetbrains.com/pycharm/ c Ad Ridder (VU) Numerical Methods Periode 1 (2016-2017) 26 / 28
Belangrijke Componenten voor Wetenschappelijk Python Numpy: voorziet vector en matrix types voor numerieke en statistische berekeningen. Scipy: bevat numerieke routines (integratie, interpolatie, nulpunten, optimalisering, enz). Matplotlib: voor plotten (grafieken, histograms, enz). Pandas: voor data-structuren. IPython/Jupyter: interactieve Python omgeving met commando input en resultaat output, vergelijkbaar met Matlab of Mathematica. Het vervangt de standaard Python interpreter. De distrubuties van de vorige slide bevatten alle bovenstaande onderdelen en komen ook met een geïntegreerde editor Spyder. c Ad Ridder (VU) Numerical Methods Periode 1 (2016-2017) 27 / 28
Python Beginselen (tijdens college) c Ad Ridder (VU) Numerical Methods Periode 1 (2016-2017) 28 / 28