Een Inleiding in de Numerieke Lineaire...

39
Een Inleiding in de Numerieke Lineaire Algebra P. de Groen In deze cursusnota’s bij de cursus Numerieke Lineaire Algebra van het tweede jaar bachelor in de wiskunde worden de standaard algoritmen behandeld voor het oplossen van een stelsel lineaire vergelijkingen en een lineair kleinste-kwadratenprobleem. Voor een goed begrip van de werking van de algoritmen in de praktijk wordt dit voorafgegaan door een inleiding in de analyse van afrondfouten en een inleiding in Matlab als eenvoudig hulpmiddel voor het doen van experimenten. De standaardreferentie is het boek G.H. Golub & C.F. Van Loan, Matrix Computations, The Johns Hopkins University Press, Baltimore, Maryland, USA, 2 de druk, 1988. Contents 1 een mini-inleiding in MATLAB 2 2 Voorbeelden van instabiele algoritmen 6 2.a Recursieve berekening van een integraal.................. 6 2.b De berekening van de variantie ...................... 7 3 Foutenanalyse 8 3.a Elementaire definities ........................... 8 3.b Voorstelling van re¨ ele getallen en “floating-point” aritmetiek ...... 8 3.c De onvermijdelijke fout .......................... 10 3.d Voorbeelden van een afrondfoutenanalyse ................ 10 3.e oefeningen .................................. 13 4 Lineaire Algebra 14 4.a notaties ................................... 14 4.b oefeningen .................................. 16 4.c De singuliere-waardenontbinding ..................... 17 4.d Het Conditiegetal .............................. 19 4.e oefeningen .................................. 20 4.f Gausseliminatie ............................... 21 4.g De algoritme van Crout .......................... 25 4.h afrondfoutenanalyse ............................ 26 4.i oefeningen .................................. 26 5 Lineaire kleinste-kwadratenproblemen 28 5.a De normaalvergelijkingen ......................... 29 5.b De methode van Gram-Schmidt ...................... 30 5.c Householdertransformaties ......................... 33 5.d Givens rotaties ............................... 36 1

Transcript of Een Inleiding in de Numerieke Lineaire...

Page 1: Een Inleiding in de Numerieke Lineaire Algebrahomepages.vub.ac.be/~pdegroen/numeriek/CursusNA2Ba.pdf“Matlab” is een interactieve taal, ontworpen door Cleve Moler, die is ontstaan

Een Inleiding in de Numerieke Lineaire Algebra

P. de Groen

In deze cursusnota’s bij de cursus Numerieke Lineaire Algebra van het tweede jaar bachelorin de wiskunde worden de standaard algoritmen behandeld voor het oplossen van een stelsellineaire vergelijkingen en een lineair kleinste-kwadratenprobleem. Voor een goed begrip vande werking van de algoritmen in de praktijk wordt dit voorafgegaan door een inleiding inde analyse van afrondfouten en een inleiding in Matlab als eenvoudig hulpmiddel voor hetdoen van experimenten. De standaardreferentie is het boekG.H. Golub & C.F. Van Loan, Matrix Computations, The Johns Hopkins University Press,Baltimore, Maryland, USA, 2de druk, 1988.

Contents

1 een mini-inleiding in MATLAB 2

2 Voorbeelden van instabiele algoritmen 6

2.a Recursieve berekening van een integraal. . . . . . . . . . . . . . . . . . 62.b De berekening van de variantie . . . . . . . . . . . . . . . . . . . . . . 7

3 Foutenanalyse 8

3.a Elementaire definities . . . . . . . . . . . . . . . . . . . . . . . . . . . 83.b Voorstelling van reele getallen en “floating-point” aritmetiek . . . . . . 83.c De onvermijdelijke fout . . . . . . . . . . . . . . . . . . . . . . . . . . 103.d Voorbeelden van een afrondfoutenanalyse . . . . . . . . . . . . . . . . 103.e oefeningen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

4 Lineaire Algebra 14

4.a notaties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144.b oefeningen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164.c De singuliere-waardenontbinding . . . . . . . . . . . . . . . . . . . . . 174.d Het Conditiegetal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194.e oefeningen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204.f Gausseliminatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214.g De algoritme van Crout . . . . . . . . . . . . . . . . . . . . . . . . . . 254.h afrondfoutenanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264.i oefeningen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

5 Lineaire kleinste-kwadratenproblemen 28

5.a De normaalvergelijkingen . . . . . . . . . . . . . . . . . . . . . . . . . 295.b De methode van Gram-Schmidt . . . . . . . . . . . . . . . . . . . . . . 305.c Householdertransformaties . . . . . . . . . . . . . . . . . . . . . . . . . 335.d Givens rotaties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

1

Page 2: Een Inleiding in de Numerieke Lineaire Algebrahomepages.vub.ac.be/~pdegroen/numeriek/CursusNA2Ba.pdf“Matlab” is een interactieve taal, ontworpen door Cleve Moler, die is ontstaan

1 EEN MINI-INLEIDING IN MATLAB 2

1 een mini-inleiding in MATLAB

“Matlab” is een interactieve taal, ontworpen door Cleve Moler, die is ontstaan uit een demon-stratieproject, waarmee studenten op een eenvoudige wijze zouden kunnen experimenteren metrekenmethoden in de lineaire algebra met gebruik van de standaardroutines uit LINPACK (pakketvoor het oplossen van lineaire stelsels vergelijkingen) en EISPACK (pakket voor het eigen-waardeprobleem) zonder zelf de basisalgoritmen gedetailleerd te moeten implementeren. Hetontwerp was zo succesvol, dat Moler een onderneming oprichtte (MathWorks) die het ontwerpheeft uitgebouwd tot een zeer krachtige programmeeromgeving met een uitgebreide verzamel-ing numerieke en grafische hulpmiddelen voor het oplossen (en simuleren) van problemen en hetgrafisch voorstellen van de oplossing.

De basis-datastructuur is de matrix. Met de instructie “p=5; q=7; A = rand(p,q)” wordteen reele matrix gecreeerd met 5 rijen en 7 kolommen (in IR5×7 dus) bestaande uit uniform op[0 , 1] verdeelde random getallen. Een matrix met een kolom is een kolomvector, een matrix meteen rij is een rijvector en een enkele “real” staat gelijk met een 1×1–matrix; de typen real envector zijn dus geen aparte datatypen. Er wordt gerekend met de standaard IEEE 64-bits reals.Bewerkingen met matrices en vectoren volgen de standaard regels van de lineaire algebra. Eenmatrix kun je altijd vermenigvuldigen met een scalair (= 1×1–matrix), twee matrices van gelijkeafmetingen kun je optellen en aftrekken en als A ∈ IRp×q en B ∈ IRq×r, dan is het productde matrix AB ∈ IRp×r. Het accent wordt gebruikt voor transpositie, dus als A ∈ IRp×q danA′ ∈ IRq×p. Het systeem rekent even gemakkelijk met complexe matrices volgens de geldenderegels uit de lineaire algebra. Een complex getal wordt altijd voorgesteld in de vorm reeel deel +i × imaginair deel. Het accent geeft dan transpositie plus complex toevoegen aan.Voorbeeld (>> is de matlab-prompt):

>> x=[1+i,1-i]

x =

1.0000 + 1.0000i 1.0000 - 1.0000i

>> x’

ans =

1.0000 - 1.0000i

1.0000 + 1.0000i

>> x’*x

ans =

2.0000 0 - 2.0000i

0 + 2.0000i 2.0000

>> x*x’

ans = 4

>>

Er zijn allerhande mogelijkheden om deelmatrices te selecteren, b.v. als A ∈ Cp×q, dan isreal(A)∈ IRp×q het reele deel en imag(A)∈ IRp×q het imaginaire deel. A(:,k) is de k-de kolom(mits 1 ≤ k ≤ q) en A(1:3,2:2:q) is een matrix bestaande uit de elementen met even kolomindexuit de eerste 3 rijen van A. De opdracht x = A\b lost het stelsel vergelijkingen Ax = b opmet de optimale methode, dus met Gausseliminatie met rijverwisseling als A vierkant en goedgeconditioneerd is, en met een QR-ontbinding of een Singuliere-waardenontbinding als A slechtgeconditioneerd of niet vierkant is. De dimensies van b en A moeten natuurlijk compatibel zijn.Het hele scala van standaard matrix- en vectorroutines, zoals FFT, QR, LU, Choleski, SVD ende berekening van eigenwaarden/eigenvectoren is beschikbaar.

Het systeem is op het eerste gezicht “commandline-oriented” en interpreterend, maar er zijnuitgebreide mogelijkheden tot het oproepen van routines (m-files zonder parametersubstitutie enzonder locale variabelen) en functies (met call by value invoerparameters en uitvoerparameters).

Page 3: Een Inleiding in de Numerieke Lineaire Algebrahomepages.vub.ac.be/~pdegroen/numeriek/CursusNA2Ba.pdf“Matlab” is een interactieve taal, ontworpen door Cleve Moler, die is ontstaan

1 EEN MINI-INLEIDING IN MATLAB 3

De standaard controlestructuren zijn (zie help if, help for, etc)if <boolean> , <statements> else <statements> end

for <variable> = <range> , <statements> end

while <boolean> , <statements> end

Een “ , ” (komma) en een “ ; ” (puntkomma) en een <eoln> (end-of-line) worden gebruikt omstatements van elkaar te scheiden. Een opdracht in het command-window wordt geınterpreteerden onmiddellijk uitgevoerd en het resultaat wordt in het commandwindow afgedrukt, tenzij destatement wordt afgesloten met een “ ; ”.

Omdat iedere programmaregel geınterpreteerd wordt, is de berekening van het inproductfor k = 1:100 , s = s + a(k) ∗ b(k) ; end

van de kolomvectoren a en b van lengte n, veel trager dan de opdracht s = a’ * b .

Ook de statement [m,i]= max(abs(A(1:n,k))) is veel sneller dan het equivalentem=0; for j = 1:n, if abs(A(j,k)) > m, i = j; m = abs(A(j,k)); end, end .

Een declaratie van een matrix of vector is in principe niet nodig. Een datastruktuur wordtautomatisch gecreeerd en/of uitgebreid, indien nodig. B.v. in

for k = 1:100, c(k) = a(k) ∗ b(k) ; end

wordt de vector c in iedere slag met een element verlengd (en dus worden alle reeds aanwezigeelementen in iedere slag gecopieerd naar een nieuwe plaats in het geheugen). Veel sneller zal devolgende variant zijn, waarin vooraf de gehele vector ineens wordt gecreeerd:

c = zeros(100,1); for k = 1:100, c(k) = a (k) ∗ b(k) ; end

Nog sneller kunnen we dit doen met een “elementsgewijze” vermenigvuldiging1 “ . ∗ ”:c = a .* b

Let wel op, met “c = a .* b” wordt een nieuwe matrix van de gevraagde afmetingen gecreeerd,terwijl met “c(:,k) = a .* b” de k-de kolom van de bestaande matrix c wordt overschrevenmet nieuwe waarde. In dit laatste geval moet deze matrix c wel de goede kolomlengte hebben;als er reeds k of meer kolommen zijn wordt de k-de overschreven en als er minder zijn, wordt dematrix uitgebreid met het benodigde aantal kolommen (met nullen).

Je kunt in Matlab interactief opdrachten intypen, maar (wat veel handiger is) je kunt ookscript- en function- files (in de vorm van m-files) maken, waarin je een “programma” neer-schrijft en die je telkens weer kunt oproepen. Beide files zijn text-files met “extensie” .m . Ineen script m-file kun je een aantal opdrachten zetten die door matlab worden uitgevoerd alsje de naam van de file intypt in het command window; met “echo on” krijg je alle opdrachtenachtereenvolgens op je scherm en met “echo off” zet je dit weer af. Alle variabelen die je in eenscript-file definieert zijn globaal en blijven bestaan na afloop. Het kan dus handig zijn zo’n scriptfile te beginnen met “clear all, clc” om alle aanwezige globale variabelen weg te gooien enhet command window leeg te maken, zodat je programma geen gebruik kan maken van rommel,die na een vorige verwerking is achtergebleven.

Een functie (een functie-m-file) is een onafhankelijk programmaonderdeel, dat je kunt oproepen,waaraan je parameters kunt meegeven (invoerparameters) en waarvan je de resultaten via uitvo-erparameters weer ter beschikking kunt stellen van het oproepende programmaonderdeel. Vooriedere functie maak je een aparte m-file met naam “<functienaam>.m” en eerste regel “[a,b] =

function <functienaam>(x,y,z)”, waarbij “x, y, z” de invoerparameters (call by value) en“a, b” de uitvoerparameters zijn. Het aantal actuele in- en uitvoerparameters mag kleiner zijndan het aantal formele. Binnen de functie is het aantal actuele in- en uitvoerparameters op tevragen met “nargin” resp. “nargout”. De nietgespecificeerde invoerparameters kun je dan een

1De vermenigvuldigingsoperator “*”, de delingsoperator “/” en de machtsverheffing “^” volgen de gebruikelijkerekenregels voor matrices. De elementsgewijze operatoren “.*”, “./” en “.^” voeren de bedoelde operatie uit opelementen met gelijke indices, mits beide operanden (matrices) gelijke afmetingen hebben. Als “A” een matrix is,dan is “A*A” of “A^2” het product van “A” met zichzelf en dit product is alleen gedefinieerd als “A” vierkant is; “A.*A”of “A.^2” is een matrix van gelijke afmetingen als “A” met als elementen de kwadraten van de overeenkomstigeelementen van “A”.

Page 4: Een Inleiding in de Numerieke Lineaire Algebrahomepages.vub.ac.be/~pdegroen/numeriek/CursusNA2Ba.pdf“Matlab” is een interactieve taal, ontworpen door Cleve Moler, die is ontstaan

1 EEN MINI-INLEIDING IN MATLAB 4

default-waarde geven. De dimensies van een variabele zijn op te vragen met “size”. Binnen eenfunctie zijn alle variabelen locaal en kan er geen beroep worden gedaan op globaal aanwezige vari-abelen (behalve “pi” en “i”); dit is dus anders dan bij een oproep van een script-m-file, waarbijde letterlijke inhoud van de file ter plaatse wordt gesubstitueerd en uitgevoerd. Om de naam vaneen functie als parameter door te geven moet een kunstgreep uitgehaald worden die veel lijkt ophet “call by name”-mechanisme van “algol60”. De oproep van de doorgegeven functie wordt alsrij karakters opgebouwd en aan de functie “eval” aangeboden ter evaluatie, zoals in het volgendevoorbeeld voor het doorgeven van een functienaam aan een functie-m-file (alle karakters op eenregel vanaf het %-teken zijn commentaar):

function [y,aantal]=integraal(fun,a,b,n)

% oproep I=integraal(’mijnfun’,0,1,23)

% voor het integreren van de functie met naam "mijnfun".

% Deze functie kan een standaardfunctie zijn in matlab zoals "sin" of "atan"

% of "exp" of een zelfgeschreven m-file met naam "mijnfun.m", zie beneden

% de functie moet zo geschreven zijn dat deze een vector als

% parameter kan meekrijgen en een even grote vector als resultaat aflevert

h=(b-a)/n;

x=a+(0:n)*h;

aantal=n+1;

funexpr=[fun,’(x)’]; % opbouw van de functie-oproep

z=eval(funexpr); % uitvoering d.m.v. eval

y=(z(1)+z(n+1)+2*sum(z(2:n)))*h/2;

% Voorbeeld van een functiefile:

%% function w=mijnfun(x);

%% w=1./(x.^2+1)

% Als je m-file-functie alleen kan rekenen met een scalaire

% parameter, dan moet je de laatste drie regels van de integraal-m-file

% vervangen door:

%% z=zeros(size(x));

%% for k=1:n+1,funexpr=[fun,’(x(k))’];z(k)=eval(funexpr);end

%% y=(z(1)+z(n+1)+2*sum(z(2:n)))*h/2;

Een alternatieve mogelijkheid in een nieuwere versie van matlab is de mogelijkheid om de func-tie via @<functienaam> door te geven en de functiewaarden binnen de oproepende functie teevalueren met feval(<functienaam>,<parameters>).

function [y,aantal]=integraal(fun,a,b,n)

% oproep I=integraal(@mijnfun,0,1,23)

