Hoofdstuk 1. Illustratie 2



Vergelijkbare documenten
1 Rekenen in eindige precisie

Wetenschappelijk Rekenen

WI1808TH1/CiTG - Lineaire algebra deel 1

PC les 1: MATLAB gebruiken

slides12.pdf December 14,

Inleiding MATLAB (2) november 2001

Matlab introductie. Kees Vuik

Constanten. Variabelen. Expressies. Variabelen. Constanten. Voorbeeld : varid.py. een symbolische naam voor een object.

Matlab-Introductie (les 1)

6.1 Kwadraten [1] HERHALING: Volgorde bij berekeningen:

6.1 Kwadraten [1] HERHALING: Volgorde bij berekeningen:

Bouwstenen voor PSE. Datatypes en Datastructuren

De wiskunde van computerberekeningen. Jan Brandts Korteweg-de Vries Instituut voor Wiskunde Universiteit van Amsterdam.

Computervaardigheden I

1.1 Rekenen met letters [1]

Korte handleiding Maple, bestemd voor gebruik bij de cursus Wiskunde

Opdracht 2. Deadline maandag 28 september 2015, 24:00 uur.

Lineaire Algebra voor ST

II. ZELFGEDEFINIEERDE FUNCTIES

1.0 Voorkennis. Voorbeeld 1: Los op: 6x + 28 = 30 10x.

Opdrachten numerieke methoden, week 1

3.1 Kwadratische functies[1]

PYTHON REEKS 1: BASICS. Mathias Polfliet

Lineaire Algebra en Vectorcalculus 2DN60 College 5.a Basis en dimensie

Linalg.nb 1. Werk het notebook aandachtig door en maak de (genummerde) oefeningen aan het einde van elke sectie. Succes!

Korte handleiding Maple bij de cursus Meetkunde voor B

Aantekeningen over MATLAB

Lineaire Algebra (2DD12)

8. Differentiaal- en integraalrekening

Functies van vectoren

1 Delers 1. 3 Grootste gemene deler en kleinste gemene veelvoud 12

Basiskennis lineaire algebra

Wetenschappelijk Rekenen

TENTAMEN WISKUNDIGE BEELDVERWERKINGSTECHNIEKEN


Tentamen lineaire algebra voor BWI maandag 15 december 2008, uur.

Matrixoperaties. Definitie. Voorbeelden. Een matrix is een rechthoekig array van getallen, die kentallen of elementen heten.

(x x 1 ) + y 1. x x k+1 x k x k+1

8.1 Herleiden [1] Herleiden bij vermenigvuldigen: -5 3a 6b 8c = -720abc 1) Vermenigvuldigen cijfers (let op teken) 2) Letters op alfabetische volgorde

1. Het werken met een rekenblad: een inleiding

Lineaire Algebra voor ST

De inverse van een matrix

2. Een eerste kennismaking met Maxima

Proeftentamen in1211 Computersystemen I (NB de onderstreepte opgaven zijn geschikt voor de tussentoets)

5. Vergelijkingen Vergelijkingen met één variabele Oplossen van een lineaire vergelijking

Derive in ons wiskundeonderwijs Christine Decraemer

Rekenen met de GRM. 1 van 1. Inleiding: algemene zaken. donkerder. lichter

Numerieke Methoden voor Differentiaalvergelijkingen

3. Structuren in de taal

1. REGELS VAN DEELBAARHEID.

Ter Leering ende Vermaeck

1.1 Tweedegraadsvergelijkingen [1]

Je moet nu voor jezelf een overzicht zien te krijgen over het onderwerp Complexe getallen. Een eigen samenvatting maken is nuttig.

1.0 Voorkennis. Voorbeeld 1: Los op: 6x + 28 = 30 10x.

Arrays. Complexe datastructuren. Waarom arrays. Geen stijlvol programma:

Introductie in R.

FLIPIT 5. (a i,j + a j,i )d i d j = d j + 0 = e d. i<j

Informatica: C# WPO 10

Basisvaardigheden algebra. Willem van Ravenstein Den Haag

Handleiding Excel. bij. hoofdstuk 18 Cijfers in Orde Wageningse Methode

Variabelen en statements in ActionScript

Matrixalgebra (het rekenen met matrices)

Uiteenzetting Wiskunde Grafische rekenmachine (ti 83) uitleg

