Spiseseddel 3

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 3

02601 Introduktion til numeriske algoritmer

15. februar 2016/pch

Spiseseddel 3
Frste del datafitting
velse 1. Trigonometrisk fit
Form
al: ve brugen af et fit (her: trigonometrisk) til at forudsige opfrslen af data.
dato
x
y

11/1
11
160

25/1
25
140

26/1
26
138

31/1
31
130

2/2
33
125

5/2
36
120

16/2
47
95

27/2
58
72

16/3
75
27

20/3
79
17

Hr. Madsen har observeret tidspunktet for solopgangen, set fra hans kkkenvindue,
og resultaterne fremg
ar af ovenst
aende tabel. Her er x-vrdierne nummeret p
a dagen startende med 1. januar, og y-vrdierne er tidspunktet for solopgangen m
alt i
minutter efter kl. 6:00; der skal ikke korrigeres for sommertid.
Da solens bevgelse om jorden kan antages at vre periodisk, er det nrliggende
at fitte en trigonometrisk funktion til disse data:
F (x) = c0 + c1 sin(x) + c2 cos(x) ,

= 2/365

(1)

hvor er valgt s
aledes at perioden for F er 365 dage. Beregn et mindste kvadraters
fit og plot fittet (en glat funktion) sammen med de observerede data (punkter).
Vi kan nu bruge vores fittede funktion F til at forudsige hvorn
ar solen st
ar tidligst
op, ved at betragte funktionen for x-vrdierne 80, 81, 82, . . . , 365 og finde minimum
for F (80), F (81), F (82), . . . , F (365). Passer det nogenlunde med hvad du forventer?

velse 2. H
andtering af grovfejl
Form
al: at kombinere datafitting med en strategi til at h
andtere fejlagtige data.
Med jvne mellemrum optrder der s
akaldte grovfejl i data, hvor en eller flere yvrdier er helt forkerte (for eksempel pga. forkert aflsning af instrumentet eller
skrivefejl). Vi skal her se p
a en simpel strategi til at fjerne s
adanne grovfejl. (En
nrmere analyse af strategien krver elementer af statistik som ikke indg
ar i dette
kursus.) Vi skal bruge det datast der ligger i filen Grovdata.mat p
a CampusNet.
1. Du skal frst fitte et polynomium af grad m = 8 til data. Brug enten metoden
med normalligningerne eller Matlab-funktionerne polyfit og polyval beskrevet i slides til forelsningen; de giver samme fit, og du kan selv vlge hvad du
synes er nemmest. Plot det beregnede fit sammen med datapunkterne.
2. Plot fejlene (som punkter):
ei = yi F (xi ) ,

i = 0, 1, 2, . . . , n

(2)

hvor F er det polynomium du lige har beregnet. Det er nemt at identificere


grovfejlene ved at se p
a plottet; men det er nyttigt at have en automatisk
metode der ikke krver at man manuelt skal gennemse data og fejl.
1

3. Du skal nu implementere flgende metode til at identificere og fjerne grovfejlene. Du skal bruge gennemsnittet for fejlene; det beregnes vha. Matlabfunktionen mean. Derefter skal du beregne de index n for hvilke der glder
|en | > 5 .

(3)

Dette gres vha. Matlab-funktionen find:


N = find( abs(e) > 5*mean(abs(e)) )
hvor vektoren e indeholder fejlene og N er en vektor med de index som opfylder betingelsen (3), alts
a de index der tilhrer grofvejlene. Du kan nu fjerne
grovfejlene fra data s
aledes:
x(N) = [ ]; y(N) = [ ];
4. Til sidste skal du igen fitte et polynomium af grad m = 8 til de resterende
data. Plot det nye fit sammen med data du skulle gerne se, at det nye fit er
bedre end det oprindelige.

Anden del nulpunkter


velse 3. Implementering og brug af Newtons algoritme
Form
al: at ve en simpel implementering af en iterativ metode.
Skriv en Matlab-funktion Newton der implementerer Newtons algoritme baseret p
a
formuleringen side 127. Funktionen skal udfre nmax iterationer, men du skal ikke
implementere stopkriterierne baseret p
a og :
x startgt
X1 x
for n = 1 to nmax
f x f (x)
f p f 0 (x)
x x f x/f p
Xn+1 x
end
Input til funktionen skal vre to function handles for hhv. f og f 0 samt et startgt
x0 og antal iterationer nmax. Output skal vre en vektor X med samtlige iterationer
x0 , x1 , x2 , . . . , xnmax . Test din Matlab-kode p
a funktionen fra eksemplet midt p
a side
128 med x0 = 3, nmax = 5 og funktionen:
f (x) = ((x 2)x + 1)x 3

f 0 (x) = (3x 4)x + 1 .

(4)

Specifikt skal du skrive:


f = @(x) ( (x - 2)*x + 1 )*x - 3;
df = @(x) ( 3*x - 4 )*x + 1;
r = Newton(f,df,x0,nmax);
Du skal f
a samme iterationsforlb som i bogen; men pga. afrundingsfejlene er tallene
beregnet i Matlab lidt anderledes. Brug format long eller format long e til at se
flere cifre i resultaterne.
2

velse 4. Kvadratisk konvergens


Form
al: at ve hvordan vi checker om en algoritme giver de forventede resultater.
Vi betragter funktionen
f (x) = x2 0.8x 0.2 .

(5)

Vis at r = 1 er en simpel rod for f (x) = 0.


Vi skal nu beregne denne rod vha. funktionen fra velse 3, med startgt x0 = 3 og
nmax = 6. Opskriv iterationerne xn , fejlene en = |r xn | og forholdene |en /e2n1 | i
en tabel. Se slides om nulpunkter.
Brug tallene i tabellen til at checke eksperimentelt at konvergensforlbet udviser
kvadratisk konvergens, ved at betragte forholdene |en /e2n1 | for n = 1, 2, 3, 4, 5, 6.
Forklar hvordan s
adan en undersgelse kan be- eller afkrfte om konvergensen er
kvadratisk.
Sammenlign dit estimat (fra tabellen) af konstanten som indg
ar i definitionen af
kvadratisk konvergens med den teoretiske grnsevrdi |1/2f 00 (r)/f 0 (r)|.

velse 5 (hvis der er tid). Herons metode (Exercise 3.2.25)


Form
al: at udlede en special-version af Newtons metode.
Vi skal her udlede en gammel metode til beregning af kvadratrdder. Metoden tilskrives ofte Heron af Alexandria (1070 AD), og g
ar under navnet Herons metode.
Det er i virkeligheden blot et specialtilflde af Newtons metode for funktionen
f (x) = x2 R
som har roden r =

(6)

R.

Vis at skridtet i Newtons metode for (6) tager formen




R
1
xn+1 =
x+
.
2
x

(7)

St R = 2 og udfr 3 iterationer med startgt x0 = 1 og check at du f


ar svaret
1.414215686274510.

Hvor mange iterationer skal du bruge for


at beregne 2 med nsten fuld njagtighed,
dvs. s
aledes at fejlen |en+1 | = |xn+1 2| 2u = eps? Svaret baseres p
a computereksperimenter og skal ikke udledes teoretisk.

Antag at du nu beregner 2 som lsning til (6) vha. bisektion, med startinterval
[a, b] = [1, 2]. Brug analysen fra bogen til at beregne hvor mange iterationer der skal
bruges til at sikre at fejlen er mindre end tolerancen 2u = eps.

You might also like