% voor het integreren van de functie met naam "mijnfun".

% Deze functie kan een standaardfunctie zijn in matlab zoals "sin" of "atan"

% of "exp" of een zelfgeschreven m-file met naam "mijnfun.m", zie boven

% de functie moet zo geschreven zijn dat deze een vector als

% parameter kan meekrijgen en een even grote vector als resultaat aflevert

h=(b-a)/n;

x=a+(0:n)*h;

aantal=n+1;

z=eval(fun,x); % evalueer de functie "fun" met de vector "x" als argument

y=(z(1)+z(n+1)+2*sum(z(2:n)))*h/2;

De Matlab-software is voorzien van uitgebreide 2D en 3D grafische hulpmiddelen (met inter-actieve mogelijkheden, zie “help plot” en “help surf”) en goede documentatie via een “help<commandnaam>” op de command line en via een help-window. Er is een uitgebreide verzameling

Page 5: Een Inleiding in de Numerieke Lineaire Algebrahomepages.vub.ac.be/~pdegroen/numeriek/CursusNA2Ba.pdf“Matlab” is een interactieve taal, ontworpen door Cleve Moler, die is ontstaan

1 EEN MINI-INLEIDING IN MATLAB 5

“toolboxen” voor ijle matrices, signaalverwerking, niet-lineaire vergelijkingen, spline-interpolatie,simulaties, wavelets, gewone en partiele differentiaalvergelijkingen en er is zelfs een interface metMaple.

N.B. 1: “i”, “eps” en “ans” zijn standaard variabelen, de imaginaire eenheid√−1 , de standaard

machineprecisie resp. het laatst berekende en in het command window afgedrukte anonyme ant-woord. Je kan problemen verwachten als je deze herdefinieert.

N.B. 2: Onder Linux kun je matlab opstarten door in een terminal window of console na delinux-prompt het commando “matlab&” in te typen. De terminal window kun je daarna min-imaliseren, maar je mag hen niet afsluiten, anders verdwijnt matlab weer. De computers in hetcomputerzaaltje van de vakgroep wiskunde op 10F gebruiken een licentie van een server bij TW;het opstarten kan nogal eens lang duren.

N.B. 3: De uitkomst van een statement wordt op het scherm afgedrukt, tenzij de statement wordtafgesloten met een “;”. Het formaat van de print wordt bestuurd door de opdracht format metparameters short, long, short e, long e, +, zie help format.Met de opdracht fprintf heb je volledige controle over de manier waarop de gewenste uitvoerop het scherm (of in een file) komt te staan. Voorbeeld:

x = 0 : .1 : 1; y = [x; exp(x)]; fprintf(′ %6.2f %20.8d \n ′, y);

Tussen de aanhalingstekens staat het “format” waarmee de inhoud van de vector y wordt afge-drukt, “%6.2f” geeft aan dat het eerstvolgende getal in de invoerrij moet worden afgedrukt infixed-point notatie op een veld van 6 posities met twee cijfers achter de decimale punt, “%20.8d”geeft aan dat het eerstvolgende getal in de invoerrij moet worden afgedrukt in floating-point no-tatie op een veld van 20 posities met een mantisse met acht cijfers achter de decimale punt en“\n” geeft aan dat de printer moet overgaan naar de volgende regel alvorens volgende getallenaf te drukken. De elementen van de vector y worden rijsgewijs afgelopen. Het format-voorschriftwordt telkens herhaald totdat de invoerrij leeg is.

Een uitgebreidere inleiding tot Matlab, A Matlab Primer van Kermit Sigmon, staat op mijnwebsite, http://homepages.vub.ac.be/∼pdegroen/numeriek/matlab primer.pdf .De zoekwoorden ‘matlab tutorial’ geeft op het internet een grote verzameling van goede inleidin-gen tot Matlab, o.a. die van de producent “Mathworks” zelf.

Page 6: Een Inleiding in de Numerieke Lineaire Algebrahomepages.vub.ac.be/~pdegroen/numeriek/CursusNA2Ba.pdf“Matlab” is een interactieve taal, ontworpen door Cleve Moler, die is ontstaan

2 VOORBEELDEN VAN INSTABIELE ALGORITMEN 6

2 Voorbeelden van instabiele algoritmen

2.a Recursieve berekening van een integraal.

Definieer de integraal

En :=

∫ 1

0xnex−1dx voor n = 0, 1, 2, 3, · · · .

De waarde van E0 is eenvoudig uit te rekenen,

E0 =

∫ 1

0ex−1dx = ex−1

1

0= 1− e−1 = 0.63212055882856 .

Voor andere waarden van n leiden we via partiele integratie de volgende recursie af:

En =

∫ 1

0xnex−1dx = xnex−1

1

0− n

∫ 1

0xn−1ex−1dx = 1 − nEn−1.

De voorwaartse recursie,

E0 := 1− e−1 , En := 1− nEn−1 (n = 1, 2, · · ·),

is instabiel, zoals blijkt uit de negatieve waarde voor n = 18 in de tabel hieronder. De reden is,dat een fout ε in Ek−1 een fout kε in Ek veroorzaakt. De fout in E18 is dus ongeveer 18! ≈ 1016

maal die in E0.

De achterwaartse recursie,

kies Em = willekeurig , En−1 = (1− En)/n (n = m, m− 1, · · ·),

is stabiel ongeacht de startwaarde voor Em, en geeft de correcte waarde van En als m maarvoldoend groot wordt gekozen t.o.v. n . Dit zien we in kolom 4, waar E18 = 0 gekozen is; hierneemt de fout bij iedere iteratie verder af en bij E5 is deze in de afrondfout verdwenen.

n voorwaarts achterwaarts achterwaarts verschil tussenvanaf k = 0 vanaf n = 50 vanaf n = 18 kolommen 3 en 4

0 0.63212055882856 0.63212055882856 0.63212055882856 0.000000000000001 0.36787944117144 0.36787944117144 0.36787944117144 0.000000000000002 0.26424111765712 0.26424111765712 0.26424111765712 0.000000000000003 0.20727664702865 0.20727664702865 0.20727664702865 -0.000000000000004 0.17089341188538 0.17089341188538 0.17089341188538 0.000000000000005 0.14553294057308 0.14553294057308 0.14553294057308 -0.000000000000006 0.12680235656152 0.12680235656153 0.12680235656152 0.000000000000017 0.11238350406936 0.11238350406930 0.11238350406934 -0.000000000000048 0.10093196744509 0.10093196744559 0.10093196744528 0.000000000000329 0.09161229299417 0.09161229298966 0.09161229299250 -0.00000000000284

10 0.08387707005829 0.08387707010339 0.08387707007499 0.0000000000284111 0.07735222935878 0.07735222886266 0.07735222917515 -0.0000000003124812 0.07177324769464 0.07177325364803 0.07177324989825 0.0000000037497813 0.06694777996972 0.06694770257562 0.06694775132275 -0.0000000487471414 0.06273108042387 0.06273216394138 0.06273148148148 0.0000006824599015 0.05903379364190 0.05901754087930 0.05902777777778 -0.0000102368984816 0.05545930172957 0.05571934593124 0.05555555555556 0.0001637903756817 0.05719187059731 0.05277111916899 0.05555555555556 -0.0027844363865618-0.02945367075154 0.05011985495809 0 0.05011985495809

Page 7: Een Inleiding in de Numerieke Lineaire Algebrahomepages.vub.ac.be/~pdegroen/numeriek/CursusNA2Ba.pdf“Matlab” is een interactieve taal, ontworpen door Cleve Moler, die is ontstaan

2 VOORBEELDEN VAN INSTABIELE ALGORITMEN 7

2.b De berekening van de variantie

De variantie van een stel metingen kan berekend worden met twee Mathematisch equivalenteformules. Gegeven n metingen {x1, x2, · · · , xn} van een grootheid X, dan is zijn gemiddeldeg en variantie S2 gegeven door

g :=1

n

n∑

k=1

xk , S2n :=

1

n− 1

n∑

k=1

(xk − g)2 =1

n− 1

(n∑

k=1

x2k − ng2

).

De tweede formule is potentieel numeriek instabiel (als S2n << g2) en veel gevoeliger voor kleine

storingen van het gemiddelde g, zoals we zien in het volgende experiment.

Experiment (met Matlab, >> is de matlab-prompt)

>> format short e

>> RelStoringG=1e-12

RelStoringG =

1.0000e-012

>> n=10000;

>> x=randn(n,1)+1e8*ones(n,1);

>> g=sum(x)/n;

>> sig2=x’*x-n*g*g;

>> sig1=(x-g*ones(size(x)))’*(x-g*ones(size(x)));

>> g=sum(x)/n*(1+RelStoringG);

>> sig2s=x’*x-n*g*g;

>> sig1s=(x-g*ones(size(x)))’*(x-g*ones(size(x)));

>> Waarden=[sig1,sig2,sig1s,sig2s]

Waarden =

9.7946e+003 -8.1920e+004 9.7946e+003 -2.0008e+008

>> sprintf([’berekende waarde met formule 1 : %25.15e\ n’,...

’berekende waarde met formule 1 en relatieve storing van g : %25.15e\ n’,...

’berekende waarde met formule 2 : %25.15e\ n’,...

’berekende waarde met formule 2 en relatieve storing van g : %25.15e\ n’]...

,sig1,sig2,sig1s,sig2s)

ans =

berekende waarde met formule 1 : 9.794567005712350e+003

berekende waarde met formule 1 en relatieve storing van g : 9.794567105990183e+003

berekende waarde met formule 2 : -8.192000000000000e+004

berekende waarde met formule 2 en relatieve storing van g : -2.000814080000000e+008

De met formule 2 berekende som van kwadraten is in dit experiment zelfs (toevallig) negatief en

zeer gevoelig voor een kleine relatieve storing van het berekende gemiddelde.

Page 8: Een Inleiding in de Numerieke Lineaire Algebrahomepages.vub.ac.be/~pdegroen/numeriek/CursusNA2Ba.pdf“Matlab” is een interactieve taal, ontworpen door Cleve Moler, die is ontstaan

3 FOUTENANALYSE 8

3 Foutenanalyse

3.a Elementaire definities

Gegeven is een grootheid X en haar benadering X . De absolute en relatieve fouten in de be-nadering X worden gegeven door:

absolute fout in X : FX := X −X zodat X = X + FX ,

relatieve fout in X : fX :=X −X

Xzodat X = X(1 + fX) (mits X 6= 0).

(3.1)

Het begrip “absolute fout” heeft in principe niets te maken met absolute waarden; absoluut staatslechts in tegenstelling tot relatief. De absolute fout heeft dezelfde dimensies (bv. lengte, gewicht,tijd) als de grootheid zelf, terwijl de relatieve fout dimensieloos is.

Opgave 1: laat zien, dat voor de absolute en relatieve fouten in de twee grootheden X en Y geldt:

FX+Y = FX + FY en fX∗Y = fX + fY + fXfY .

Als we de (absolute of relatieve) fout in een (gemeten of berekende) grootheid X kennen, dan

kennen we ook de grootheid zelf! Helaas zijn we bijna nooit in deze situatie en kennen we alleeneen bovengrens voor de absolute waarde van de fout. In het gangbare spraakgebruik spreken wegewoonlijk over de “fout” in een grootheid terwijl we zo’n bovengrens bedoelen (of nog erger,terwijl we de spreiding in de stochastische fluctuaties rond de exacte waarde bedoelen). Dus, bijeen gegeven benadering X van een grootheid X definieren we:

∆X is (een bovengrens voor) de absolute fout in X als | X −X | ≤ ∆X ,

δX is (een bovengrens voor) de relatieve fout in X als

∣∣∣∣∣X −X

X

∣∣∣∣∣ ≤ δX .(3.2)

Opgave 2: Bewijs de volgende rekenregels voor “de fouten” in de grootheden X en Y :

∆X±Y ≤ ∆X + ∆Y ∆XY ≤ |Y |∆X + |X|∆Y + ∆X∆Y ,

δX±Y ≤|X|δX + |Y |δY

|X ± Y | δXY ≤ δX + δY + δXδY .(3.3)

N.B. Lees deze regels alsvolgt: Als ∆X en ∆Y bovengrenzen zijn voor de fouten in X resp. Y ,dan is er een bovengrens ∆X±Y voor de fout in X±Y waarvoor geldt ∆X±Y ≤ ∆X +∆Y . Hieruitvolgt dus dat ∆X + ∆Y een bovengrens voor de fout in X ± Y is, etc.Wat zijn de overeenkomstige rekenregels voor de absolute en relatieve fouten (bovengrenzen) inhet quotient X/Y ?

3.b Voorstelling van reele getallen en “floating-point” aritmetiek

Om een groot dynamisch bereik mogelijk te maken voor reele getallen worden deze in een computeropgeslagen in de vorm mantisse maal exponent. Hiertoe wordt een grondtal β (meestal 2, soms 8(vroeger op CDC) of 16 (IBM)) gekozen. Een x ∈ IR kan dan worden voorgesteld door een paar(m, e) met

x = m · βe , (3.4)

waarin m de mantisse is en e de exponent. Omdat het paar (m · β , e − 1 ) hetzelfde getalvoorstel kunnen we de mantisse normaliseren, b.v. door 1/β ≤ |m | < 1. Het spreekt vanzelf datwe in de praktijk een eindige representatie willen hebben en dus het aantal β-tallige cijfers in

Page 9: Een Inleiding in de Numerieke Lineaire Algebrahomepages.vub.ac.be/~pdegroen/numeriek/CursusNA2Ba.pdf“Matlab” is een interactieve taal, ontworpen door Cleve Moler, die is ontstaan

3 FOUTENANALYSE 9

mantisse en exponent zullen beperken. De IEEE-standaard voor 64-bits REALs is een tweetalligerepresentatie (β = 2) met 53 resp. 10 bits voor de absolute waarden van mantisse en exponenten twee tekenbits. Omdat een genormaliseerde binaire mantisse altijd begint met een 1 (ga na!),hoeft dit eerste bit niet opgeslagen te worden. Met 10 bits is ook de grootte van de exponent aaneen maximum gebonden. Getallen die een exponent groter dan 210 of kleiner dan 2−10 vragen(waarvan de absolute waarde dus kleiner dan (ongeveer) 10−300 of groter dan 10300 is), kunnendus niet gerepresenteerd worden; we spreken dan van over- of underflow. De IEEE-standaardgeeft de mogelijkheid om by underflow een getal op nul te zetten, en bij overflow een NaN (Nota Number) te genereren zodat er een soepele foutenopvang mogelijk is. Een reeel getal binnenhet bereik zal in het algemeen niet exakt gerepresenteerd kunnen worden. Voor een gegevenx ∈ IR (binnen het bereik) noteren we met fl(x) het meest naburige wel repesenteerbare getal(machinegetal). Het verschil x− fl(x) is dan de afrondfout.

Stelling. Als voor een machinegetal een β-tallige representatie wordt gekozen met t bits in demantisse, dan geldt voor de relatieve afrondfout bij afronding naar het dichtstbijzijnde machi-negetal (behoudens over- en underflow):

∣∣∣∣x− fl(x)

x

∣∣∣∣ ≤ η maar ook

∣∣∣∣x− fl(x)

fl(x)

∣∣∣∣ ≤ η met η := 12β1−t . (3.5)

De grootheid η heet de machineprecisie.

Opgave 3: Bewijs deze stelling.Ga ook na, dat er (behoudens over- en underflow) getallen ε1 en ε2 zijn bij iedere aritmetischeoperatie ⊙ ∈ {+,−, ∗, /} tussen twee machinegetallen x en y, zodat

fl(x⊙ y) = (x⊙ y)(1 + ε1) =x⊙ y

1 + ε2met |ε1| ≤ η en ε2| ≤ η . (3.6)

Opmerking. We kunnen η ook definieren als het grootste reele getal, zodat fl(1 + η) = 1, ga na!

Opgave 4: De reeksontwikkeling van de exponentiaal is: ex =∞∑

k=0

xk

k!

Hoeveel termen heb je nodig om e−5 te berekenen met een relatieve fout kleiner dan 10−3?Kun je dit doen met een computer, waarin de variabelen van het type IR een mantisse van 4decimalen hebben ?Is er een betere manier om e−5 te berekenen met zo’n computer ?

Opgave 5: Laat f een voldoend gladde reele funktie (b.v. f(x) = sin(x)) zijn met