Rekenen aan wortels Werkblad =

Project Dynamica: oefenopgaven met R

Tweede Programmeeropgave Numerieke Wiskunde 1 De golfplaat Uiterste inleverdatum : vrijdag 16 mei 2003

Inhoud college 5 Basiswiskunde Taylorpolynomen

(x x 1 ) + y 1. x x 1 x k x x x k 1

Examenvragen Hogere Wiskunde I

TECHNISCHE UNIVERSITEIT EINDHOVEN Faculteit Wiskunde en Informatica

8.1 Herleiden [1] Herleiden bij vermenigvuldigen: -5 3a 6b 8c = -720abc 1) Vermenigvuldigen cijfers (let op teken) 2) Letters op alfabetische volgorde

TECHNISCHE UNIVERSITEIT EINDHOVEN Faculteit Wiskunde en Informatica

Relatieve fout, maximum relatieve fout, absolute fout en maximum absolute fout. γ < ε X X X. = γ X

DomJudge-Practicum. Open Dag UU

Informatica: C# WPO 13

NUMERIEKE METHODEN VOOR DE VAN DER POL VERGELIJKING. Docent: Karel in t Hout. Studiepunten: 3

Notatieafspraken bovenbouw, wiskunde A

VAARDIGHEDEN EXCEL. MEETWAARDEN INVULLEN In de figuur hieronder zie je twee keer de ingevoerde meetwaarden, eerst ruw en daarna netjes opgemaakt.

2 n 1. OPGAVEN 1 Hoeveel cijfers heeft het grootste bekende Mersenne-priemgetal? Met dit getal vult men 320 krantenpagina s.

DEC SDR DSP project 2017 (2)

Zomercursus Wiskunde. Katholieke Universiteit Leuven Groep Wetenschap & Technologie. September 2008

Hoofdstuk 7 - veranderingen. getal & ruimte HAVO wiskunde A deel 2

Analyse I. 1ste Bachelor Ingenieurswetenschappen Academiejaar ste semester 31 januari 2006

TECHNISCHE UNIVERSITEIT EINDHOVEN Faculteit Wiskunde en Informatica

Informatica: C# WPO 12

CTB1002 deel 1 - Lineaire algebra 1

Stoomcursus. wiskunde A. Rekenregels voor vereenvoudigen. Voorbereidende opgaven VWO ( ) = = ( ) ( ) ( ) = ( ) ( ) = ( ) = = ( )

TECHNISCHE UNIVERSITEIT EINDHOVEN Faculteit Wiskunde en Informatica

Beknopte handleiding voor Derive 5.0 for Windows

10.0 Voorkennis. Herhaling van rekenregels voor machten: a als a a 1 0[5] [6] Voorbeeld 1: Schrijf als macht van a:

Getallenleer Inleiding op codeertheorie. Cursus voor de vrije ruimte

Basiskennistoets wiskunde

Inhoud college 4 Basiswiskunde. 2.6 Hogere afgeleiden 2.8 Middelwaardestelling 2.9 Impliciet differentiëren 4.9 Linearisatie

Tentamen Computersystemen

Memoriseren: Een getal is deelbaar door 10 als het laatste cijfer een 0 is. Of: Een getal is deelbaar door 10 als het eindigt op 0.

Wiskunde D vwo Lineaire algebra. Presentatie Noordhoff wiskunde Tweede Fase congres 19 november 2015 Harm Houwing en John Romkes

Normering en schaallengte

Basisvaardigheden Microsoft Excel

1 Matlab: problemen oplossen binnen de lineaire algebra

Basisvaardigheden Microsoft Excel

Transcriptie:

Hoofdstuk 1 Numerical Methods College 2 A. Floating-point representatie (Hoofdstuk 1) B. Matlab A.A.N. Ridder Twee belangrijke onderwerpen die moeten leiden tot een beter begrip van de numerieke problematiek: 1. 1.3 Floating-point representatie 2. 1.4 Loss of significance normalsize Department EOR Vrije Universiteit Amsterdam Huispagina: http://personal.vu.nl/a.a.n.ridder/numprog/default.htm Deze leiden tot analyse waarom fouten optreden. 7 september 2015 c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 1 / 49 c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 2 / 49 Illustratie 1 Illustratie 2 Een MATLAB sessie >> x = 59/19; y = 59-19*x y = 0 >> x = 59/190; y = 59-190*x y = -7.1054e-15 >> format long >> x = 2.2; >> x = x+0.2 x = 2.400000000000000 >> x = x+0.2 x = 2.600000000000001 >> x = 2.2; x = x+0.4 x = 2.600000000000000 c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 3 / 49 c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 4 / 49

