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