maxx|f ′′′(x)| ≤M .

De afgeleide van f in x kunnen we dan benaderen met de centrale differentie

Dhf(x) :=f(x + h)− f(x− h))

2h.

Laat zien, dat voor de afbreekfout in Dhf geldt:

f(x + h)− f(x− h)

2h= f ′(x) +

h2

6f ′′′(x + ϑh) met |ϑ| ≤ 1 . (3.7)

Veronderstel, dat er voor de berekening van f een procedure beschikbaar is, die bij iedere waardevan x een resultaat aflevert met een relatieve fout kleiner dan of gelijk aan 2η . Geef dan een(goede) bovengrens voor de relatieve fout in de berekende waarde van Dhf als funktie van h enschets een grafiek van (een bovengrens voor) de totale fout (afbreek- plus afrondfout) in dezeberekende waarde.

Page 10: Een Inleiding in de Numerieke Lineaire Algebrahomepages.vub.ac.be/~pdegroen/numeriek/CursusNA2Ba.pdf“Matlab” is een interactieve taal, ontworpen door Cleve Moler, die is ontstaan

3 FOUTENANALYSE 10

3.c De onvermijdelijke fout

We beschouwen het probleem om voor een gegeven (gladde, minstens C2) functie f op IR en vooreen gegeven argument x de waarde van f(x) te berekenen met een of andere formule of algoritme.A priori weten we dat we bij berekening op en computer de gegeven x zullen moeten afrondentot een binair “machinegetal” en dat we dus eigenlijk een ander sommetje oplossen, namelijky = f(x + ξ) met (onbekende) relatieve fout | ξ/x | ≤ η kleiner dan de machineprecisie. MetTaylor zien we

y = f(x + ξ) = f(x) + ξ f ′(x) + O(ξ2) zodat y − y ≈ ξ f ′(x) .

Voor de relatieve afwijking geldt dus

y − y

y≈ ξ

x

x f ′(x)

f(x)en bij benadering

∣∣∣∣y − y

y

∣∣∣∣ ≤ C η met C :=

∣∣∣∣x f ′(x)

f(x)

∣∣∣∣ . (3.8)

De foutvermenigvuldigingsfactor C noemen we het conditiegetal van het probleem.Omdat we het resultaat van de berekening y nog moeten converteren naar een decimaal antwoordy = y (1+ϑ) met |ϑ | ≤ η vinden we de bovengrens (C+1)η voor de relatieve fout in de berekendewaarde y . We noemen deze fout de onvermijdelijke fout in de berekende waarde van y.

3.d Voorbeelden van een afrondfoutenanalyse

Gevraagd te berekenen x = ϕ(a).

Met een algoritme voor het berekenen van ϕ(a) vinden we ten gevolge van afrondfouten deberekende waarde: fl(x).

In een foutenanalyse proberen we fouten δx, δa of εa en εx te vinden, zodat

fl(x) = x + δx voorwaartse foutenanalyse= ϕ(a + δa) achterwaartse foutenanalyse= ϕ(a + εa) + εx gemengde foutenanalyse

Definitie: We noemen de algoritme numeriek stabiel als we kunnen bewijzen:δx of εx van de grootteorde van de onvermijdelijke fout,δa of εa van de grootteorde van de machineprecisie.

Voorbeeld 1: Er is een ε met | ε | ≤ η (= machineprecisie ) zodat

fl(a + b) =

a + b + ε (a + b) voorwaarts

a + b met a := a(1 + ε) en b := b(1 + ε) achterwaarts

Voorbeeld 2: Er zijn ε1 en ε2 ( met | εi | ≤ η ) zodat

fl(1 − x2) = (1 − x ∗ x ∗ (1 + ε1)) ∗ (1 + ε2)

= (1 − x2) (1 + ε2) met x := x√

1 + ε1 gemengd.

Voorbeeld 3: Geef een schatting van de afrondfout in de berekende waarde van de positievewortel van de vierkantsvergelijking

a − 2x − c x2 met a ≥ 0 en c ≥ 0

bij gebruik van de formule

x :=−1 +

√1 + a c

c

Page 11: Een Inleiding in de Numerieke Lineaire Algebrahomepages.vub.ac.be/~pdegroen/numeriek/CursusNA2Ba.pdf“Matlab” is een interactieve taal, ontworpen door Cleve Moler, die is ontstaan

3 FOUTENANALYSE 11

onder de aanname betreffende de afrondfout in de berekende waarde van de vierkantswortel

fl(√

x) =√

x (1 + εx) met | εx | ≤ η voor iedere x .

Antwoord: Er bestaan ε1 , ε2 en ε3 met | εi | ≤ η , zodat

fl(√

1 + a c) =√

(1 + a c (1 + ε1)) (1 + ε2) (1 + ε3)

=√

1 + ac (1 + ξ1) met ξ1 :=√

1 + ε2 (1 + ε3) − 1 en a := a (1 + ε1)

Bijgevolg zijn er ξ2 en ξ3, ( | ξi | ≤ η ) zodat:

fl(x) =−1 +

√1 + a c (1 + ξ1)

c(1 + ξ2) (1 + ξ3)

=−1 +

√1 + a c

c(1 + ξ2) (1 + ξ3) +

√1 + a c

cξ1 (1 + ξ2) (1 + ξ3)

De tweede term kan groot zijn t.o.v. x als | ac | ≪ 1.

Alternatieve (numeriek stabiele) rekenwijze voor deze wortel:

x :=a

1 +√

1 + a c.

Voorbeeld 4: Afrondfout in de berekende waarde van het inprodukt

S :=n∑

i=1

xi yi berekend met algoritme:S := 0;for i := 1 to n do S := S + xi ∗ yi

Voor de berekende waarde van S vinden we getallen ξi en ηi met | ξi |, | εi | ≤ η, i = 1 · · · n :

fl(S) = x1 y1 (1 + ξ1) (1 + ε2) · · · (1 + εn)

+ x2 y2 (1 + ξ2) (1 + ε2) · · · (1 + εn)

+ · · ·+ xn−2 yn−2 (1 + ξn−2) (1 + εn−2) · · · (1 + εn)

+ xn−1 yn−1 (1 + ξn−1) (1 + εn−1) (1 + εn)

+ xn yn (1 + ξn) (1 + εn)

zodat

S − fl(S) =n∑

i=1

xi yi ζi

met

ζi := 1 − (1 + ξi) (1 + εi) · · · (1 + εn) en | ζi | ≤ (n − i + 2) η als nη ≤ 0.1 .

Bijgevolg geldt voor de voorwaartse fout:

| S − fl(S)

S| ≤ (n + 1) η

|S |n∑

i=1

|xi yi | ≤ (n + 1) η‖x ‖2 ‖y ‖2|xT y | (3.9)

Voorbeeld 5: Bereken xn uit de vergelijking

a =n∑

i=1

xi yi , a, x1 · · · xn−1 , y1 · · · yn gegeven,

Page 12: Een Inleiding in de Numerieke Lineaire Algebrahomepages.vub.ac.be/~pdegroen/numeriek/CursusNA2Ba.pdf“Matlab” is een interactieve taal, ontworpen door Cleve Moler, die is ontstaan

3 FOUTENANALYSE 12

en bepaal de afrondfout in de berekende waarde van xn.

Algoritme:

S := a;for i := 1 to n − 1 DO S := S − xi ∗ yi ;xn := S / yn

Voor de berekende waarden van S en xn vinden we voor zekere ξi en ηi met | ξi |, | εi | ≤ η :

fl(S) = a (1 + ε1) · · · (1 + εn−1)

− x1 y1 (1 + ξ1) (1 + ε1) · · · (1 + εn−1)

− x2 y2 (1 + ξ2) (1 + ε2) · · · (1 + εn−1)

− · · ·− xn−2 yn−2 (1 + ξn−2) (1 + εn−2) (1 + εn−1)

− xn−1 yn−1 (1 + ξn−1) (1 + εn−1)

enxn := fl(xn) = fl(S) / ( yn (1 + ξn) )

Deling door (1 + ε1) · · · (1 + εn−1) geeft de achterwaartse foutschatting:

a = x1 y1 (1 + ξ1) + x2 y21 + ξ2

1 + ε1+ · · ·

+ xn−1 yn−11 + ξn−1

(1 + ε1) · · · (1 + εn−2)

+ xn yn1 + ξn

(1 + ε1) · · · (1 + εn−1)

=n−1∑

i=1

xi yi (1 + δi) + xn yn (1 + δn)

met

δi :=1 + ξi

(1 + ε1) · · · (1 + εi−1)− 1 , zodat | δi | ≤ (i + 1) η als n η < 0.1 .

Conclusie: De berekende waarde xn is de oplossing van een naburige vergelijking

a =n∑

j=1

xj yj , yj := yj (1 + δj) . (3.10)

Voorbeeld 6, foutschatting voor En. In hoofdstuk 2a van de syllabus hebben we afgeleid:

En = 1− n En−1 . (3.11)

Laat En := fl(En) de berekende waarde van En zijn, dan zijn er getallen ξn en ζn waarvoor geldt:

En = fl(1− fl(n En−1)) = (1− n En−1(1 + ξn))/(1 + ζn) , | ξn | ≤ η en | ζn | ≤ η , (3.12)

of anders:En + ζnEn = 1− n En−1 − n ξn En−1 . (3.13)

Trekken we hiervan vergelijking (3.11) af, dan vinden we een recursie voor de verschillen met deexacte waarden

En − En = −n(En−1 − En−1)− ζnEn − n ξn En−1 (3.14)

of met Fn := En − En en δn := −ζnEn − n ξn En−1

Fn = −n Fn−1 + δn , F0 = fl(E0)−E0 , |F0 | ≤ η E0 ≤ η. (3.15)

Page 13: Een Inleiding in de Numerieke Lineaire Algebrahomepages.vub.ac.be/~pdegroen/numeriek/CursusNA2Ba.pdf“Matlab” is een interactieve taal, ontworpen door Cleve Moler, die is ontstaan

3 FOUTENANALYSE 13

Merk op dat uit de positiviteit van En en vergelijking (3.11) volgt, dat En−1 ≤ 1/n en dat ditook voor En−1 moet gelden zolang dat een redelijke benadering van En is; onder deze voorwaardegeldt dus ook | δn | ≤ 2η . Fn voldoet dan dus aan de ongelijkheid

|Fn | ≤ n |Fn−1 | + 2η . (3.16)

Bijgevolg is er een majorerende rij {Fn} zodat

|Fn | ≤ Fn met Fn = n Fn−1 + 2η , F0 = η . (3.17)

De recursie voor Fn levert een a priori bovengrens voor de fout in de berekende waarde van En:

| En − En | = Fn ≤ Fn = n! η

(1 +

2

1!+

2

2!+ · · ·+ 2

n!

)≤ n! η (2 e1 − 1) . (3.18)

Bij n = 18 is deze bovengrens reeds veel groter dan 1, zodat dan waarschijnlijk al niet meervoldaan is aan de conditie | En | ≤ 1.

Een betere bovengrens kunnen we berekenen, door tegelijk met En ook een bovengrens voorde fout in deze berekende waarde uit te rekenen. Uit (3.14) volgt immers

|Fn | ≤ n |Fn−1 | + η | En | + n η | En−1 | (3.19)

Als we dus tegelijk met En de meelopende foutschatting Fn berekenen met de recursie

Fn = n Fn + η | En | + n η | En−1 | (3.20)

dan vinden we zo voor iedere n a posteriori een (vrij goede) bovengrens voor de absolute foutin de berekende waarde van En uit algoritme (3.11). Merk op dat we deze (kleinere) bovengrenspas na de berekeningen kunnen kennen, omdat deze beter rekening houdt met feitelijk gemaakteafrondfouten.

3.e oefeningen

1. Vorm de volgende expressies om tot een numeriek stabiele vorm

1

1 + 2x− 1− x

1 + xvoor |x | ≪ 1 (3.21)

√x +

1

x−√

x− 1

xvoor |x | ≫ 1 (3.22)

1− cos x

xvoor |x | ≪ 1 (3.23)

2. We zouden de functie x 7→ arctan(x) kunnen evalueren via de identiteit

arctan x = arcsinx√

1 + x2(3.24)

Bepaal (een goede bovengrens voor) de relatieve afrondfout in het resultaat, als we rekenen meteen machineprecisie η, en bepaal voor welke waarden van x de genoemde methode acceptabelis.

3. Laat f een C3-functie zijn op IR waarvan de derde afgeleide begrensd is door 1: | f (3)(x) | ≤ 1 .We berekenen de afgeleide met de centrale differentie

f ′(a) =f(a + h)− f(a− h)

2h+ O(h2) . (3.25)

Geef een schatting van de totale fout in het resultaat (afrond– + afbreekfout) als we rekenenop een computer met machineprecisie η en als we een routine voor de berekening van f(x) terbeschikking hebben die de waarde ervan aflevert met een absolute fout van ten hoogste ε.

Page 14: Een Inleiding in de Numerieke Lineaire Algebrahomepages.vub.ac.be/~pdegroen/numeriek/CursusNA2Ba.pdf“Matlab” is een interactieve taal, ontworpen door Cleve Moler, die is ontstaan

4 LINEAIRE ALGEBRA 14

4. Een polynoom P van de graad n kan voorgesteld worden door een som of een product

P (x) :=n∑

k=0

ak xn−k of P (x) := a0

n∏

k=1

(x− xk) (met a0 6= 0 ),

met coefficienten a0 , a1 , · · · , an resp. (complexe) nulpunten x1 , x2 , · · · , xn en meta0 6= 0 . De waarde van het polynoom wordt voor de gegeven waarde ξ van x het bestberekend met de algoritme van Horner:

b0 := a0 ; for k := 1 to n do bk := bk−1 ∗ ξ + ak end ; dan volgt: P (ξ) = bn . (3.26)

Desgewenst kan de waarde D van de afgeleide P ′(ξ) tegelijkertijd meeberekend worden,

D := 0 ; P := a0 ; for k := 1 to n do D := D ∗ ξ + P ; P := P ∗ ξ + ak end .

a. Bewijs correctheid van de algoritme (3.26).

b. Laat zien, dat b0 , · · · , bn−1 de coefficienten zijn van het polynoom P (x)/(x− ξ) van degraad n−1 als ξ een nulpunt van P is; dit wil zeggen, dat we met de algoritme van Hornereen nulpunt kunnen uitdelen (synthetische deling).

c. Laat zien dat er getallen δk zijn zodat de berekende waarde fl(P (x)) gelijk is aan de exactewaarde van een naburig polynoom,

fl(P (x)) =n∑

k=0

ak xn−k met ak := ak (1 + δk) en | δk | ≤ (2n − 2k + 1)η + O(η2) .

d. Laat zien, dat de volgende algoritme een “meelopende fout” d berekent,

P := a0 ; d := 0; for k := 1 to n do d := d+ |P | ; P := P ∗x+ak ; d := d∗ |x | + |P | end

zodat na afloop van de algoritme geldt:

|fl(P (x))− P (x) | ≤ d η .

5. Voor de standaardafwijking S bestaan in de statistiek twee formules die wiskundig (in exactereele arithmetiek) gelijkwaardig zijn :

S2 =1

n− 1(

n∑

i=1

x2i − n g2 ) en S2 =

1

n− 1

n∑

i=1

(xi − g)2

met g het gemiddelde:

g :=1

n

n∑

i=1

xi .

Welke van de twee zou je gebruiken in een numeriek programma en waarom?

4 Lineaire Algebra

4.a notaties

Hoewel het voor bewijzen in de de lineaire algebra vaak handig is om met een abstracte vector-ruimte E van dimensie n over het lichaam van de reele of complexe getallen te werken, is hetrekenen met vectoren en afbeeldingen alleen mogelijk op basis van een representatie van vectorenen afbeeldingen ten opzichte van een basis in de ruimte. Dit wil zeggen dat een vector in IRn

of Cn altijd een kolommetje van n reele of complexe getallen is en dat een lineaire afbeelding

Page 15: Een Inleiding in de Numerieke Lineaire Algebrahomepages.vub.ac.be/~pdegroen/numeriek/CursusNA2Ba.pdf“Matlab” is een interactieve taal, ontworpen door Cleve Moler, die is ontstaan

4 LINEAIRE ALGEBRA 15