Getalrepresentatie 1.3 Floating-Point Representatie Getalrepresentatie heeft betrekking hoe getallen worden geschreven in de wiskunde en in een computertaal. We onderscheiden 1. Klassieke voorstelling voor gehele getallen (type int) 2. Floating-point representatie voor reële getallen (type double) In Matlab zijn alle getallen (ook de integers!) van het type double, dus die behandelen we hier. c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 5 / 49 c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 6 / 49 Genormalizeerde Floating-Point Representatie Binaire Systeem Ook wel wetenschappelijke notatie genoemd; In wiskunde, elke x R (x 0) kun je schrijven als: met cijfers zodat d 0 0; ( ) x = ± d 0.d 1 d 2 10 n = ± d k 10 k 10 n, d k {0, 1,..., 9} r heet genormalizeerde mantisse (1 r < 10); n Z heet exponent. k=0 } {{ } =r Op vorige slide had x decimale vorm; Net zo goed kan x geschreven worden t.o.v. basis 2; met b k {0, 1}, b 0 = 1 (dus 1 q < 2); ( ) x = ± b k 2 k 2 m, k=0 } {{ } =q Dus genormalizeerde floating point representatie van reële getallen in het binaire systeem is x = ± (1.b 1 b 2 ) 2 2 m. c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 7 / 49 c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 8 / 49

Voorbeeld Machinegetallen (1.3625) 10 10 = (13.625) 10 = 1 10 1 + 3 10 0 + 6 10 1 + 2 10 2 + 5 10 3 = 10 + 3 + 6/10 + 2/100 + 5/1000 = 8 + 4 + 1 + 1/2 + (1/10 + 1/50 + 1/200) = 8 + 4 + 1 + 1/2 + (20 + 4 + 1)/200 = 8 + 4 + 1 + 1/2 + 1/8 = 1 2 3 + 1 2 2 + 1 2 0 + 1 2 1 + 1 2 3 = (1101.101) 2 = (1.101101) 2 2 3 Computers zijn eindige machines; Getallen worden in binaire genormalizeerde floating point representatie opgeslagen met eindig veel (binaire) cijfers in de mantisse q, en eindig veel binaire cijfers voor exponent m; De gerepresenteerde reële getallen heten machinegetallen; Dat betekent bv dat 1 5 = (0.2) 10 niet exact grepresenteerd zal kunnen worden; NB: kan natuurlijk niet altijd (eigenlijk bijna nooit) in een eindige reeks! (0.2) 10 = (1.10011001100110011 ) 2 2 3 c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 9 / 49 c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 10 / 49 Voorbeeld Standaard Dubbele Precisie Floating-Point Stel dat een computer machinegetallen heeft waarvoor x = ± (1.b 1 b 2 ) 2 2 m, met exponent m { 3, 2,..., 4}. Merk op dat m = c 3 en dat 3 bits nodig zijn voor c: c = (c 2 c 1 c 0 ) 2 = c 2 2 2 + c 1 2 1 + c 0 2 0 {0, 1,..., 7}. Is representatie uniek? Wat zijn alle machinegetallen? Hoeveel? Kleinste positieve machinegetal: (1.00) 2 2 3 = 1 8 ; Grootste positieve machinegetal: (1.11) 2 2 4 = 28; Geen representatie voor 0 (!) Teken de "getallenrechte" (vgl Figure 1.7); In Matlab, Java en Ox zijn er veel meer (eindig veel) machinegetallen; Namelijk met x = ± (1. b }{{} 1 b 2 b 52 ) 2 2 c 1023, } {{ } 1 bit 52 bits c { } 0, 1,..., (11111111111) } {{ } 2 = (2047) 10 ; 11 bits Noteer f voor het fractionele deel van de mantisse; Dus machinegetal x = ±q 2 m met q = 1 + f en f = (0.b 1 b 2 b 52 ) 2 = b 1 2 1 + b 2 2 2 + + b 52 2 52 = 52 k=1 b i 2 k {0, 2 52, 2 2 52,..., ( 1 2 52) 2 52} m { 1023, 1022,..., 1024} c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 11 / 49 c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 12 / 49

Gereserveerde Getallen Getallenrechte Sommige machinegetallen zijn gereserveerd. f = (00 0) 2, c = 0: dus x = (1 + 0) 2 1023 wordt gebruikt om 0 te representeren; f = (00 0) 2, c = 2047: dus x = (1 + 0) 2 1024 wordt gebruikt om inf te representeren; Krijg je als je een positief getal deelt door 0; Of als je een te groot getal invoert; etc; Idem wordt x = (1 + 0) 2 1024 voor -inf gebruikt; f (00 0) 2, c = 2047: dus x > (1 + 0) 2 1024 wordt gebruikt als NaN (not a number); Krijg je bij 0/0, inf-inf, etc; Concludeer dat exponenten c = 0 en c = 2047 niet gebruikt worden voor "gewone" getallen; De machinegetallen vormen een eindige verzameling W = {w 1, w 2,..., w n} R Het grootste getal heet realmax en is Dus w 1 = w n; w n = (1.11 1) 2 2 2046 1023 = Het kleinste positieve getal heet realmin en is (w 1 < w 2 < < w n); ( ) 1 + (1 2 52 ) 2 1023 1.8 10 308 ; (1.00 0) 2 2 1 1023 = (1 + 0) 2 1022 2.2 10 308 ; c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 13 / 49 c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 14 / 49 Opeenvolge Machinegetallen Afronden Wat gebeurt er als je een getal invoert dat geen machinegetal, bv x = 0.2 of x = sqrt(2)? Stel w i = q 2 m met q = (1.b 1 b 2 b 52 ); Voor het gemak, stel b 52 = 0, dan is het volge machinegetal ( w i+1 = (1.b 1 b 2 b 51 1) 2 m = q + 2 52) 2 m = w i + 2 m 52 ; Het gat tussen twee opeenvolge getallen die exact gerepresenteerd kunnen worden is 2 m 52 ; Dat kan zo groot worden als 2 1022 52 = 2 970 10 292 (!) Afrondafspraak Elke x [w 1, w n] R wordt afgerond naar het dichtstbijzijnde machinegetal, aangegeven door fl(x). Dat geeft een afrondfout; Stel x (w i, w i+1 ), dan voldoet de absolute fout van afronding aan fl(x) x 1 2 (w i+1 w i ) = 1 2 2m 52 = 2 m 53. De relatieve fout is maximaal (voor t gemak w i > 0) fl(x) x x 1 2 (w i+1 w i ) 2m 53 w i 2 m = 2 53 = u, Waarin u = 2 53 de eenheid van de afrondfout. c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 15 / 49 c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 16 / 49

Machine Epsilon Machine Epsilon (vervolg) Definitie ɛ m is het kleinste getal zodat fl(1 + ɛ m) 1; Berekening van ɛ m: Zij w j W; w j = 1; dus w j = (1 + 0) 2 1023 1023 ; Dwz in exponent m = 0 en mantisse q = 1; Het midden tussen w j en w j+1 is het getal h = 1 + 2 53 (geen machinegetal!); Tel ɛ > 0 bij w j = 1 op: y = 1 + ɛ: Als 1 < y < h is y geen machinegetal en wordt in Matlab afgerond naar dichtstbijzijnde machinegetal, en dat is w j = 1; Maw: als 0 < ɛ < 2 53 dan is fl(1 + ɛ) = 1; Als h y < w j+1 is y geen machinegetal en wordt in Matlab afgerond naar dichtstbijzijnde machinegetal, en dat is w j+1 1; Maw: als 2 53 ɛ < 2 52 dan is fl(1 + ɛ) 1; Het volge machinegetal is w j+1 = ( 1 + 2 52) 2 0 = 1 + 2 52 ; Conclusie Machine epsilon is ɛ m = 2 53. Gevolg In Matlab zijn machine epsilon en eenheid van afrondfout aan elkaar gelijk. c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 17 / 49 c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 18 / 49 Nauwkeurigheid en Precisie We hebben gezien voor machine epsilon ɛ m en de eenheid van afronding u: ɛ m = u = 2 53 1.11 10 16. 1.4 Loss of Significance Dus de floating-point representatie van doubles is in 15 decimalen nauwkeurig, dwz heeft 15 juiste (decimale) cijfers. c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 19 / 49 c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 20 / 49

Effect van Floating Point Aritmetiek Klassieke LoS Omdat getallen worden afgerond naar machinegetallen; Dat gebeurt niet alleen als je getallen invoert; Maar ook (en eigenlijk de meeste keren) bij elke berekening of operatie met die getallen; Na een berekening kan de relatieve fout groter zijn dan de afrondeenheid; Dat betekent dat het aantal correcte decimalen afneemt; Bij elke volge berekening kan dat propageren; Bij verschil nemen van bijna evengrote getallen. Voorbeeld. NB: eps = 2 52 is het verschil in de mantisses van twee opeenvolge machinegetallen. >> x = (1+0.6*eps)*(2^50); >> y = (1+0.4*eps)*(2^50); >> s = x-y s = 0.2500 c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 21 / 49 c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 22 / 49 Berekeningen Reductie van Loss of Significance Exact zou moeten zijn ( 1 + 0.6 2 52) ( 2 50 1 + 0.4 2 52) 2 50 = 0.2 2 52 2 50 = 0.2 2 2 = 0.05. Soms mogelijk. Voorbeeld 1: voor x 0 is sin(x) x. Dus Matlab geeft x sin(x) = 0 als x dichtbij 0 is. Remedie: ontwikkel sin(x) in Taylorreeks, geeft Het bereke resultaat ontstaat doordat x naar boven wordt afgerond, en y naar beneden; Matlab berekent ( ) fl fl(x) fl(y) ( (1 = fl + 2 52 ) 2 50 ( 1 + 0 ) 2 50) ( = fl 2 2) = 2 2 = 0.25; x sin(x) = x3 3! x5 5! +. Voor (heel) kleine x is x 3 /3! een goede benadering. De relatieve fout is (0.25 0.05)/0.05 = 4 = 400%. c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 23 / 49 c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 24 / 49

Reductie van Loss of Significance Propogatie van Fout Integraalvoorbeeld; Voorbeeld 2: abc-formule van nulpunt van parabool: x 1,2 = b ± b 2 4ac. 2a Beschouw x 1 (met de +) en stel b 2 4ac. Dan b en fl(x 1 ) = 0. Probleem: bereken voor n = 0, 1,... 1 I n = x n e x 1 dx. 0 Met een beetje analyse kun je afleiden dat I n 0 en I n 0. Remedie: x 1 = b + b 2 4ac 2a ( b ) b 2 4ac b 2c = b 2 4ac b b 2 4ac. Eenvoudig: 1 I 0 = e x 1 dx = 1 e 1 = 0.63212. 0 En voor n 1 pas PI toe. Geeft recursie I n = x n e x 1 1 1 nx n 1 e x 1 dx = 1 ni n 1. 0 0 c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 25 / 49 c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 26 / 49 Matlabprogramma Resultaten function integraalvb start; function start n = input( geef n: ); y = integraal(n); fprintf( I(%2d) = %.9f\n,n,y); function y = integraal(n) y = 1-exp(-1); for k=1:n y = 1 - k*y; ; Matlab geeft I( 0) = 0.632120559 I(16) = 0.055459302 I( 1) = 0.367879441 I(17) = 0.057191871 I( 2) = 0.264241118 I(18) = -0.029453671 I( 3) = 0.207276647 I(19) = 1.559619744 ------------------- I(20) = -30.192394886 Grote afwijkingen, belachelijke uitkomsten. Reden: afrondfouten in I 0 als I n 1 een fout bevat, wordt die bij berekening van I n versterkt door de vermenigvuldiging met n. In dit geval is er een remedie: omdat lim n I n = 0 zet (bv) I 100 = 0 en werk de recursie terug: I n 1 = 1 (1 In). n c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 27 / 49 c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 28 / 49

Matrices: Invoeren MATLAB Wiskundige notatie: 16 3 2 13 A = 5 10 11 8 9 6 7 12 4 15 14 1 In Matlab voer je A als volgt in: A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1] Kolommen worden gescheiden door een spatie of een komma. Rijen worden gescheiden door een puntkomma. Het geheel omsluiten met vierkante haken. Dus kan ook A=[[16;5;9;4], [3;10;6;15], [2;11;7;14], [13;8;12;1]] c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 29 / 49 c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 30 / 49 Speciale Vectoren Matrices: Elementoperaties x = first:last rijvector x die begint met first, optelt met 1, en eindigt op of voor last. x = first:increment:last rijvector x die begint met first, optelt met increment, en eindigt voor of op last. x = linspace(first,last,n) rijvector x die met begint met first, en eindigt met last en n elementen heeft op gelijke afstand. Voorbeelden: x = 1:8; x = 0.6:0.3:2.0; x = linspace(10,20,101); Nummering begint bij 1! ij-de element a ij krijg je door A(i,j). Grotere delen door gebruik te maken dubbele punt. Bv, 3-de rij door A(3,:). 3 3 submatrix van rijen 2,3,4 en kolommen 1,2,3 door A(2:4,1:3). Merk op dat je vectoren kunt beschouwen als matrices, nl met één kolom of met één rij. c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 31 / 49 c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 32 / 49

Matrices: Invoegen en Verwijderen Matrices: Enige Functies Transponeren door apostrophe, A of A(3,:), etc. Voeg een nieuwe 3-de kolom (van lengte 4) toe aan A, de oude 3-de en 4-de kolommen schuiven op: A = [A(:,1:2), [1;2;-1;-2], A(:,3:4)] Verwijder kolom 4 (kolom 5 wordt dan de 4-de): A(:,4)=[] Kolomsommen door sum(a) of sum(a,1). Rijsommen door sum(a,2). diag(a) geeft de kolomvector van de diagonaalelementen van A. Maximaal element per kolom max(a) of max(a,[],1). Maximaal element per rij max(a,[],2). Maximaal element in de matrix max(max(a)). c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 33 / 49 c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 34 / 49 Enige Operaties met Matrices Matrices: Elementen Zoeken Welke (i, j)-elementen in A zijn gelijk aan 1? [i,j] = find(a==1); disp([i,j] ) Stel A en B zijn 3 4-matrices. Toelichting: find geeft het resultaat in 2 kolomvectoren. Elementsgewijze optelling: A+B. Welke elementen zijn priem? En welke priemgetallen zijn die? Elementsgewijze vermenigvuldiging: A.*B. f = find(isprime(a)); p = A(f); disp([f,p] ) Matrixvermenigvuldiging (lineaire algebra) A*B geeft foutmelding (waarom?). Toelichting: Matrixvermenigvuldiging C=A*B geeft een 3 3-matrix C (waarom?). Elementsgewijs machtheffen: A.^3. Elementen van een matrix kunnen rij/kolom genoteerd worden A(i,j). Maar ook met één index A(k). Dan wordt A beschouwd als een lange kolomvector gevormd uit de kolommen van A. Machtheffen A^3 geeft foutmelding; C^3 is wel correct (waarom?). Dus A(2) is hetzelfde als A(2,1); en A(5) is hetzelfde als A(1,2) als A een matrix is met 4 rijen. De find opdracht geeft een kolomvector f met de indices k waarvoor A(k) een priemgetal is. A(f) zijn precies al die elementen, in een kolomvector. c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 35 / 49 c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 36 / 49