van een n-dimensionale ruimte naar een m-dimensionale altijd wordt gegeven door een matrix inIRm×n of Cm×n.

• Een vector x ∈ IRn is een kolommetje van n reele getallen,

x =

x1

x2...

xn

met componenten x1 , · · · , xn . (4.1)

In druk noteren we x met een vetgedrukte letter en in manuscript met een ondersteepte letter x .

• Een matrix A ∈ IRm×n noteren we altijd met een hoofdletter en de matrixelementen aij meteen kleine letter. De kolommen van een matrix zijn vectoren in IRm; zij spannen tesamen debeeldruimte Im(A) op:

A =

a11 · · · a1n...

. . ....

am1 · · · amn

= (a1 |a2 | · · · |an) , zodat ak =

a1k...

amk

. (4.2)

De overeenkomstige notatie in matlab is: als A een matrix is, dan is de vector A(:,k) de k–dekolom ervan.Een vector kunnen we opvatten als een matrix met een kolom; ook matlab doet dat.

• Een matrix A ∈ IRm×n en een vector x ∈ IRn kunnen we alsvolgt partitioneren:

A =

(A11 A12

A21 A22

)en x =

(x1

x2

)zodat Ax =

(A11x1 + A12x2

A21x1 + A22x2

)(4.3)

mits de dimensies kloppen:

A11 ∈ IRp×r , A12 ∈ IRq×r , A21 ∈ IRp×s , A22 ∈ IRq×s

u ∈ IRp , v ∈ IRq , p + q = n en r + s = mDe overeenkomstige notatie in matlab is: als A een matrix is, dan wordt het deel A22 weergegevendoor B=A(p+1:n, r+1:m) . Denk er wel aan dat de indices in B dan verschoven zijn, zodatB(1,1)=A(p+1,r+1) etc.

• De getransponeerde van een matrix A wordt gegeven door AT ; als de matrix complex is, danwordt de Hermitisch geconjungeerde (transponeren en complex toevoegen) gegeven door AH . Inmatlab wordt AH verkregen door een accent: A’ .

• De norm van een vector x ∈ IRn wordt gegeven door ‖x ‖ . Zoals bekend zijn alle normen ineen eindigdimensionale vectorruimte equivalent (wat is dat? waarom?). In het vervolg wordenvrijwel uitsluitend de Euclidische norm ‖ · ‖2 (of ℓ2-norm) , de max-norm ‖ · ‖∞ (of ℓ∞-norm)en de 1–norm ‖ · ‖1 (ℓ1–norm of duale van de max-norm) gebruikt:

‖x ‖1 :=n∑

j=1

|xj | , ‖x ‖22 :=n∑

j=1

|xj | 2 en ‖x ‖∞ := maxj|xj | (4.4)

Bij de Euclidische norm hoort een inproduct:

Als u , v ∈ Cn , dan 〈u , v〉 := uHv =n∑

j=1

uj vj . (4.5)

Aangezien uH een rijvector of een 1×n–matrix is, kunnen we het inproduct (4.5) ook aanduidenmet het matrix–matrix product uHv (of uTv voor reele vectoren) en met u’*v in matlab.De vectoren u , v heten orthogonaal als uT v = 0 .

Page 16: Een Inleiding in de Numerieke Lineaire Algebrahomepages.vub.ac.be/~pdegroen/numeriek/CursusNA2Ba.pdf“Matlab” is een interactieve taal, ontworpen door Cleve Moler, die is ontstaan

4 LINEAIRE ALGEBRA 16

• De matrixnorm A 7→ ‖A ‖ , geassocieerd met de vectornorm x 7→ ‖x ‖ , wordt voor een matrixA ∈ IRm×n gedefinieerd door

‖A ‖ := maxx ∈ IR

n

, ‖x‖ 6= 0

‖Ax ‖‖x‖ = max

x ∈ IRn

, ‖x‖ = 1‖Ax ‖ (4.6)

In de teller staat er natuurlijk de vectornorm in IRm en in de noemer die in IRn . De zogedefinieerde matrixnorm wordt ook wel een lub–norm genoemd (lub van least upper bound).Ga na dat een lub–norm altijd voldoet aan de producteigenschap ‖AB ‖ ≤ ‖A ‖ ‖B ‖ .Voor de lub–normen bij de normen (4.4) gebruiken we dezelfe notatie ‖ · ‖1 , ‖ · ‖2 en ‖ · ‖∞ .

• De Frobenius–norm van een matrix A ∈ IRm×n is gedefinieerd door

‖A ‖2F :=m∑

i=1

n∑

j=1

| aij | 2 . (4.7)

Deze norm voldoet wel aan de producteigenschap ‖AB ‖F ≤ ‖A ‖F ‖B ‖F maar is geen lub–norm.In feite is het de Euclidische norm van de matrix gezien als element van een m×n–dimensionalevectorruimte.In matlab kun je de genoemde vector– en matrixnormen voor een object a eenvoudig berekenenmet de functie norm(a,p) waar p een van de symbolen “1”, “2”, “inf” of “’fro’” is (de laatstemet quotes!).

• Een (reele) matrix A ∈ IRn×n heet orthogonaal als AT A = I de identitieke afbeelding in IRn is;een (complexe) matrix A ∈ Cn×n heet unitair als AHA = I. Gan na, dat dit impliceert AAT = Iresp. AAH = I.Als A ∈ IRm×n met m > n en AT A = I , dan heeft A orthonormale kolommen en dan noemenwe A een partiele isometrie.

• Een diagonaalmatrix D ∈ IRm×n is een matrix waarvan alle elementen buiten de hoofddiagonaalnul zijn, dus D = (dij) met dij = 0 als i 6= j .Voor een gegeven vector a ∈ IRn definieren we de diagonaalmatrix D := diag(a) ∈ IRm×n metm ≥ n door dii = ai ; we kiezen m = n, tenzij uit de context duidelijk is, wat de waarde van m is.De matlab-functie diag construeert uit een vector een vierkante matrix met deze vector alshoofddiagonaal; Als de functie op een m×n–matrix wordt toegepast, extraheert deze de diagonaalen levert een vector af met lengte min(m,n).

4.b oefeningen

1. Bewijs voor de geassocieerde matrixnormen de volgende identiteiten:

‖A‖1 = maxj

n∑

i=1

|aij | , ‖A‖∞ = maxi

n∑

j=1

|aij | en ‖A‖2 = maxx 6=0,y 6=0

|(Ax,y)|‖x‖2‖y‖2

met (x,y) :=∑n

i=1 xiyi .

2. Bewijs voor x ∈ IRn en A ∈ IRn×n de ongelijkheden:

1) ‖x‖2 ≤ ‖x‖1 ≤√

n‖x‖2 2) ‖x‖∞ ≤ ‖x‖2 ≤√

n‖x‖∞

3)1√n‖A‖2 ≤ ‖A‖1 ≤

√n‖A‖2 4)

1√n‖A‖∞ ≤ ‖A‖2 ≤

√n‖A‖∞

Toon met voorbeelden aan dat de ongelijkheden scherp zijn, d.w.z. dat er gelijkheid kanoptreden.

3. Laat zien dat de 2-norm van een matrix unitair invariant is (‖U A‖2 = ‖A‖2 voor iedereunitaire afbeelding U).

Page 17: Een Inleiding in de Numerieke Lineaire Algebrahomepages.vub.ac.be/~pdegroen/numeriek/CursusNA2Ba.pdf“Matlab” is een interactieve taal, ontworpen door Cleve Moler, die is ontstaan

4 LINEAIRE ALGEBRA 17

4. Toon aan dat de “Frobenius”-norm niet geassocieerd is aan een vectornorm. Bewijs er deproducteigenschap voor en laat ook zien dat deze norm invariant onder unitaire transformaties(‖U A‖F = ‖A‖F voor iedere unitaire afbeelding U).

5. Toon voor de Frobeniusnorm aan:

‖A ‖2F = spoor (AT A ) = som der eigenwaarden van AT A

‖A ‖22 = grootste eigenwaarde van AT A

1√n‖A ‖F ≤ ‖A ‖2 ≤ ‖A ‖F

N.B. De wortels van de eigenwaarden van AT A zijn de singuliere waarden van A.

6. Voor een gegeven vector a ∈ IRn is de afbeelding fa := x 7→ aT x een lineaire transformatievan IRn naar IR. Bewijs dat ‖ fa ‖1 = ‖a ‖∞ , ‖ fa ‖∞ = ‖a ‖1 en ‖ fa ‖2 = ‖a ‖2 .

4.c De singuliere-waardenontbinding

Theorem: Bij iedere (reele) matrix A ∈ IRm×n zijn er orthogonale matrices U ∈ IRm×m enV ∈ IRn×n en p := min{m,n} niet-negatieve getallen σ1 , · · · , σp zodat

A = U Σ V T , Σ := diag(σ1 , · · · , σp) ∈ IRm×n. (4.8)

NB. De getallen σ1 , · · · , σp heten de singuliere waarden van A.Het is gebruikelijk om de singuliere waarden te ordenen in een dalende rij, zodat σk ≥ σk+1 .In matlab kan de singuliere-waardenontbinding berekend worden met de functie svd:

s=svd(A) levert de singuliere waarden af in de vector s.[U,S,V]=svd(A) levert in U, S en V de drie matrices van de ontbinding (4.8) af.

Bewijs. We kunnen dit op twee manieren bewijzen, met en zonder de eigenwaardenontbindingvan AT A . We kiezen voor de eenvoud m ≥ n. We gebruiken natuurlijk steeds de Euclidischevectornorm en de geassocieerde matrixnorm.

1. De matrix AT A ∈ IRn×n is symmetrisch en niet-negatief definiet. Zij heeft dus n niet-negatieve eigenwaarden, die we dalend kunnen ordenen λ1 ≥ λ2 ≥ · · · ≥ λn ≥ 0 . Verder is er eenbijbehorende orthonormale basis van eigenvectoren v1 , · · · , vn zodat AT Avk = λkvk . Definieernu

Σ := diag(√

λ1 , · · · ,√

λn) , V := (v1 | · · · |vn) en U :=

(Av1√

λ1

∣∣∣∣ · · ·∣∣∣∣Avn√

λn

),

dan is V een orthogonale matrix en heeft de matrix U orthonormale kolommen. We kunnen dezematrix aanvullen met m−n kolommen tot een orthogonale matrix (hoe?). Het resultaat voldoetdan aan (4.8).

2. Een elegant elementair bewijs gaat met volledige inductie alsvolgt. Definieer σ1 := ‖A‖ .De functie x 7→ ‖Ax‖ is continu en neemt op de eenheidsbol {‖x ‖ = 1} zijn maximum aan.Er is dus een vector v1 met norm 1 zodat ‖Av1‖ = ‖A‖ = σ1 . Definieer u1 := Av1/σ1 enmaak orthogonale matrices U := (u1 | U) en V := (v1 | V ) met deze vectoren als eerste kolomdoor de stelsels {u1} en {v1} aan te vullen tot orthonormale bases in IRm resp. IRn (b.v. metGram-Schmidt). Hiermee vinden we:

V := (v1 | V ) zodat AV = A (v1 | V ) = (Av1 |AV ) = (σ1u1 |AV )

en

A := UT AV =

(uT

1

U

)(σ1u1 |AV ) =

(σ1u

T1 u1 uT

1 AV

σ1UTu1 UT AV

)=

(σ1 wT

0 A

). (4.9)

Page 18: Een Inleiding in de Numerieke Lineaire Algebrahomepages.vub.ac.be/~pdegroen/numeriek/CursusNA2Ba.pdf“Matlab” is een interactieve taal, ontworpen door Cleve Moler, die is ontstaan

4 LINEAIRE ALGEBRA 18

Hierbij is 0 de nulvector, omdat de kolommen van U bij definitie loodrecht staan op u1.De (rij-)vector wT := uT

1 AV is de eerste rij van A behalve het eerste element; we zullen bewijzendat ook dit een nulvector is. De overblijvende matrix A := UT AV ∈ IR(m−1)×(n−1) is van kleineredimensie. We kunnen nu uitrekenen:

∥∥∥∥∥A(

σ1

w

)∥∥∥∥∥

2

=

∥∥∥∥∥

(σ2

1 + wTw

Aw

)∥∥∥∥∥

2

≥ (σ21 + wTw)2,

maar, omdat de matrixnorm invariant is onder orthogonale transformaties geldt ook∥∥∥∥∥A

(σ1

w

)∥∥∥∥∥

2

≤ σ21

∥∥∥∥∥

(σ1

w

)∥∥∥∥∥

2

= σ21 (σ2

1 + wTw) .

Bijgevolg geldt σ21 + wTw ≤ σ2

1 en moet de vector w ∈ IRn−1 de nulvector zijn. Het gevolg is,dat

UT AV =

(σ1 0T

0 A

). (4.10)

We kunnen hetzelfde argument dus toepassen op de kleinere matrix A en zo doorgaan totdat dezetriviaal is.

De singuliere-waardenontbinding (Engels: singular value decomposition, afgekort SVD) is eenzeer geschikt hulpmiddel om de rang van een matrix ( = dimensie van de beeldruimte) te bepalen,je telt gewoon het aantal singuliere waarden, dat niet nul is. In de praktijk stelt zich echter hetprobleem, dat de verzameling inverteerbare matrices (of, als m 6= n, matrices van volle rang) dichtliggen in de verzameling van alle matrices, zodat willekeurig dicht bij een matrix van lagere rangnog matrices van volle rang liggen. Ten gevolge van afrondfouten bij numerieke berekeningen kunje dus nooit beslissen of een matrix defectief is (niet van volle rang). Daarom definieren we denumerieke rang rang(A, ε) als de rang van de matrix met kleinste rang in een bol met straal εrond A:

rang(A, ε) := min {rang(A + E) |E ∈ IRm×n, ‖E‖ ≤ ε} (4.11)

Als we de 2-norm gebruiken en de singuliere waarden σ1 , · · · , σp van A berekenen met p =min{m,n}, dan vinden we

rang(A, ε) := r als σ1 ≥ · · · ≥ σr > ε ≥ σr+1 ≥ · · · ≥ σp , (4.12)

want, als A = UΣ V T , dan voldoet E := U diag(0 , · · · , 0 , σr+1 , · · · , σp)V T aan de eis ‖E‖ ≤ εen rang(A− E) = r .

Voorbeeld van data reductie met de SVD. Het magische vierkant uit de houtsnede “Me-lencolia” van Durer is gescand in een 359×371 matrix van grijswaarden. Het linker plaatje vanfig. 2 toont een grafiek van de singuliere waarden van deze matrix. Het rechter plaatje toont degrijswaardenverdeling die we overhouden als we in de SVD alle singuliere waarden op nul zettenbehalve de grootste. Kennelijk is het rooster het dominante element in dit plaatje. Het middelsteplaatje krijgen we als we alleen de 36 grootste singuliere waarden behouden en alle andere (dekleintjes) op nul zetten. Kennelijk levert dit al een zeer goede benadering van het originele plaatje.Deze analyse techniek is niet erg gebruikelijk voor plaatjes. In de statistiek is dit echter een

zeer gebruikelijke vorm van datareductie, genaamd “principal component analysis”. Het roosterin het rechter plaatje van fig. 2 is de eerste “hoofdas” van de grijswaardenmatrix van het plaatjevan het magisch vierkant; Het linker plaatje is de “scree2 plot”.

2Scree is het naar beneden gerolde puin dat onder aan een zeer steile helling ligt.

Page 19: Een Inleiding in de Numerieke Lineaire Algebrahomepages.vub.ac.be/~pdegroen/numeriek/CursusNA2Ba.pdf“Matlab” is een interactieve taal, ontworpen door Cleve Moler, die is ontstaan

4 LINEAIRE ALGEBRA 19

Duerer, Melancholia 359 x 371 pixels

Figure 1: Durer’s houtsnede “melencolia” (links) en als detail“het magische vierkant” in de rechter bovenhoek (rechts).

0 50 100 150 200 250 300 35010

0

101

102

103

104

singular values, logarithmic plot reduction to q = 36 singular values reduction to q = 1 singular values

Figure 2: Grafiek van de 359 singuliere waarden van de grijswaardenmatrixvan het detail (links) en reconstructies ervan met 36 (midden) enprecies 1 singuliere waarden (rechts).

4.d Het Conditiegetal

Voor een gegeven matrix A ∈ IRn×n en vector b ∈ IRn willen we methoden ontwikkelen om hetstelsel lineaire vergelijkingen

Ax = b (4.13)

op te lossen. Alvorens hier aan te beginnen is het nuttig om de gevoeligheid van het probleem voorkleine verstoringen van A en b te bestuderen. Naast het “exacte” probleem (4.13) beschouwenwe dus het verstoorde probleem

(A + E) (x + w) = b + d , met E ∈ IRn×n en d ∈ IRn klein. (4.14)

en we proberen een schatting te vinden voor de resulterende afwijking w in de oplossing. Hiervoorhebben we de volgende schatting nodig voor de norm van (A + E)−1:

Lemma. Als A ∈ IRn×n inverteerbaar is en als voor E ∈ IRn×n geldt ‖A−1E‖ < 1 , dan is A + Einverteerbaar en voldoet aan de schatting

‖(A + E)−1‖ ≤ ‖A−1‖1− ‖A−1E‖ (4.15)

Bewijs. Als I de identiteit in IRn is en F ∈ IRn×n voldoet aan ‖F‖ < 1 , dan geldt voor allex ∈ IRn dat

‖Ix + Fx‖ ≥ ‖x‖ − ‖Fx‖ ≥ (1− ‖F‖)‖x‖ > 0 .

Geen enkele niet-triviale vector wordt dus op de nulvector afgebeeld, zodat de kern van I + F denulruimte is en I + F inverteerbaar is. Voor alle x ∈ IRn geldt dus

‖x‖ = ‖(I + F )(I + F )−1x‖ ≥ (1− ‖F‖)‖(I + F )−1x‖ zodat ‖(I + F )−1‖ ≤ 1

1− ‖F‖ .

Page 20: Een Inleiding in de Numerieke Lineaire Algebrahomepages.vub.ac.be/~pdegroen/numeriek/CursusNA2Ba.pdf“Matlab” is een interactieve taal, ontworpen door Cleve Moler, die is ontstaan

4 LINEAIRE ALGEBRA 20

Omdat A + E = A(I + A−1E) volgt hieruit (4.15).

Om een bovengrens te vinden voor de afwijking ‖w‖ trekken we (4.13) af van (4.14), zodat

(A + E)w = d − Ex

en gebruiken we het lemma:

‖w‖ ≤ ‖(A + E)−1‖ (‖d‖ + ‖E‖ ‖x‖) ≤ ‖A−1‖(‖d‖ + ‖E‖ ‖x‖)

1− ‖A−1E‖ . (4.16)

We delen door ‖x‖ en maken gebruik van de ongelijkheid ‖A‖ ‖x‖ ≥ ‖Ax‖ = ‖b‖ en vinden zode schatting voor de relatieve afwijking:

‖w‖‖x‖ ≤

‖A−1‖ ‖A‖1− ‖A−1E‖

(‖d‖‖b‖ +

‖E‖‖A‖

). (4.17)

We zien hierin, dat de relatieve grootten van de storingen in matrix en rechterlid worden ver-menigvuldigd met de factor κ(A) := ‖A−1‖ ‖A‖ (als we de kleine term ‖A−1E‖ in de noemermogen verwaarlozen). Deze factor noemen we het Conditiegetal van de matrix A. Dit conditiege-tal hangt af van de gebruikte matrix- en vectornorm. Gebruikelijke notaties zijn

κ1 := ‖A−1‖1 ‖A‖1 κ2 := ‖A−1‖2 ‖A‖2 en κ∞ := ‖A−1‖∞ ‖A‖∞ (4.18)

voor de conditiegetallen t.o.v. de gebruikelijke lub–matrixnormen. Het berekenen van een vandeze conditiegetallen is veel werk, omdat je ervoor de inverse (voor κ1 en κ∞) of de SVD (voorκ2) expliciet moet uitrekenen.

4.e oefeningen

1. Bepaal de singuliere-waardenontbinding van de n×1–matrix A :=

a1...

an

.

2. Bepaal de singuliere-waardenontbinding van de n×2–matrix A := (u |v ) , als gegeven is datde vectoren u ∈ IRn en v ∈ IRn loodrecht op elkaar staan (uT v = 0).

3. Bepaal voor de volgende matrices B de inverse B−1 en het conditiegetal κ∞(B) := ‖B‖∞ ‖B−1‖∞a.

B :=

1 −1 · · · −10 1 · · · −1...

.... . .

...0 0 · · · 1

∈ IRn×n met Bij =

1 als j = i ,−1 als j > i ,0 als j < i .

(4.19)

b.

B :=

1 1 · · · 10 1 · · · 1...

.... . .

...0 0 · · · 1

∈ IRn×n met Bij =