Speciale Matrices Plotten van een Grafiek Voorbeeld: f (x) = e sin2 (x). Gevraagd de grafiek van f op [ 2π, 2π] in een figuur te plotten. A = zeros(5,7) is een matrix van 5 rijen en 7 kolommen met 0-en. Methode: 1. Genereer voldoe veel x-waarden in [ 2π, 2π] op gelijke afstand en inclusief de randen. A = ones(5,7) idem met 1-en. A = rand(5,7) idem met random uniform (0,1) getallen. A = randn(5,7) idem met random normaal (0,1) getallen. 2. Bv door x = linspace(-2*pi,2*pi,200) 3. Bereken in deze x-waarden de bijbehore functiewaarden: hulp = sin(x); y = exp(hulp.^2) 4. Je hebt nu 200 (x i, y i) punten in de R 2. 5. Verbind punten (x 1, y 1) en (x 2, y 2) met een rechte lijn. 6. Idem (x 2, y 2) en (x 3, y 3); etc tot en met (x 199, y 199) en (x 200, y 200). 7. En geef al die rechte lijn(tjes) weer in een grafiek (lijkt een differentieerbare kromme): plot(x,y) Let op dat x en y twee vectoren moeten zijn met dezelfde orientatie en dezelfde lengte. c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 37 / 49 c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 38 / 49 Matlabprogramma Uitvoer Je kunt aan de plot functie meer argumenten meegeven voor kleur, dikte, enz. De grafiek wordt weergegeven in een figuur dat op je computerscherm komt. function grafiekplotten start; function start n = input( geef n: ); x = linspace(-2*pi,2*pi,n); y = funf(x); plot(x,y, k, LineWidth,2); function y = funf(x) hulp = sin(x); y = exp(hulp.^2); % puntsgewijs want x is een vector c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 39 / 49 c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 40 / 49