{1 als j ≥ i ,0 als j < i .

(4.20)

c.

B :=

1 2 · · · n0 1 · · · n−1...

.... . .

...0 0 · · · 1

∈ IRn×n met Bij =

{j−i+1 als j ≥ i ,

0 als j < i .(4.21)

Aanwijzing: herleid B eerst met Gauss-Jordan tot de vorm (4.20).

Page 21: Een Inleiding in de Numerieke Lineaire Algebrahomepages.vub.ac.be/~pdegroen/numeriek/CursusNA2Ba.pdf“Matlab” is een interactieve taal, ontworpen door Cleve Moler, die is ontstaan

4 LINEAIRE ALGEBRA 21

d.

B :=

1 −1 · · · (−1)n−1

0 1 · · · (−1)n−2

......

. . ....

0 0 · · · 1

∈ IRn×n met Bij =

{(−1)j−i als j ≥ i ,

0 als j < i .(4.22)

4.f Gausseliminatie

Een driehoekig stelsel vergelijkingen Lx = b of Uy = c met L een linksondermatrix metLij = 0 als j > i en met U een rechtsbovenmatrix met Uij = 0 als j < i ,

L =

L11 0 · · · 0...

. . .. . .

...L1,n−1 · · · Ln−1,n−1 0Ln1 · · · · Lnn

en U =

U11 · · · · u1n

0 U22 · · · U2n...

. . .. . .

...0 · · · 0 Unn

(4.23)

kun je gemakkelijk van boven naar beneden of van beneden naar boven oplossen.In Matlab kun je dit gemakkelijk alsvolgt opschrijven:

x(1)=b(1)/L(1,1);

for k=2:n,

x(k)=(b(k)-L(k,1:k-1)*x(1:k-1))/L(k,k);

end

(4.24)

y(n)=c(n)/U(n,n);

for k=n-1:-1:1,

y(k)=(c(k)-U(k,k+1:n)*y(k+1:n))/U(k,k);

end

(4.25)

Opgave: ga na dat de volgende algoritme hetzelfde resultaat geeft:

for k=1:n-1,

x(k)=b(k)/L(k,k);

b(k+1:n)=b(k:1:n)-L(k+1:n,k)*x(k);

end,

x(n)=b(n)/L(n,n)

(4.26)

en schrijf de analoge kolomsgewijze algoritme op voor de berekening van y. Bepaal ook het aantal flops,

nodig voor de berekening van x en y .

Gausseliminatie herleidt het stelsel vergelijkingen

Ax = b of

A11 · · · A1n...

. . ....

An1 · · · Ann

x1...

xn

=

b1...bn

(4.27)

tot een driehoekig stelsel Ux = c. Het idee hierbij is, dat iedere lineaire combinatie van vergelij-kingen van het stelsel weer een vergelijking is, waaraan de oplossing voldoet. Als dus A11 6= 0 , dankunnen we van de tweede tot en met de n–de vergelijking een veelvoud van de eerste vergelijkingaftrekken, zodat de coefficient van de eerste onbekende x1 in de tweede t/m n–de vergelijkingnul wordt. We vervangen rij(k) in de matrix dus door rij(k) − Ak1/A11 × rij(1). Als A22 6= 0in de resulterende matrix, kunnen we op dezelfde manier in de derde tot n–de vergelijking deafhankelijkheid van x2 elimineren, enzovoorts. Na n − 1 stappen houden we zo een (equivalent)driehoekig stelsel vergelijkingen over, dat we gemakkelijk kunnen oplossen. De algoritme luidt

Page 22: Een Inleiding in de Numerieke Lineaire Algebrahomepages.vub.ac.be/~pdegroen/numeriek/CursusNA2Ba.pdf“Matlab” is een interactieve taal, ontworpen door Cleve Moler, die is ontstaan

4 LINEAIRE ALGEBRA 22

dus:

for k = 1 : n− 1Als Akk 6= 0 ,

for j = k + 1 : nvervang rij(j) van A door rij(j)−Ajk/Akk × rij(k)

en hetzelfde voor het rechterlid b

end

end

(4.28)

In matlab kunnen we dit compact neerschrijven als

for k=1:n-1,

for j=k+1:n,

A(j,k+1:n) = A(j,k+1:n) - A(j,k) / A(k,k) * A(k,k+1:n);

b(j) = b(j) - A(j,k) / A(k,k) * b(k);

end

end

(4.29)

Na afloop zijn alle elementen A(i,j) met i>j in de matrix gelijk aan nul; we hebben alleenniet de moeite genomen om deze nullen er expliciet in te zetten, dat vergt alleen maar nut-teloos extra werk. We kunnen deze vrijgekomen ruimte ook gebruiken om de vermenigvuldigersA(j,k) / A(k,k) in op te slaan:

for k=1:n-1,

A(k+1:n,k) = A(k+1:n,k)/A(k,k);

A(k+1:n,k+1:n) = A(k+1:n,k+1:n) - A(k+1:n,k)*A(k,k+1:n);

b(k+1:n) = b(k+1:n) - A(k+1:n,k)*b(k);

end

(4.30)

Het voordeel hiervan is, dat we de algoritme kunnen splitsen in bewerkingen op A gevolgd doorbewerkingen op b:

for k=1:n-1,

A(k+1:n,k) = A(k+1:n,k)/A(k,k);

A(k+1:n,k+1:n) = A(k+1:n,k+1:n) - A(k+1:n,k)*A(k,k+1:n);

end

for k=1:n-1,

b(k+1:n) = b(k+1:n) - A(k+1:n,k)*b(k);

end

(4.31)

Als we na afloop de inhoud van A verdelen over een linksonder matrix L en een rechtsboven matrixU met

Lij =

1 als i = jA(i, j) als i > j

0 als i < jen Uij =

{A(i, j) als i ≤ j

0 als i > j,

dan geldt Aorigineel = LU , immers voor elk koppel van een oplossing x en een rechterlid b = Ax

geldt Ux = y en Ly = b .

Rijverwisseling. In (4.28) is het essentieel, dat de spil Akk in de k–de slag ongelijk is aannul. Dit is echter geen noodzakelijk gevolg van de inverteerbaarheid van A, zoals we zien in hetvoorbeeld (

0 11 0

)(x1

x2

)=

(b1

b2

),

dat verder perfect oplosbaar is. De remedie hier is het verwisselen van de beide vergelijkingen,

(1 00 1

)(x1

x2

)=

(b2

b1

),

Page 23: Een Inleiding in de Numerieke Lineaire Algebrahomepages.vub.ac.be/~pdegroen/numeriek/CursusNA2Ba.pdf“Matlab” is een interactieve taal, ontworpen door Cleve Moler, die is ontstaan

4 LINEAIRE ALGEBRA 23

en dus het verwisselen van beide rijen van matrix en rechterlid. Het is duidelijk dat de volgordevan de onbekenden x1 en x2 niet verandert.

Stel nu in het algemene geval, dat we bij uitvoering van algoritme (4.28) in de k–de slag eenspil nul tegenkomen. We hebben dan het stelsel Ax = b herleid tot het equivalente stelsel

A11 · · · · · · A1k · · · A1n

0. . .

......

.... . .

. . ....

...0 · · · 0 Akk · · · Akn...

......

...0 · · · 0 Ank · · · Ann

x1......

xk...

xn

=

b1......bk...bn

. (4.32)

Als de oorspronkelijke matrix A inverteerbaar was, dan moet de getransformeerde matrix hetook zijn. Gezien de nullen in de kolommen 1 t/m k−1 van de rijen k t/m n moet er onderde elementen Akk , · · · , Ank van de k–de kolom minstens een zijn, die niet nul is, anders is Aniet inverteerbaar. We kunnen dan de bijbehorende rij verwisselen met de k-de (tesamen met deovereenkomstige elementen van b) en de eliminatiealgoritme vervolgen.

Met deze wijziging reduceert Gausseliminatie het oorspronkelijke stelsel dus probleemloos toteen equivalent driehoekig stelsel als er geen afrondfouten waren. Bij het rekenen in de praktijkmogen we in de kolom Akk , · · · , Ank niet zomaar een element nemen dat niet nul is. Het zouimmers wel eens zeer klein kunnen zijn en door de deling de oorspronkelijke rij bij de bewerkingrij(j)← rij(j)−Ajk/Akk× rij(k) kunnen doen verdrinken in de afrondfout, zodat de resulterendej–de rij bijna een veelvoud van de k-de rij is en de matrix (vrijwel) singulier wordt. Om dit tevermijden zoeken we het element met de grootste absolute waarde en gebruiken we dit als spil inde eliminatie. Het gevolg is, dat de vermenigvuldigers Ajk/Akk altijd een absolute waarde kleinerdan 1 hebben.

for k = 1 : n− 1Zoek onder de elementen Akk , · · · , Ank de index p

van het element met grootste absolute waarde.Verwissel rij(k) en rij(p) en ook bk en bp.for j = k + 1 : n

vervang rij(j) van A door rij(j)−Ajk/Akk × rij(k)

en hetzelfde voor het rechterlid b

end

end

(4.33)

In Matlab kunnen we dat alsvolgt neerschrijven3:

for k=1:n-1,

[m,p] = max(abs(A(k:n,k))); p = p+k-1;

hulp = A(k,k:n); A(k,k:n) = A(p,k:n); A(p,k:n)=hulp;

hulp = b(k); b(k) = b(p); b(p)=hulp;

A(k+1:n,k) = A(k+1:n,k)/A(k,k);

for j=k+1:n, A(j,k+1:n) = A(j,k+1:n) - A(j,k)*A(k,k+1:n); end

b(k+1:n) = b(k+1:n) - A(k+1:n,k)*b(k);

end

(4.34)

Tenslotte kunnen we de bewerkingen op A en b weer alsvolgt van elkaar scheiden en de niet-triviale

3Omdat de standaardfunctie max het maximum m en index p van de vector z(1:n-k+1)=abs(A(k:n,k)) metn-k+1 elementen bepaalt met een index die telt vanaf 1, moet deze index met k-1 gecorrigeerd worden om de juistepositie in de matrix te vinden.

Page 24: Een Inleiding in de Numerieke Lineaire Algebrahomepages.vub.ac.be/~pdegroen/numeriek/CursusNA2Ba.pdf“Matlab” is een interactieve taal, ontworpen door Cleve Moler, die is ontstaan

4 LINEAIRE ALGEBRA 24

elementen van L bewaren op de vrijgekomen plaatsen in A zoals in (4.31):

for k=1:n-1,

[m,q] = max(abs(A(k:n,k))); p(k) = q+k-1;

if p(k)>k, hulp = A(k,1:n); A(k,1:n) = A(p(k),1:n); A(p(k),1:n)=hulp; end

A(k+1:n,k) = A(k+1:n,k)/A(k,k);

A(k+1:n,k+1:n) = A(k+1:n,k+1:n) - A(k+1:n,k)*A(k,k+1:n);

end

for k=1:n-1,

if p(k)>k, hulp = b(k); b(k) = b(p(k)); b(p(k))=hulp; end

b(k+1:n) = b(k+1:n) - A(k+1:n,k)*b(k);

end

(4.35)

Het verschil met (4.34) is, dat we nu in de k–de slag de gehele rij, inclusief de reeds berekendeelementen van L moeten verwisselen. De reden is de volgende. In het begin van de k–de slag vande basisalgoritme (4.32) geldt A(1) := Aorigineel = L(k)A(k),

A(1) := Aorigineel =

1 0 · · · · · · 0...

. . .. . .

...

Lk1 · · · 1. . .

...... · · · 0

. . . 0Ln1 · · · 0 0 1

A(k)11 · · · A

(k)1k · · · A

(k)1n

0. . .

......

0 · · · A(k)kk · · · A

(k)kn

0...

...0 · · · A

(k)nk · · · A

(k)nn

. (4.36)

waarbij de niettriviale elementen van A(k) bevat zijn in A(i,j) met i ≤ j of j ≥ k en waarbijde niettriviale elementen van L(k) bevat zijn in A(i,j) met i > j en j < k. In de k–de slagvermenigvuldigen we A(k) van links met de matrix G−1

k

G−1k :=

1 0 · · · 0...

. . ....

0 · · · 1. . .

...... · · · − Lk+1,k 0

... · · · ...

0 · · · − Lnk · · · 1

en Gk :=

1 0 · · · 0...

. . ....

0 · · · 1. . .

...... · · · Lk+1,k 0

... · · · ...

0 · · · Lnk · · · 1

met Ljk := A(k)jk /A

(k)kk voor j = k+1 · · ·n. Dit geeft A(k+1) = G−1

k A(k) . Om de identiteit

Aorigineel = L(k)A(k) (4.37)

naar de volgende slag toe te handhaven, moeten we L(k) dus van rechts vermenigvuldigen metGk . Dit betekent precies, dat de k–de kolom van Gk als k-de kolom wordt ingevoegd in L(k) (gana!).

Een verwisseling van rij(k) en rij(p) in A(k) kunnen we beschrijven als het van links ver-menigvuldigen van A(k) met een permutatiematrix Pk van de vorm

Pk :=

1 · · · 0. . .

0 · · · 1...

......

...1 · · · 0

. . .

0 · · · 1

rij(k)

rij(p)

(4.38)

Om de identiteit (4.37) te bewaren moeten we L(k) dus van rechts met diezelfde Pk vermenigvuldigen,hetgeen neerkomt op het verwisselen van de kolommen met index k en p(k). Dit product is echter

Page 25: Een Inleiding in de Numerieke Lineaire Algebrahomepages.vub.ac.be/~pdegroen/numeriek/CursusNA2Ba.pdf“Matlab” is een interactieve taal, ontworpen door Cleve Moler, die is ontstaan

4 LINEAIRE ALGEBRA 25

geen benedendriehoeksmatrix. Om deze vorm terug te krijgen vermenigvuldigen we L(k) ook vanlinks met Pk en voegen we de permutatiematrix toe aan de invariant

Aorigineel = P1 · · ·Pk−1PkPkL(k)PkPkA

(k). (4.39)

Op de matrix PkA(k) met verwisselde rijen passen we van links G−1

k toe en op PkL(k)Pk passen

we van rechts Gk toe, zodat

Aorigineel = P1 · · ·Pk−1PkL(k+1)A(k+1) (4.40)

met L(k+1) := PkL(k)PkGk en A(k+1) := G−1

k A(k).

Op deze manier vinden we een ontbinding van A = PLU in een product van een linksondermatrixL met Ljj = 1 en |Lij | ≤ 1 als i > j en een rechtsbovenmatrix U en een product vanpermutatiematrices P := P1 · · ·Pn . Hiermee hebben we de correctheid van algoritme (4.35)bewezen alsmede het bestaan van een ontbinding van de vorm A = PLU voor iedere inverteerbarematrix A.

4.g De algoritme van Crout

Nu we weten dat er voor iedere inverteerbare matrix een PLU-ontbinding bestaat kunnen we dezeook op een andere manier afleiden. Veronderstel (voorlopig) dat er geen verwisselingen nodig zijnen dat dus geldt A = LU , of componentsgewijs:

Aik =

min{i,k}∑

j=1

LijUjk of

Akk =∑k−1

j=1 LkjUjk + Ukk als i = k (a)

Aki =∑k−1

j=1 LkjUji + Uki als i > k (b)

Aik =∑k−1

j=1 LijUjk + LikUkk als i > k (c)

(4.41)

waarbij de indices i en k in (b) verwisseld zijn. Als de eerste k−1 kolommen van L en de eerstek−1 rijen van U reeds berekend zijn (dus als Lij en Uji met j < k berekend zijn), dan kan jemet vergelijking (a) Ukk berekenen en vervolgens met vergelijking (b) de rest van de k-de rij vanU en met vergelijking (c) de rest van de k-de kolom van L. Ook zie je, dat je voor k = 1 legesommaties hebt en dat de berekening van de eerste rij van U en de eerste kolom van V triviaalis. Hiermee vind je de algoritme van Crout voor de LU-ontbinding van A:

for k = 1 : n,

Ukk = Akk −∑k−1

j=1 LkjUjk ;

Uki = Aki −∑k−1

j=1 LkjUji ; (i = k + 1 · · · n)

Lik = (Aik −∑k−1

j=1 LijUjk)/Ukk ; (i = k + 1 · · · n)

end

(4.42)

Omdat je de elementen van A niet meer nodig hebt na de berekening van de overeenkomstigeelementen van U en L, mag je ze overschrijven met deze elementen van U en L, zoals bij deGausseliminatie ook het geval was. Dit geeft dus de algoritme

for k=1:n,

A(k,k) = A(k,k) - A(k,1:k-1)*A(1:k-1,k);

A(k,k+1:n) = A(k,k+1:n) - A(k,1:k-1)*A(1:k-1,k+1:n);

A(k+1:n,k) = (A(k+1:n,k) - A(k+1:n,1:k-1)*A(1:k-1,k))/A(k,k);end

(4.43)

Deze algoritme is niet meer dan een herordening van de aritmetische operaties ten opzichte vanGausseliminatie. Terwijl in (4.31) van het element Apq in de k–de slag het product ApkAkq wordt

Page 26: Een Inleiding in de Numerieke Lineaire Algebrahomepages.vub.ac.be/~pdegroen/numeriek/CursusNA2Ba.pdf“Matlab” is een interactieve taal, ontworpen door Cleve Moler, die is ontstaan

4 LINEAIRE ALGEBRA 26

afgetrokken, totdat k = min{p, q} − 1 , worden deze aftrekkingen bij (4.43) allemaal tegelijkgedaan in de k–de slag. Bijgevolg zijn zelfs de afrondfouten, die bij de berekeningen4 wordenopgebouwd, identiek voor beide algoritmen.

Opgave. Laat zien dat de rijverwisselingsstrategie van (4.35) ook in de variant van Crout gebruiktkan wordenen schrijf de algoritme voor Crouts LU-ontbinding met rijverwisselingen in matlab.Gebruik bovenstaande opmerking over het verschil van beide algoritmen.

4.h afrondfoutenanalyse

In de variant van Crout zien we, dat ieder element van L en U wordt berekend uit een vergelijkingvan de vorm,

Aik =

min{i,k}∑

j=1

LijUjk .

Dis is precies de vorm van voorbeeld 5 in hoofdstuk 3. Voor de berekende waarden Lij en Ujk

van de elementen van L en U geldt dus exact:

Aik =

min{i,k}∑

j=1

LijUjk(1 + εijk) met | εijk | ≤ (j+1)η .

Dus geldt voor de berekende matrices L en U exact:

A = L U + E met |Eik | ≤ (n + 1) η

min{i,k}∑

j=1

| LijUjk | (4.44)

of‖E‖∞ ≤ (n + 1) η ‖L‖∞ ‖U‖∞ (4.45)

Aangezien alle elementen van L kleiner dan of gelijk aan 1 zijn in absolute waarde door derijverwisselingen, is de max-norm van deze matrix begrensd door n. De norm van E hangt dusvoornamelijk af van de grootte van U . Hoewel in de praktijk de norm van U vergelijkbaar is metdie van A zijn er gevallen te construeren, waarin deze een factor 2n−1 groter is. We concluderen,dat Gausseliminatie met rijverwisselingen in het algemeen een zeer betrouwbare methode is voorhet oplossen van een stelsel lineaire vergelijkingen.

4.i oefeningen

1. Bij Gausseliminatie kun je de conditie van U verbeteren door in de k–de slag niet slechtshet maximale element van abs(A(k:n,k)) te berekenen en de bijbehorende rij met de k–dete verwisselen, maar met maximale element van de gehele submatrix abs(A(k:n,k:n)) tezoeken en de bijbehorende rij en kolom met de k–de rij en kolom te verwisselen. Kolommenverwissel je door vermenigvuldiging met een permutatiematrix van rechts. Dit geeft eenontbinding A = P LU Q met P en Q permutatiematrices en L en U linksonder en rechtsboven.Schrijf de algoritme voor deze ontbinding op.

2. Met A = LU gegeven lossen we x uit Ax = b op door eerst y op te lossen uit Ly = b envervolgens x uit Ux = y . Laat zien dat de berekende vectoren y en x de exacte oplossingenzijn van de naburige vergelijkingen (L+F )y = b en (U+G)x = y met |Fi,j | ≤ (i+1)η |Li,j |en |Gi,j | ≤ (i + 1)η |Ui,j | .

4Dit geldt alleen, als bij het wegschrijven van een tussenresultaat van register naar geheugen geen extra afrondingplaatsvindt.

Page 27: Een Inleiding in de Numerieke Lineaire Algebrahomepages.vub.ac.be/~pdegroen/numeriek/CursusNA2Ba.pdf“Matlab” is een interactieve taal, ontworpen door Cleve Moler, die is ontstaan

5 LINEAIRE KLEINSTE-KWADRATENPROBLEMEN 27

3. Zij A ∈ IRn×n een reguliere matrix en u , v ∈ IRn kolomvectoren. Veronderstel vT A−1u 6=−1 . Bewijs de Sherman-Morrison formule :

(A + uvT )−1 = A−1 − A−1uvT A−1

1 + vT A−1u. (4.46)

4. Zij y ∈ IRn en k ∈ IN , dan noemen we een matrix in IRn×n van de vorm

N( y , k ) := I + y eTk

een Gauss-Jordan transformatie.

a. Onder welke voorwaarde is N(y , k) inverteerbaar; geef een formule voor die inverse.

b. Gegeven een vaste x ∈ IRn, onder welke voorwaarden kan men een y ∈ IRn vinden zodat

N(y , k) (x) = ek.

c. Schrijf een algoritme om de matrix A te overschrijven met A−1 door gebruik te makenvan Gauss-Jordan transformaties.

d. Welke voorwaarden op A verzekeren je dat de algoritme succesvol werkt?

5. Laat A ∈ IRn×n de matrix zijn met voor alle k ∈ {1 · · · n}

Akk = 1 , Aki = −1 als i < k , Akn = 1 en Aki = 0 als k < i < n .

Bepaal de LU -ontbinding van A en bepaal ‖A‖∞ en ‖U‖∞ .Dit is een voorbeeld waarbij de norm van U veel groter is dan die van A .

6. Laat A ∈ IRn×n een rijsgewijs diagonaaldominante matrix zijn, d.w.z.

als A = (aij )ni,j=1 dan | ajj | >n∑

i=1, i6=j

| aji | , ∀ j,

bewijs dan, dat A een LU -ontbinding zonder rijverwisselingen heeft, met ‖U ‖∞ ≤ 2maxk |Ukk|.Aanwijzing: Laat zien dat de deelmatrix A(2 : n, 2 : n) na de eerste slag van de Gausseliminatieweer diagonaaldominant is.Opmerking: De norm van de factor L kan willekeurig groot zijn, zoals uit het volgendevoorbeeld blijkt:

A :=

1√

α 0√α 1 0

0 α 1

=

1 0 0√α 1 0

0 0 1

1√

α 00 1− α 00 α 1

=

1 0 0√α 1 0

0 α

1−α1

1√

α 00 1− α 00 0 1

.

Voor iedere α ∈ [0, 1) is het linkerlid diagonaaldominant, maar ‖L‖∞ ր∞ als αր 1 .Met de gebruikelijke rijverwisselingsstrategie moeten we in de tweede slag de tweede en derderij verwisselen als α ∈ (1

2 , 1). We vinden dan

A =

(1 0 00 0 10 1 0

) (1 0 00 1 0√α 0 1

) (1

√α 0

0 α 10 1 − α 0

)=

(1 0 00 0 10 1 0

) (1 0 00 1 0√α 1−α

α1

) (1

√α 0

0 α 10 0 α−1

α

).

Het is wel behoud van ellende; in plaats van een l-factor met grote norm hebben we nu eenslecht geconditioneerde U -factor als α ≈ 1 .Analoog: Als A kolomsgewijs diagonaaldominant is, dan heeft A een LU -ontbinding zonderrijverwisselingen met ‖L ‖1 ≤ 2 .

Page 28: Een Inleiding in de Numerieke Lineaire Algebrahomepages.vub.ac.be/~pdegroen/numeriek/CursusNA2Ba.pdf“Matlab” is een interactieve taal, ontworpen door Cleve Moler, die is ontstaan

5 LINEAIRE KLEINSTE-KWADRATENPROBLEMEN 28

-5

0

5

0

xx

x

x

xx

x x

x

x

x

a. beste rechte met y als funktie van x

-5

0

5

0

xx

x

x

xx

x x

x

x

x

b. beste rechte met x als funktie van y

-5

0

5

0

xx

x

x

xx

x x

x

x

x

d. de drie benaderende rechten tesamen

-5

0

5

0

xx

x

x

xx

x x

x

x

x

c. totale kleinste-kwadratenbenadering

Figure 3: Punten in het vlak met best passende rechten. De som vankwadraten van de lengten langs de stippellijnen is minimaal.

5 Lineaire kleinste-kwadratenproblemen

Het standaard voorbeeld van een lineair kleinste-kwadratenprobleem is het bepalen van een re-gressierechte, de “best” passende rechte bij een gegeven verzameling punten {(x1 , y1) · · · (xn , yn)}in het platte vlak. We zoeken dan een rechte y = a + b x zodat de som van kwadraten van deafwijkingen minimaal is:

bepaal (a , b) zo, dat J(a, b) :=n∑

k=1

(yk − a− bxk)2 minimaal is. (5.1)

Van alle optimaliteitscriteria is minimalisatie van een som van kwadraten verreweg het een-voudigst omdat deze functionaal kwadratisch is in de onbekenden a en b, hetgeen het bestaan vaneen uniek minimum garandeert, dat gevonden kan worden uit een lineair stelsel vergelijkingen.

De functionaal J in (5.1) kunnen we interpreteren als een norm in IRn; definieer de vectorenx y en e ∈ IRn en de matrix A ∈ IRn×2 door

x :=

x1...

xn

, y :=

x1...

yn

, e :=

1...1

en A := (e |x)

dan kunnen we J schrijven als

J(a, b) = ‖A(

ab

)− y ‖2

Page 29: Een Inleiding in de Numerieke Lineaire Algebrahomepages.vub.ac.be/~pdegroen/numeriek/CursusNA2Ba.pdf“Matlab” is een interactieve taal, ontworpen door Cleve Moler, die is ontstaan

5 LINEAIRE KLEINSTE-KWADRATENPROBLEMEN 29

en dan kunnen we (5.1) interpreteren als het zoeken van het punt in de beeldruimte van A, dathet dichtst bij y ligt (in de Euclidische norm).

Het algemene lineaire kleinste-kwadratenprobleem is het volgende:Gegeven een matrix A ∈ IRm×n met m ≥ n en een vector b ∈ IRm

bepaal x ∈ IRn zo, dat J(x) := ‖Ax− b ‖2 minimaal is, (5.2)

bepaal dus het punt in de beeldruimte van A (= Im(A)) dat het dichtst bij b ligt (in de Euclidischenorm) en bepaal dan het origineel ervan.In het vervolg van dit hoofdstuk zullen we aannemen, dat A van volle rang is, zodat A alsafbeelding van IRn naar Im(A) eeneenduidig en dus inverteerbaar is.

5.a De normaalvergelijkingen

Een eenvoudige methode om probleem (5.2) op te lossen is het meetkundige argument, dat de

��

��

��

��

��

��

��

��

��

��

��

-������������*AAAAAAU

O b

Im(A)

Ax

b−Ax

Figure 4: Vector b, de orthogonale projectie Ax ervan op Im(A) en het residub−Ax . Het residu is minimaal als dit loodrecht staat op Im(A).

afstand tussen de vector b en een vector y ∈ Im(A) minimaal is als het verschil loodrecht op dedeelruimte Im(A) staat. Dus,

‖Ax− b ‖2 is minimaal ⇔ Ax− b ⊥ Im(A) ⇔ zT AT (Ax− b) = 0 voor alle z ∈ IRn.

Bijgevolg is het vinden van het minimum van (5.2) equivalent met het oplossen van het stelsel

AT Ax = ATb . (5.3)

We noemen dit de normaalvergelijkingen behorende bij het kleinste-kwadratenprobleem (5.2).

Als A van volle rang is, rang(A) = n, dan is AT A symmetrisch en positief definiet en heeft(5.2) een unieke oplossing door eerst AT A en ATb te berekenen en vervolgens het stelsel op telossen via de methode van Cholesky (een variant op Gauss of Crout voor een positief definietesymmetrische matrix, die slechts de helft van de hoeveelheid werk vraagt).

Deze oplosmethode via de normaalvergelijkingen moet natuurlijk ook werken als m = n en Adus een inverteerbare (want vierkant en van volle rang) matrix is. Het kleinste–kwadratenprobleem(5.2) en de oplossing ervan via de normaalvergelijkingen (5.3) zijn dan equivalent met het oplossenvan Ax = b. Voor de conditiegetallen (t.o.v. de ‖ · ‖2–norm) van beide methoden geldt echter:

κ2(A) =σ1

σn

en κ2(AT A) =

σ21

σ2n

(5.4)

als A = UΣV T met Σ = diag(σ1 · · · σn) de singuliere-waardenontbinding van A is. Het conditiege-tal van de normaalvergelijkingen is dan het kwadraat van dat van het oorspronkelijke probleem.Als het conditiegetal van A al groot is, betekent dit, dat de oplossing via de normaalvergelijkingenniet meer betrouwbaar hoeft te zijn.

Page 30: Een Inleiding in de Numerieke Lineaire Algebrahomepages.vub.ac.be/~pdegroen/numeriek/CursusNA2Ba.pdf“Matlab” is een interactieve taal, ontworpen door Cleve Moler, die is ontstaan

5 LINEAIRE KLEINSTE-KWADRATENPROBLEMEN 30

Ook als A niet vierkant is maar wel van volle rang, kunnen we aan het probleem (5.2) eenconditiegetal toekennen. A is dan een eeneenduidige afbeelding op Im(A); de restrictie totIm(A) heeft dus een welbepaalde inverse. Het kleinste-kwadratenprobleem (5.2) kunnen we (intheorie?) oplossen door de loodrechte projectie y van b op Im(A) te bepalen en vervolgensAx = y op te lossen. De gevoeligheid van dit laatste probleem wordt weer gekarakteriseerd doorhet conditiegetal κ2(A) = σ1/σn. Het ligt dus voor de hand om het conditiegetal van het hetkleinste-kwadratenprobleem (5.2) (t.o.v. de ‖ · ‖2–norm) zo te definieren. Het oplossen van (5.2)door normaalvergelijkingen, betekent dus altijd een kwadratering van het conditiegetal. Als Agoed geconditioneerd is, is dit geen probleem. Als (zoals vaak voorkomt) A slecht geconditioneerdis, is de oplossing via normaalvergelijkingen mogelijk volledig onbetrouwbaar.

5.b De methode van Gram-Schmidt

Oplosmethode (5.3) hebben we afgeleid uit de eis, dat het residu b − Ax loodrecht op Im(A)moet staan. We zouden ook, zoals boven al gesuggereerd, de loodrechte projectie y van b opIm(A) kunnen bepalen en vervolgens het compatibele stelsel Ax = y kunnen oplossen.

Een orthogonale projectie kunnen we het eenvoudigst berekenen, als we beschikken over eenorthogonale basis in de ruimte waarin we willen projecteren. De kolommen van de matrix A =(a1 | · · · |an) vormen een basis in Im(A); je kunt hieruit een orthonormale basis construeren metde methode van Gram-Schmidt:

Normaliseer de eerste kolom van A en noem deze q1 ,

q1 := a1/‖a1‖ ;

for k = 2 : n , do

Zet de k–de kolom van A loodrecht op alle vorige (dus ⊥ op {q1 · · · qk−1}),normaliseer het resultaat en noem dit qk ,

qk := ak −∑k−1

j=1 qTj ak qj ; qk := qk/‖qk‖ ;

end

(5.5)

Dit levert de orthonormale basis {q1 · · · qn} voor Im(A). De relatie tussen de vectoren van deoorspronkelijke basis {a1 · · · an} en die van de nieuwe wordt gegeven door

ak =k−1∑

j=1

qTj ak qj + ‖qk‖qk , (5.6)

of in matrix notatie

A = QR met Q :=(q1 | · · · |qn

), R =

(rjk

), rjk =

qTj ak als j < k ,

‖qk‖ als j = k

0 als j > k

(5.7)

De projectie y reken je dan eenvoudig uit als y =∑n

k=1 qTk bqk . Het stelsel vergelijkingen Ax = y

is nu oplosbaar, omdat y ∈ Im(A); om dit op te lossen moeten we het echter uitschrijven tenopzichte van de nieuwe basis. We vinden zo het stelsel Rx = QTb , dat eenvoudig op te lossen isomdat R een bovendriehoeksmatrix is.

Samenvattend vinden we de (GS) algorithme: Bereken met de methode van Gram-Schmidt(5.5) een ontbinding van de matrix A = QR in factoren Q ∈ IRm×n met orthonormale kolommenen R ∈ IRn×n, een bovendriehoeksmatrix, en los het driehoekige systeem Rx = QTb op met(4.25). We kunnen correctheid eenvoudig bewijzen. Omdat R inverteerbaar is geldt

minx∈IRn

‖Ax− b‖ = minx∈IRn

‖QRx− b‖ = minx∈IRn

‖Qz− b‖ . (5.8)

Page 31: Een Inleiding in de Numerieke Lineaire Algebrahomepages.vub.ac.be/~pdegroen/numeriek/CursusNA2Ba.pdf“Matlab” is een interactieve taal, ontworpen door Cleve Moler, die is ontstaan

5 LINEAIRE KLEINSTE-KWADRATENPROBLEMEN 31

Het minimum van het rechterlid vinden we met de normaalvergelijkingen QTQz = z = QTb

(die perfect geconditioneerd zijn met conditie getal 1). Bijgevolg wordt het minimum van hetoorspronkelijke probleem gegeven door de oplossing van Rx = z = QTb.

In de praktijk blijkt deze algoritme voor het bepalen van een orthonormale basis in Im(A) goedte werken als we de volgorde van berekeningen iets veranderen. Om ak loodrecht op {q1 · · · qk−1}te plaatsen, moeten we de inproducten met deze vectoren berekenen. Voor de (absolute) afrond-fout in de berekende waarde van een inproduct hebben we in voorbeeld 4 van hoofdstuk 3.d deschatting (3.9) afgeleid:

|fl(qTj ak)− qT

j ak | ≤ nη ‖qj‖2 ‖ak‖2 = nη ‖ak‖2 omdat ‖qj‖2 = 1 .

Als we het inproduct qT1 ak berekend hebben en vervolgens het volgende inproduct qT

2 ak willenberekenen, kunnen we in plaats daarvan ook qT

2 (ak −αq1) berekenen voor willekeurige α, omdatqT

2 q1 = 0 bij definitie. Bij exact rekenen zal dit geen verschil maken, maar als we bij de berekeningafrondfouten (kunnen) maken zal de waarde van α wel belangrijk zijn, immers

|fl(qT2 (ak − αq1))− qT

2 (ak − αq1) | ≤ nη ‖ak − αq1‖2 . (5.9)

Deze bovengrens voor de afrondfout in het berekende resultaat is minimaal als α zo is, datak−αq1 ⊥ q1 , dus als we ak loodrecht op q1 zetten voordat we het inproduct met q2 berekenen.In het algemeen betekent dit dus, dat je bij de berekening van de rij inproducten van ak met deorthonormale vectoren {q1 · · · qk−1} de afrondfouten in de berekende inproducten (sterk) kuntverminderen door de vector ak onmiddellijk na het berekenen van het inproduct qT

j ak loodrecht opqj te zetten, voordat je het inproduct met de volgende vector qj+1 berekent. Met deze wijzigingvinden we een numeriek stabiele variant van (5.9), die in de literatuur MGS of “Modified GramSchmidt” wordt genoemd:

r11 := ‖a1‖ ; q1 := a1/r11 ;

for k = 2 : n , do

for j = 1 : k − 1 , do

rjk = qTj ak ; ak := ak − rjk qj ;

end

rkk := ‖ak ‖ ; qk := ak/rkk ;end

(5.10)

Voor het bepalen van c := QTb moeten we natuurlijk hetzelfde idee gebruiken en dit alsvolgtberekenen:

for k = 1 : n , do ck := qTk b ; b := b− ckqk ; end , (5.11)

en dus ook hier onmiddellijk orthogonaliseren na de berekening van het inproduct.

MGS levert dus een ontbinding van de matrix A = QR in een product van een matrixQ ∈ IRm×n met orthonormale kolommen een bovendriehoeksmatrix R ∈ IRn×n en reduceert hetkleinste-kwadratenprobleem (5.2) voor een matrix A van volle rang tot het oplossen van een hetdriehoekig stelsel Rx = QTb . Aangezien de orthogonale projectie goed geconditioneerd is met(absolute) afrondfouten begrend door nη‖b‖ (ga na!), worden afrondfouten in de MGS-oplossingvan (5.2) gedomineerd door het conditiegetal van R, dat gelijk is aan dat van A (ga na!). MGS isdus verre te verkiezen boven de methode de normaalvergelijkingen, hoewel het meer flops vraagt.

opgaven.

1. Laat zien, dat voor het oplossen van (5.2) met MGS 2mn2 + O(n2) flops nodig zijn en voorhet oplossen met normaalvergelijkingen “slechts” mn(n+1) + n3/3 + O(n2).

2. Laat zien dat de volgende volgorde van berekeningen equivalent is aan (5.10) (inclusief de

Page 32: Een Inleiding in de Numerieke Lineaire Algebrahomepages.vub.ac.be/~pdegroen/numeriek/CursusNA2Ba.pdf“Matlab” is een interactieve taal, ontworpen door Cleve Moler, die is ontstaan

5 LINEAIRE KLEINSTE-KWADRATENPROBLEMEN 32

MGS-filosofie!):

for k = 1 : n , do

rkk := ‖ak ‖ ; qk := ak/rkk ;for j = k + 1 : n , do

rkj = qTk aj ; aj := aj − rkj qk ;

end

end

(5.12)

Hierbij wordt ak in de k-de slag genormaliseerd tot qk en vervolgens worden alle volgendekolommen van A loodrecht op deze vector gezet.

3. Om de numerieke stabilteit van deze algoritme nog verder te kunnen verbeteren, kun je in dek-de slag onder de vectoren ak · · · an de kolom met grootste lengte zoeken en deze verwisselenmet de k-de kolom. Je kunt dit implementeren met 2nm + n2 + O(n) extra flops door eenlijst met kolomnormen bij te houden en de normen van de overblijvende kolommen in iedereslag bij te werken (met 2 flops per kolom). Dit geeft een ontbinding A = QRP met P eenpermutatiematrix.

Voor een correcte implementatie van de verwisselingen bekijken we algoritme (5.12) ietsnauwkeuriger. We geven de bijgewerkte j-de kolom in de k-de slag een extra (boven-)index

(k) mee en schrijven a(k)j ; a

(0)j is dus de j-de kolom van de oorspronkelijke matrix A. We

definieren voor k = 0 , · · · , n de tussenresultaten

Q(k) := (q1 | · · · |qk |0 | · · · |0 ) ∈ IRm×n ,

A(k) :=(0 | · · · |0 |a(k)

k+1 | · · · |a(k)n

)∈ IRm×n en

R(k) :=

r11 · · · · · · · · · · · · r1n

0. . .

......

. . . rkk · · · · · · rkn...

. . . 0 · · · 0...

. . .. . .

...0 · · · · · · · · · 0 0

∈ IRn×n .

(5.13)

Dit impliceert dus, dat Q(0) , R(0) en A(n) nulmatrices zijn en dat A(0) = A de oorspronkelijkematrix is, zodat A = Q(0) R(0) + A(0) waar is bij het begin van de algoritme.

for k = 1 : n , do

rkk := ‖a(k−1)k ‖ ; qk := a

(k−1)k /rkk ;

for j = k + 1 : n , do

rkj = qTk a

(k−1)j ; a

(k)j := a

(k−1)j − rkj qk ;

end{a

(k−1)j = qk rkj + a

(k)j voor j = k+1 · · · n en dus geldt A = Q(k) R(k) + A(k)

}

end

(5.14)

In iedere slag voegen we een kolom toe aan Q en een rij aan R, we verwijderen een kolomvan A en werken de rest bij zodat de gelijkheid A = Q(k) R(k) + A(k) behouden blijft. Aanhet eind geldt dus A = QR .Als we aan het begin van de k-de slag de langste kolom van A(k−1) op de k-de plaats willenbrengen, moeten we deze dus van links met een permutatiematrix als (4.38) vermenigvuldigenen dus moeten we alle temen in de gelijkheid A = Q(k−1) R(k−1) + A(k−1) hiermee ver-menigvuldigen.Schrijf deze algoritme met kolomverwisselingen uit in Matlab.

Page 33: Een Inleiding in de Numerieke Lineaire Algebrahomepages.vub.ac.be/~pdegroen/numeriek/CursusNA2Ba.pdf“Matlab” is een interactieve taal, ontworpen door Cleve Moler, die is ontstaan

5 LINEAIRE KLEINSTE-KWADRATENPROBLEMEN 33

5.c Householdertransformaties

Door A.S. Householder werd rond 1950 een andere elegante methode voorgesteld voor het bereke-nen van de oplossing van (5.2) via orthogonalisatie. We definieren bij gegeven niettriviale vectoru ∈ IRm de householdertransformatie Hu ∈ IRm×m door

Hu := I − 2uuT

uTu, I is de eenheidsmatrix. (5.15)

Deze heeft de volgende eigenschappen:

a. Hu is symmetrisch en orthogonaal,

Hu = HTu en HT

u Hu = I − 4uuT

uTu+

4uuT uuT

(uT u)2= I

b. Hu beeldt u af op −u en laat alle vectoren in u⊥ invariant, Huv = v als v ⊥ u . Een vectorw ∈ IRm kunnen we ontbinden in een component langs u en een loodrecht op u. De eerstecomponent wordt op zijn tegendeel afgebeeld en de tweede blijft invariant. Hiermee is Hu

dus een spiegeling van de ruimte in het loodvlak (lood-hypervlak) van u , zie figuur 5.

{λu}

wHuw

u⊥

O u�

��

��

��

��>

ZZ

ZZ

ZZ

ZZZ}

-

Figure 5: Een vector w, de ontbinding ervan in een component langs de spiegelingsvector u en eencomponent er loodrecht op en het beeld ervan onder de spiegeling in het loodvlak van u.

Gegeven de spiegelingsvector u kunnen we voor iedere vector w zo het beeld Huw bepalen.We kunnen ook andersom, gegeven een vector w en het beeld v ervan, een spiegelingsvector u

bepalen zodat v = Huw. Een eerste vereiste is natuurlijk dat de lengten van v en w gelijk zijn.Als dat het geval is, dan zien we uit figuur 5, dat we w op v kunnen afbeelden door een spiegelingin het bissectrice(hyper)vlak van beide vectoren; dit vlak wordt gegeven door (v − w)⊥, allevectoren die loodrecht staan op het verschil v −w. Immers, als ‖v‖ = ‖w‖ en zT (v −w) = 0,dan geldt voor het verschil van de afstanden van z tot v en w:

‖v − z‖2 − ‖w − z‖2 = ‖v‖2 − 2zT v + ‖z‖2 − ‖w‖2 + 2zT w − ‖z‖2 = 0 .

Met behulp van zulke housholdertransformaties kunnen een matrix A ∈ IRm×n op boven-driehoeks vorm brengen op analoge wijze als bij Gausseliminatie. Bij Gausseliminatie maken wein de k–de slag de elementen van de k–de kolom onder de hoofddiagonaal nul door de matrix vanlinks te vermenigvuldigen met een Gausstransformatie Gk , zie (4.36). Ditzelfde gaan we nu doenmet householdertransformaties.

Laten we in het bijzonder de eerste slag bekijken. Hierbij zoeken we een spiegelingsvectoru1 zo, dat Hu

1de eerste kolom a1 afbeeldt op (α, 0, · · · 0)T = α e1 , een vector waarvan alle

componenten behalve de eerste gelijk aan nul zijn. Wegens lengtebehoud hebben we voor α detwee keuzen α = ±‖a1‖. De twee mogelijke spiegelingsvectoren zijn dus a1 ∓ ‖a1‖ e1. Alleen in

Page 34: Een Inleiding in de Numerieke Lineaire Algebrahomepages.vub.ac.be/~pdegroen/numeriek/CursusNA2Ba.pdf“Matlab” is een interactieve taal, ontworpen door Cleve Moler, die is ontstaan

5 LINEAIRE KLEINSTE-KWADRATENPROBLEMEN 34

de eerste component verschilt deze van a1. Het teken in deze eerste component a11∓‖a1‖ kunnenwe dus zo kiezen, dat er geen cijferverlies optreedt. We kiezen5 dus

u1 = a1 + teken(a11)‖a1‖ e1 , (5.16)

zodat

uT1 u1 = aT

1 a1 + 2 teken(a11)‖a1‖ eT1 a1 + ‖a1‖2 eT

1 e1 = 2‖a1‖(‖a1‖+ | a11 | ) ,

uT1 a1 = aT

1 a1 + teken(a11)‖a1‖ eT1 a1 = ‖a1‖(‖a1‖+ | a11 | ) ,

Hu1a1 = a1 −

2uT1 a1

uT1 u1

u1 = − teken(a11)‖a1‖ e1 .

(5.17)

Bijgevolg geldt:

Hu1A =

α1 a12 · · · a1n

0 a22 · · · a2n...

......

0 am2 · · · amn

, α1 = −teken(a11) .

Op analoge manier kunnen we de elementen van de tweede kolom met rij-index 3 · · ·m nul makendoor de vector

a2 :=

0a22...

am2

te spiegelen op

0α2

0...0

door de keuze u2 = a2 + teken(a22)‖a2‖ e2 .

Het is duidelijk, dat de eerste component van u2 nul moet zijn, omdat we niet willen, dat deeerste kolom van Hu

1A nog verandert bij vermenigvuldiging met Hu

2.

Zo kunnen we doorgaan tot aan de laatste kolom en vinden we n spiegelingsvectoren u1 , · · · , un

waarmee we A transformeren in een bovendriehoeksmatrix R ,

Hun

· · · Hu1A =

r11 · · · r1n

0. . .

......

. . . rnn... 0...

...0 · · · 0

=: R (5.18)

zodat

A = QR met Q := Hu1· · · Hu

n

∈ IRm×m een orthogonale matrix. (5.19)

We vinden ook op deze manier een QR–ontbinding van A. Maar er is een groot verschil met (5.6).Hier is Q een orthogonale (en dus vierkante) matrix en heeft R dezelfde afmetingen als A, terwijlwe bij MGS een matrix Q met orthonormale kolommen en een vierkante R vinden. Voor hetvervolg is het handig om R te splitsen in een vierkante driehoeksmatrix R1 ∈ IRn×n bestaandeuit de eerste n (niettriviale) rijen van R en een nulmatrix,

R =

(R1

0

).

5Als het argument van de functie “teken” nul is, mogen we zowel +1 als −1 gebruiken, maar natuurlijk nooit

de waarde nul. De Matlab-functie sign is hier dus niet bruikbaar

Page 35: Een Inleiding in de Numerieke Lineaire Algebrahomepages.vub.ac.be/~pdegroen/numeriek/CursusNA2Ba.pdf“Matlab” is een interactieve taal, ontworpen door Cleve Moler, die is ontstaan

5 LINEAIRE KLEINSTE-KWADRATENPROBLEMEN 35

Als A van volle rang is, dan is R1 inverteerbaar.

Met deze ontbinding kunnen we het kleinste-kwadratenprobleem (5.2) alsvolgt oplossen. We-gens de invariantie van de norm onder othogonale transformaties geldt:

‖Ax − b ‖2 = ‖QRx− b ‖2 = ‖Rx−QTb ‖2 .

Als we Rx =

(R1x

0

)en QTb =

(c

d

)splitsen in vectoren met de eerste n componenten en de

overige m−n componenten, dan vinden we

‖Rx−QTb ‖2 = ‖(

R1x

0

)−(

c

d

)‖2 = ‖R1x− c ‖2 + ‖d‖2 .

Als A van volle rang is, dan is R1x = c oplosbaar; deze oplossing minimaliseert kennelijk defunctionaal ‖Ax− b ‖2 en geeft dus de oplossing van het kleinste-kwadratenprobleem (5.2).

for k = 1 : n,{Maak ak+1,k t/m am,k in de k-de kolom nul

d.m.v. een Householdertransformatie;}α :=

√∑mj=k a2

jk ; {norm van de relevante vector}

uk := (0 · · · 0 , akk + α teken(akk) , ak+1,k · · · amk)T ; {spiegelingsvector}akk := − teken(akk) ∗ α ,

γ := α |ukk | , {12 × norm van uk}

for j = k + 1 : n , {pas de householdertransformatie toe}aj = aj − uk uT

k aj/γ ; {op de volgende kolommen van A}end

b = b− uk uTk b/γ ; {pas transformatie toe op rechterlid b}

end

(5.20)

Het resultaat na afloop is, dat de bovendriehoek van A de relevante elementen van R bevat en datb de getransformeerde vector QTborigineel bevat. Je ziet dat het niet nodig is om de orthogonalematrix Q expliciet uit te rekenen.

Opmerking. Als je de orthogonale afbeelding Q voor later gebruik wilt bewaren, dan kunje in de k–de slag de componenten van de k–de spiegelingsvector uk delen door ukk. In dezeherschaalde spiegelingsvector zijn de eerste k−1 elementen nul en het k–de is een; deze hoevendus niet bewaard te worden. De overige elementen kun je bewaren in de geheugenplaatsen ak+1,k

t/m am,k , die je net nul gemaakt hebt en die dus geen relevante informatie meer bevatten. In deze“gefactoriseerde vorm” als product van n housholdertransformatie neemt Q veel minder plaats indan wanneer je alles uitvermenigvuldigt in een matrix.

opgaven.

1. Laat zien, dat algoritme (5.20) 2n2(m − n/3) + O(mn) flops nodig heeft; het kost daarmeemeer werk dan de oplossing via de normaalvergelijkingen maar minder dan MGS.Bepaal het extra aantal flops dat nodig is om Q expliciet te berekenen.Bepaal het aantal flops dat nodig is om QTb te berekenen met expliciete en gefactoriseerde Q.

2. Schrijf algoritme (5.20) uit in matlab.

3. Evenals bij MGS (opgave 3 in par. 6c) kunnen we bij Householder QR de numerieke stabiliteitnog verbeteren door kolomverwisselingen. Hierbij verwisselen we in de k–de slag de k–dekolom met de langste van de resterende kolommen (de nummers k t/m n). Bedenk wel, datin de k–de slag alleen de elementen met rij-index tussen k en m van iedere kolom van belang

Page 36: Een Inleiding in de Numerieke Lineaire Algebrahomepages.vub.ac.be/~pdegroen/numeriek/CursusNA2Ba.pdf“Matlab” is een interactieve taal, ontworpen door Cleve Moler, die is ontstaan

5 LINEAIRE KLEINSTE-KWADRATENPROBLEMEN 36

zijn en dat we dus de kolomnormen tot deze elementen moeten beperken. Ook hier kun jedit implementeren door in het begin een lijst van kolomnormen te maken en door aan heteind van de k–de slag de normen (van het relevante deel) van de kolommen k+1 t/m m bijte werken met twee flops per kolom. Dit levert een ontbinding A = QRP in een orthogonalematrix maal een bovendriehoeksmatrix maal een permutatiematrix.Schrijf de algoritme in matlab.

4. De pseudoinverse of Moore-Penrose-inverse van een matrix A ∈ IRm×n, te noteren met A†,kan via de SVD gedefinieerd worden. Als

A = UΣV T met Σ = diag(σ1 · · · σp) ∈ IRm×n en p := min{m,n}

de singuliere-waardenontbinding is en als

rang(A) = r , zodat σ1 ≥ · · · ≥ σr > 0 en σr+1 = · · · = σp = 0 ,

danA† := V Σ†UT met Σ† := diag(σ−1

1 · · · σ−1r , 0 · · · 0) ∈ IRn×m . (5.21)

Ga de volgende eigenschappen na:

a. A† is een afbeelding van IRm naar IRn met Ker(A†) = Im(A)⊥ en Im(A†) = Ker(A)⊥.

b. A†A en AA† zijn orthogonale projecties op Im(A) resp. Ker(A)⊥.

c. AA†A = A en A†AA† = A†.

d. Als m ≥ n en rang(A) = n dan is A†b de oplossing van het kleinste-kwadratenprobleem(5.2).

e. Als rang(A) < n (of m < n), dan is A†b de oplossing van het kleinste-kwadratenprobleem

(5.2) met minimale norm, dus A†b = argminx∈IRn { ‖x ‖ x = argminy∈IRn ‖Ay − b‖2 }.Opmerking: Je kunt de pseudo-inverse A† ook definieren als de (unieke) matrix die voldoetaan (b) en (c) (de Penrose-condities) en dan (5.21) bewijzen.

5.d Givens rotaties

Een derde veelgebruikte manier om een matrix op driehoeksvorm te brengen met orthogonaletransformaties werkt met Givensrotaties. Het idee is eenvoudig in IR2 uit te leggen.

De rotatie van een vector (x, y)T ∈ IR2 over een hoek ϕ wordt gegeven door de matrix

J(ϕ) :=

(cos ϕ sin ϕ− sin ϕ cos ϕ

)zodat J(ϕ)

(xy

)=

(x cos ϕ + y sinϕy cos ϕ− x sinϕ

)(5.22)

De hoek ϕ kunnen we bij gegeven vector (x, y)T ∈ IR2 zo kiezen dat de tweede component vanhet beeld nul wordt, dus

J(ϕ)

(xy

)=

(x cos ϕ + y sin ϕy cos ϕ− x sin ϕ

)=

(z0

)zodat y cos ϕ− x sin ϕ = 0 . (5.23)

De cosinus en de sinus kunnen we alsvolgt uitrekenen (als y 6= 0)

y2(1− sin2 ϕ) = x2 sin2 ϕ zodat sin ϕ = ± y√x2 + y2

en cos ϕ =x sinϕ

y

y2 cos2 ϕ = x2(1− cos2 ϕ) zodat cos ϕ = ± x√x2 + y2

en sin ϕ =y cos ϕ

x

(5.24)

Hieruit zien we, dat we de hoek ϕ niet hoeven uit te rekenen om de rotatiematrix volledig tekennen. Het volstaat om c := cos ϕ en s := sin ϕ uit te rekenen via een van beide formules in

Page 37: Een Inleiding in de Numerieke Lineaire Algebrahomepages.vub.ac.be/~pdegroen/numeriek/CursusNA2Ba.pdf“Matlab” is een interactieve taal, ontworpen door Cleve Moler, die is ontstaan

5 LINEAIRE KLEINSTE-KWADRATENPROBLEMEN 37

(5.24). Verder is de keuze van het teken vrij. We kunnen dit gebruiken om de eerste componentz van het beeld positief te maken. Om het aantal flops en de afrondfout in de berekende waardenvoor c en s te minimaliseren, wordt de berekening meestal alsvolgt geımplementeerd (als x en yniet beide nul zijn):

if |x | ≥ | y | then

t :=y

x; c :=

teken(x)√1 + t2

; s := t ∗ c ; z =x

c;

else

t :=x

y; s :=

teken(y)√1 + t2

; c := t ∗ s ; z =y

s;

end

(5.25)

Een Givens rotatie in IRm is een m×m–matrix van de vorm

J(k, ℓ, ϕ) :=

1. . .

1c · · · s · · ·

1...

. . ....

1−s · · · c · · ·

1...

.... . .

1

—- rij(k)

—- rij(ℓ)

|kolom(k)

|kolom(ℓ)

(5.26)

Hierin zijn alle diagonaalelementen 1, behalve het (k, k)– en het (ℓ, ℓ)–element, die gelijk zijn aanc := cos ϕ . Alle andere matrixelementen zijn nul, behalve het (k, ℓ)– en het (ℓ, k)–element; dezezijn gelijk aan s resp. −s met s := sin ϕ . Dit is een rotatie in het vlak opgespannen door de k–deen ℓ–de coordinaatvectoren ek en eℓ .

Van een vector a ∈ IRm kunnen we ℓ–de component op nul roteren door deze te ver-menigvuldigen met een Givensrotatie J(k, ℓ, ϕ), waarbij de sinus en cosinus van de rotatiehoekϕ berekend worden met formule (5.25) met x = ak en y = aℓ. Met een reeks van m−1 rotatiesvan de vorm J(k, k + 1, ϕk) voor k = m−1 : −1 : 1 kun je dus de hele vector a transformeren opeen veelvoud van de eerste coordinaatvector e1. Je kunt het ook doen met een reeks van de vormJ(1, k, ϑk) in de volgorde k = 2 : m (of k = m : −1 : 2). Je hebt dus grote vrijheid in het kiezenvan de opeenvolgende rotatievlakken, als je het maar zo doet, dat eerder gecreeerde nullen nietweer verdwijnen.

Op dezelfde manier kun je een matrix A ∈ IRm×n via een serie Givensrotaties op boven-driehoeksvorm brengen, bijvoorbeeld in de volgorde (langs diagonalen)

for k = m− 1 : −1 : 1 do

for j = 1 : min(n,m− k) do

Maak ak+j,j nul door A van links te vermenigvuldigen metde rotatie J(k + j − 1 , k + j , ϕkj) in het vlak opgespannendoor ek+j−1 en ek+j ; c en s worden dus berekend uit (5.25)met x = ak+j−1,j en y = ak+j,j .

end

end

(5.27)

Ook hierbij zijn er vele volgorden mogelijk. De berekening van een QR–ontbinding met Givensrotaties kost meer werk dan met Householdertransformaties of met MGS. Het voordeel van Givens

Page 38: Een Inleiding in de Numerieke Lineaire Algebrahomepages.vub.ac.be/~pdegroen/numeriek/CursusNA2Ba.pdf“Matlab” is een interactieve taal, ontworpen door Cleve Moler, die is ontstaan

5 LINEAIRE KLEINSTE-KWADRATENPROBLEMEN 38

is, dat je ermee selectief elementen van een matrix nul kunt maken zonder elementen buiten debetrokken rijen te veranderen. Dit is vooral van belang bij het werken met een ijle matrix (sparsematrix in het Engels), waarin het overgrote deel van de matrixelementen nul is (b.v. afkomstigvan de discretisatie van een partiele differentiaalvergelijking).

Opgave: 1. Schrijf de algoritme voor de oplossing van het kleinste-kwadratenprobleem (5.2) metbehulp van Givens rotaties expliciet uit. Ook hier hoeven we de rotaties niet te bewaren, als weze direct ook op het rechterlid toepassen, zoals bij Householder–QR.Laat zien, dat er voor algoritme (5.27) 3n2(m− n/3) + O(mn) flops nodig zijn.

Page 39: Een Inleiding in de Numerieke Lineaire Algebrahomepages.vub.ac.be/~pdegroen/numeriek/CursusNA2Ba.pdf“Matlab” is een interactieve taal, ontworpen door Cleve Moler, die is ontstaan

5 LINEAIRE KLEINSTE-KWADRATENPROBLEMEN 39

Opgave: Laat a = (a1 , · · · , an)T ∈ IRn een vector met lengte 1 zijn, ‖a ‖ = 1 , en laat e1 :=(1 , 0 , · · · , 0)T ∈ IRn de eerste eenheidsvector zijn. We definieren de vector u := a± e1 . Als u

niet de nulvector is, kunnen we de matrix H definieren door:

H := In − 2uuT

uT u( In is de eenheidsmatrix in IRn ) .

Bewijs, dat H een symmetrische orthogonale matrix is,waarvan de eerste kolom gelijk is aan ± a .

Gevolg: dit is een veel eenvoudiger manier om een orthogonale matrix met een voorgeschreveneerste kolom te maken, dan het toepassen van Gram-Schmidt op het stelsel {a , e1 , · · · , en}.