Figuur Aanpassen Het figuurscherm heeft menu s om de figuur te werken. Plotopties Ook in je programma kun je opties opgeven. Hier is een code voor drie grafieken in verschille kleuren, met toevoeging van titel, lega, x en y-as benaming. Zie help plot. function grafieken start; function start x = linspace(0,10,301); y1 = sin(x); y2 = 3*exp(-x); y3 = sqrt(0.5*x); plot(x,y1, k,x,y2, r,x,y3, b ); title( drie grafieken ); leg( fun1, fun2, fun3 ); xlabel( x ); ylabel( y ); c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 41 / 49 c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 42 / 49 Uitvoer Meer Tips voor Opdracht 1 Stel p 1,..., p n zijn getallen 0 < p i < 1. Bereken dan log n i=1 p i door n i=1 log p i. Voorbeeld: Geeft p = 2.^(-(1:n)); x = log(prod(p)); y = sum(log(p)); n log log 10-38.12-38.12 20-145.56-145.56 30-322.31-322.31 40-568.38-568.38 50 -Inf -883.76 60 -Inf -1268.46 70 -Inf -1722.47 80 -Inf -2245.80 90 -Inf -2838.44 100 -Inf -3500.39 c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 43 / 49 c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 44 / 49

Ook in Plot Meer Tips voor Opdracht 1 Log likelihood functie log i f (x i λ, µ) versus i log f (x i λ, µ) als functie van λ. Gegeven een functie van twee variabelen θ, x: f (θ, x) = x θ e x (θ, x > 0). Bij een gegeven x-waarde, bv x = 4, wordt de functie een functie van alleen θ. Gevraagd de grafiek ervan te plotten op [0, 5]. x = 4; theta = linspace(0,5,200); L = x.^theta * exp(-x); plot(theta,l); Merk op: x.^theta is de vector [ 4 θ 1, 4 θ 2,..., 4 θ ] 200. c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 45 / 49 c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 46 / 49 Meer Tips voor Opdracht 1 Meer Tips voor Opdracht 1 Oplossing 1: Stel x 1,..., x 10 zijn 10 waarden van x (data), en je beschouwt het product als functie van θ: 10 ( ) L(θ) = xi θ e x i (θ > 0). Schrijf een Matlab script om de grafiek van L(θ) te plotten op [0, 5]. i=1 theta = linspace(0,5,200); L = prod(x.^theta.* exp(-x)); plot(theta,l); Geeft foutmelding; want wat is (x 1,..., x 10 ) (θ 1,...,θ 200 )? theta = linspace(0,5,200); L = zeros(1,200); for i=1:200 L(i) = prod(x.^theta(i).* exp(-x)); plot(theta,l); Want: x.^theta(i) is de vector [ x θ i 1, xθ i 2,..., xθ i 10], en exp(-x) is de vector [ e x 1, e x 2,..., e x ] 10. En dus is x.^theta(i).* exp(-x) de vector Hiervan het prod van nemen geeft [ x θ i 1 e x 1, x θ i 2 e x 2,..., x θ i 10 e x 10 ]. L i = 10 j=1 x θ i j e x j. En dit afzonderlijk voor i = 1, 2,..., 200 (zie de for loop). c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 47 / 49 c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 48 / 49

Meer Tips voor Opdracht 1 Oplossing 2: Voor elke θ is Dus 10 ( 10 ) θ xj θ e x j = x j e 10 j=1 x j. j=1 j=1 xp = prod(x); xs = sum(x); theta = linspace(0,5,200); L = xp.^theta * exp(-xs); plot(theta,l); c Ad Ridder (VU) Numerical Methods Periode 1 (2015-2016) 49 / 49