André Jaun, HT-2005 Anteckningar från lektioner i Numeriska Metoder fys-åk2. (Sid 60) Problemformulering. Använd matematik

Relevanta dokument
Intervallhalveringsmetoden, GKN sid 73. Sekantmetoden, GKN sid 79

Föreläsning 1. Numeriska metoder grundkurs II, DN1240. Carina Edlund Mottagningstid i rum 4516: onsdagar kl.

Konvergens för iterativa metoder

LABORATION cos (3x 2 ) dx I =

Sekantmetoden Beräkningsmatematik TANA21 Linköpings universitet Caroline Cornelius, Anja Hellander Ht 2018

LABORATION 2. Trapetsregeln, MATLAB-funktioner, ekvationer, numerisk derivering

Gruppuppgifter 1 MMA132, Numeriska metoder, distans

Icke-linjära ekvationer

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

Tentamen del 1 SF1546, , , Numeriska metoder, grundkurs

Tentamen i Beräkningsvetenskap I och KF, 5.0 hp,

André Jaun, HT-2005 Anteckningar från lektioner i Numeriska Metoder fys-åk2. (Sid 93) Trapetsregeln Adaptiva metoder ODE-metod Förbehandlande metoder

Från förra gången: Newton-Raphsons metod

LAB 1. FELANALYS. 1 Inledning. 2 Flyttal. 1.1 Innehåll. 2.1 Avrundningsenheten, µ, och maskinepsilon, ε M

Fixpunktsiteration. Kapitel Fixpunktsekvation. 1. f(x) = x = g(x).

TANA19 NUMERISKA METODER

Lösandet av ekvationer utgör ett centralt område inom matematiken, kanske främst den tillämpade.

LAB 4. ORDINÄRA DIFFERENTIALEKVATIONER. 1 Inledning. 2 Eulers metod och Runge-Kuttas metod

Block 5: Ickelineära. ekvationer? Läroboken. Löpsedel: Icke-lineära. ekvationer. Vad visade laborationen? Vad visade laborationen?

Del I: Lösningsförslag till Numerisk analys,

Newtons metod. 1 Inledning. 2 Newtons metod. CTH/GU LABORATION 6 MVE /2013 Matematiska vetenskaper

Prov 1 2. Ellips 12 Numeriska och algebraiska metoder lösningar till övningsproven uppdaterad a) i) Nollställen för polynomet 2x 2 3x 1:

Linjärisering och Newtons metod

Ickelinjära ekvationer

Interpolation Modellfunktioner som satisfierar givna punkter

a = a a a a a a ± ± ± ±500

Teorifrågor. 6. Beräkna konditionstalet för en diagonalmatris med diagonalelementen 2/k, k = 1,2,...,20.

Labb 3: Ekvationslösning med Matlab (v2)

Sammanfattning (Nummedelen)

Lösningsförslag Tentamen i Beräkningsvetenskap I, 5.0 hp,

LÖSNINGSFÖRSLAG TILL TENTAMEN 2 SF1664

6 Derivata och grafer

Newtons metod och arsenik på lekplatser

DERIVATA. = lim. x n 2 h h n. 2

Laboration 3. Funktioner, vektorer, integraler och felskattning

Betygskriterier Matematik D MA p. Respektive programmål gäller över kurskriterierna

Differentialekvationer begynnelsevärdesproblem

Icke-linjära ekvationer

LÖSNINGSFÖRSLAG TILL TENTAMEN 2 SF1664

Numerisk Analys, MMG410. Lecture 10. 1/17

Matematisk analys för ingenjörer Matlabövning 2 Numerisk ekvationslösning och integration

En vanlig uppgift är att bestämma max resp min för en trigonometrisk funktion och de x- värden för vilka dessa antas.

MMA132: Laboration 2 Matriser i MATLAB

TENTAMEN I GRUNDKURS I NUMERISKA METODER - DEL 20

Numeriska metoder, grundkurs II. Dagens program. Hur skriver man en funktion? Administrativt. Hur var det man gjorde?

LAB 3. INTERPOLATION. 1 Inledning. 2 Interpolation med polynom. 3 Splineinterpolation. 1.1 Innehåll. 3.1 Problembeskrivning

Omtentamen i DV & TDV

Institutionen för Matematik. F1 - Linjär algebra och numerisk analys, TMA671 Svar till övningar i Heath s bok och extraövningar

Inbyggda funktioner i MATLAB

Akademin för utbildning, kultur och kommunikation MMA132 Numeriska Metoder Avdelningen för tillämpad matematik Datum: 13 jan 2014

TENTAMEN I GRUNDKURS I NUMERISKA METODER - DEL 2

Sidor i boken f(x) = a x 2 +b x+c

MAA7 Derivatan. 2. Funktionens egenskaper. 2.1 Repetition av grundbegerepp

Meningslöst nonsens. December 14, 2014

Laboration 3. Funktioner, vektorer, integraler och felskattning

ALA-a Innehåll RÄKNEÖVNING VECKA 7. 1 Lite teori Kapitel Kapitel Kapitel Kapitel 14...

SF1669 Matematisk och numerisk analys II Lösningsförslag till modelltentamen DEL A

Newtons metod. 1 Inledning. CTH/GU LABORATION 3 MVE /2014 Matematiska vetenskaper

Maclaurins och Taylors formler. Standardutvecklingar (fortsättning), entydighet, numerisk beräkning av vissa uttryck, beräkning

Fel- och störningsanalys

Ansvariga lärare: Yury Shestopalov, rum 3A313, tel (a) Problem 1. Använd Eulers metod II (tre steg) och lös begynnelsevärdesproblemet

4 Fler deriveringsregler

Kontrollskrivning KS1T

Mathematica. Utdata är Mathematicas svar på dina kommandon. Här ser vi svaret på kommandot från. , x

SF1625 Envariabelanalys Tentamen Lördagen den 11 januari, 2014

y y 1 = k(x x 1 ) f(x) = 3 x

Något om Taylors formel och Mathematica

Tentamen del 1 SF1511, , kl , Numeriska metoder och grundläggande programmering

Lösningsanvisningar till de icke obligatoriska workoutuppgifterna

Denna föreläsning. DN1212 Numeriska metoder och grundläggande programmering FN Felfortplantning och kondition

Fel- och störningsanalys

Linjärisering, Jacobimatris och Newtons metod.

Bisektionsalgoritmen. Kapitel Kvadratroten ur 2

Kan du det här? o o. o o o o. Derivera potensfunktioner, exponentialfunktioner och summor av funktioner. Använda dig av derivatan i problemlösning.

DN1212+DN1214+DN1215+DN1240+DN1241+DN1243 mfl Tentamen i Grundkurs i numeriska metoder Del 2 (av 2) Lördag , kl 9-12

Lösningsförslag till tentamensskrivningen i Numerisk analys

DN1212 för M: Projektrapport. Krimskramsbollen. av Ninni Carlsund

Denna föreläsning. DN1212 Numeriska metoder och grundläggande programmering FN Differentialekvationer. Repetition av FN5 (GNM kap 6.

) + γy = 0, y(0) = 1,

Gamla tentemensuppgifter

Moment 1.15, 2.1, 2.4 Viktiga exempel 2.2, 2.3, 2.4 Övningsuppgifter Ö2.2ab, Ö2.3. Polynomekvationer. p 2 (x) = x 7 +1.

1. Utan miniräknare, skissa grafen (bestäm ev. extrempunkter och asymptoter) y = x2 1 x 2 + 1

5B1134 Matematik och modeller Lösningsförslag till tentamen den 12 januari 2005

SF1625 Envariabelanalys Lösningsförslag till tentamen DEL A

6. Samband mellan derivata och monotonitet

Matematik 3 Digitala övningar med TI-82 Stats, TI-84 Plus och TI-Nspire CAS

F3 PP kap 3, ekvationslösning och iteration, forts.

Existens och entydighet

Tentamen i Matematisk analys MVE045, Lösningsförslag

Numeriska metoder, grundkurs II. Dagens program. Gyllenesnittminimering, exempel Gyllenesnittetminimering. Övningsgrupp 1

Funktionsstudier med derivata

För teknologer inskrivna H06 eller tidigare. Skriv GAMMAL på omslaget till din anomyna tentamen så att jag kan sortera ut de gamla teknologerna.

Komposanter, koordinater och vektorlängd Ja, den här teorin gick vi igenom igår. Istället koncentrerar vi oss på träning inför KS3 och tentamen.

Laboration 4. Numerisk behandling av integraler och begynnelsevärdesproblem

1. Inledning, som visar att man inte skall tro på allt man ser. Betrakta denna följd av tal, där varje tal är dubbelt så stort som närmast föregående

4. Bestäm arean av det begränsade område som precis innesluts av kurvorna. och y = x 2. h(x) = e 2x 3,

Facit Tentamen i Beräkningsvetenskap I (1TD393) STS ES W K1

Polynomekvationer. p 2 (x) = x x 3 +2x 10 = 0

2. (a) Skissa grafen till funktionen f(x) = e x 2 x. Ange eventuella extremvärden, inflektionspunkter

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Tid: 21:a April klockan

Transkript:

André Jaun, HT-2005 Anteckningar från lektioner i Numeriska Metoder fys-åk2. (Sid 60) Lektion 5 Ekvationslösning Problemformulering Förarbete Använd matematik Begränsa sökområdet Rita Skriv funktionsprogram Bearbetning MATLAB-metoder Newton-Raphsons metod Sekantmetoden Efterarbete Tillförlitlighetsbedömning Felskattning Presentation av resultat Problemformulering (allmän): Finn en rot x = α (ett antal rötter x = α 1,..., α k ) till ekvationen f(x) = 0. Som du har hört på Lektion 1 och sett i Datorlaboration 1, så finns i MATLAB dels roots (när nollställena till polynom ska bestämmas) dels en ekvationslösare fzero. nollst=roots(koeffvektor) rot=fzero( func,gissning) Metoderna får gärna användas när så är lämpligt. roots är pålitlitlig och ger resultat med full maskinnoggrannhet. Men långt ifrån alla funktioner är polynom, så fzero är i praktiken vad som erbjuds. Den har nackdelen att det är svårt att få veta något om noggrannheten påståendena i handböckerna stämmer inte alltid. För att komma till rätta med det bekymret ska vi se på två metoder som, rätt använda, ger full insyn. Newton-Raphsons metod (GNM 2:2A) Den grafiska tolkningen

André Jaun, HT-2005 Anteckningar från lektioner i Numeriska Metoder fys-åk2. (Sid 61) Härledning med hjälp av den räta linjens ekvation (L1, GNM sid (1)14) Iteration (Grundidé, se även GNM 1:3E) Skriv hellre (förklaring följer snart) på formen EXEMPEL 1 (Problemformulering) Lös ekvationen x 2 4 cos x = 0. Förarbete GNM 2:1 nämner de förarbetande åtgärderna 2:1A Beakta problemets bakgrund; 2:1B Grafisk teknik; 2:1C Dela upp problemet; 2:1D Använd matematik; 2:1E Intervallhalvering; samt påpekar att de olika åtgärderna kan kombineras. I det här exemplet blir det förstås inte tal om att fundera på problemets bakgrund. Men använda matematik kan man göra på så vis att man redan från början begränsar det möjliga området för ekvationens rötter: Bestäm sökområde

André Jaun, HT-2005 Anteckningar från lektioner i Numeriska Metoder fys-åk2. (Sid 62) Utan någon åtgärd som bevisar att alla rötter ligger inom sökintervallet, kan man inte anses vara säker på att ha hittat samtliga rötter. Ett bevis, även så löst formulerat som ovan, är någonting betydligt bättre än resonemang som hänvisar till att man inser dolda samband. Har man MATLAB som hjälpmedel, är grafisk teknik mycket användbar vid förarbetet, dvs man låter helt enkelt MATLAB rita. I det här fallet kan man exempelvis dela upp funktionen f(x) = x 2 4 cos x i två delar, x 2 respektive 4 cos x. Man ritar de två kurvorna över sökintervallet. Att de skär varandra betyder att i skärningspunkten är x 2 = 4 cos x, dvs att ekvationen x 2 4 cos x = 0 satisfieras. Genom att avläsa x-koordinaten för skärningspunkten (skärningspunkterna) så gott det går, har man funnit en hyfsad skattning till roten (rötterna). Kommandofil: x=0:0.05:2; f1=x.*x; f2=4*cos(x); plot(x,f1,x,f2, -- ), grid title( Söker nollställe till x^2-4cosx ) 4 Söker nollställe till x^2 4cosx 3 2 1 0 1 2 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 Det är tydligt att x = 1.2 är en lämplig utgångspunkt för det fortsatta arbetet. Att programmera Newton-Raphsons metod i MATLAB är lätt. Eftersom både funktionen och derivatan behövs, skriver jag en funktionsfil, där båda dessa värden är utdata. Filen heter Ex1ekv.m och har utseendet: function [f,d] = Ex1ekv(x); f = x.*x-4*cos(x); d = 2*x+4*sin(x);

André Jaun, HT-2005 Anteckningar från lektioner i Numeriska Metoder fys-åk2. (Sid 63) Jag bestämmer mig för att iterera tills två på varandra följande x-värden skiljer sig högst 5 10 11. Eftersom x n+1 = x n t n ska jag med andra ord upprepa newtonraphson-steget så länge som t n > 5 10 11. Konstruktionen upprepa kommandon så länge som ett villkor gäller skrivs i MATLAB: while villkor end kommandon Skillnaden mellan while villkor...end och if villkor...end är att while-slingan genomlöps gång på gång; if-satsen åstadkommer en förgrening i programflödet en enda gång. Bearbetning Kommandon för att genomföra ekvationslösningen blir x=1.2; t=1; % t måste till en början vara >5e-11 while abs(t) > 5e-11 [f,fprim] = Ex1ekv(x); t=f/fprim; x=x-t; end rotnr=x Vid körning får jag omgående svaret rotnr = 1.20153829934058 Efterarbete Efterarbetet innebär att göra en tillförlitlighetsbedömning och att presentera resultatet. Som jag har programmerat ovan, dvs inte skrivit ut något annat än slutresultatet, så har fördelarna med Newton-Raphsons metod inte alls framgått. Jag är lika ovetande om resultatets tillförlitlighet som om jag hade använt fzero. Det ser ut så här: >> rotfz=fzero( Ex1ekv,1.2) rotfz = 1.20153829934057 Nu har jag faktiskt utfört tillförlitlighetsbedömning med metodvariation. Men här finns det en VARNING att utfärda: Samtliga metoder kan under olyckliga omständigheter ge grovt felaktiga resultat. Tillförlitlighetsbedömningen kräver därför undersökning av regelbundenheten. Om resultaten är rejält olika, så vet man att något trasslar. Men om de är så pass lika som ovan, så upptäcker man inte en eventuell felaktighet (att det här inte är överdrivna farhågor, kan du intyga efter att ha gjort uppgift 2 på datorlaboration 2). Vad regelbundenhet hos metoder för differentialekvationer innebär har jag gått igenom (minns du?), liksom hur man kontrollerar den (repetera om du har glömt, för det är viktigt). För fzero kan ingen kontroll genomföras eftersom vi inte vet hur teorin ser ut

André Jaun, HT-2005 Anteckningar från lektioner i Numeriska Metoder fys-åk2. (Sid 64) för den metoden. Konsekvensen är att man inte kan vara säker på att resultaten från fzero är korrekta. För Newton-Raphsons metod finns desto mer teori. Den i det här sammanhanget viktigaste detaljen är: Vad är det? Newton-Raphsons metod konvergerar kvadratiskt. Hur yttrar det sig? Vid regelbundenhet återspeglar metodens utdata dess trunkeringsfel. I Newton-Raphsons metod avtar iteratens trunkeringsfel kvadratiskt. Man undersöker alltså regelbundenheten genom att skriva ut varje K n = t n /t 2 n 1 och sedan bedöma om dessa K n kan anses vara konstanta ( K). Man gör vid behov undantag för första och sista K n -värdet (ty vid första iterationen, n = 1, kan det vara för tidigt att avgöra vad som gäller när n ; vid sista iterationen kan avrundningsfel störa regelbundenheten). Skattning av trunkeringsfelet Låt N vara sista n för vilket t n /t 2 n 1 K (dvs regelbundenheten upphör för n > N). Då accepteras x N+1 = x N t N, och trunkeringsfelet, x N+1 α skattas E trunk K t 2 N. Regelbundenheten (allmänna definitionen) garanterar att övriga fel i kalkylerna är försumbara jämfört med trunkeringsfelet. Eftersom redan t N < 5 10 11, så är, vid normalstort K, trunkeringsfelet försumbart jämfört med det presentationsfel som MAT- LAB gör vid utskriften med långt format, och är än mer försumbart om man själv gör en avrundning till måttligt antal siffror. Om man inte kan konstatera regelbundenhet, så är det något som är fel, även om man får ett resultat. Det kan vara programfel, det kan vara någon egenskap hos ekvationen som förstör den kvadratiska konvergensen. Resultatet ska då naturligtvis inte accepteras. Jag betonar detta eftersom det finns en benägenhet att acceptera resultat utan undersökningar; en benägenhet som jag med bestämdhet motarbetar.

André Jaun, HT-2005 Anteckningar från lektioner i Numeriska Metoder fys-åk2. (Sid 65) Bättre fungerande program för Newton-Raphsons metod Jag hade skrivit programmet för Newton-Raphsons metod så här långt på sidan 65: x=1.2; t=1; % t måste till en början vara >5e-11 while abs(t) > 5e-11 [f,fprim] = Ex1ekv(x); t=f/fprim; x=x-t; end rotnr =x Min första åtgärd är att programmera Newton-Raphsons metod så att felskattningen kan göras direkt utan besvär. Det sker genom att jag låter skriva ut de kvoter som jag kallar K n ovan. Om roten är mycket liten (t ex mindre än 5 10 11 ) så avbryter while-villkoret för tidigt. Om roten är mycket stor (t ex större än 10 8 ), så kan man få en evighetsslinga. I satsen x=x-t; kommer nämligen ett t 10 9 att tappas bort bredvid ett x 10 8 (eftersom MATLAB inte klarar mer än 16 siffror). x-värdet ändras därför inte, så nästa t-värde blir samma som tidigare, dvs 10 9. Min andra åtgärd är därför att testa värdet på t relativt värdet på x, dvs att skriva while abs(t) > 5e-11*abs(x) Ett annat missöde som kan inträffa är att Newton-Raphsons metod överhuvudtaget inte konvergerar. Min tredje åtgärd är att räkna iterationerna, och avbryta om de blir för många (jag tycker att 10 iterationer är för många, Newton-Raphsons metod brukar ta sig fram mycket snabbt). Vid ett sådant avbrott bör varning utfärdas. Min fjärde åtgärd är att skriva hela programmet som en funktion, som kan anropas lika enkelt som fzero: rotnr=newrap( func,startx). Eftersom den funktion, som man söker nollstället till, ska vara parameter, säg F, måste man byta ut satsen [f,fprim]=ex1ekv(x); mot [f,fprim]=feval(f,x);. function [rot] = newrap(f, start) x=start; t=1; it=0; Ktest=[]; format short e, format compact disp( x f(x) df/dx t Ktest ) while abs(t) > 5e-11*abs(x) & it<10 [f,fprim] = feval(f,x); t=f/fprim; if it>0, Ktest=abs(t)/t2; end disp([x f fprim t Ktest]) x=x-t; it=it+1; t2=t*t; end if it==10, disp( Avbrott efter 10 iterationer ) else format long rot = x end Det här programmet ligger på kursens hemsida, tillåtet att knycka. Det är lika lätt att använda som MATLAB-s fzero. Så här kan det se ut vid en körning:

André Jaun, HT-2005 Anteckningar från lektioner i Numeriska Metoder fys-åk2. (Sid 66) >> rotnr = newrap( Ex1ekv,1.2); x f(x) df/dx t Ktest 1.2000e+00-9.4310e-03 6.1282e+00-1.5390e-03 1.2015e+00 4.0826e-06 6.1335e+00 6.6562e-07 2.8104e-01 1.2015e+00 7.6317e-13 6.1335e+00 1.2443e-13 2.8084e-01 rot = 1.20153829934058 Nu kan äntligen en säker tillförlitlighetsbedömning göras. Med så få iterationer kan det vara omöjligt att verkligen konstatera regelbundenhet men den här gången var det möjligt. Trunkeringsfelet är 0.28 (1.2443 10 13 ) 2 4.3 10 27, som är försumbart jämfört med MATLAB-s presentationsfel ( 0.5 10 14 ) vid utskriften av rotnr. Om jag nu avrundar resultatet till exempelvis 9 decimaler ( α = 1.201538299) så blir uppenbarligen både trunkeringsfel och avrundningsfel försumbara jämfört med presentationsfelet e pres = 3.4 10 10. Detta är mindre än 0.5 10 9, så nu är jag säker på att ha fått roten med 9 korrekta decimaler. Efterbehandlingen avslutas med presentation av resultat. Eftersom alla har sett hela processen, räcker det i det här fallet med presentationen: Rötterna är, med 9 korrekta decimaler: α = 1.201538299 och α. Sekantmetoden (GNM 2:2B) Vi kommer snart att stöta på ekvationer där det är mer eller mindre omöjligt att derivera. Då är det inte tänkbart att använda Newton-Raphsons metod, medan däremot fzero skulle kunna fungera. Haken är fortfarande att man inte har någon säker teknik för tillförlitlighetsbedömningen i fzero. Till sådana ekvationer använder man lämpligen sekantmetoden, där man klarar sig utan att derivera och kan göra tillförlitlighetsbedömning. Grafisk tolkning Härledning med hjälp av den räta linjens ekvation (L2, GNM sid (1)14)

André Jaun, HT-2005 Anteckningar från lektioner i Numeriska Metoder fys-åk2. (Sid 67) Iterationerna: Sekantmetodens konvergens är inte kvadratisk, utan subkvadratisk (dvs lite mindre än kvadratisk). Man kan visa att det gäller lim n t n+1 t n t n 1 = K 0. Regelbundenheten hos sekantmetoden kontrolleras därför med hjälp av denna kvot mellan t n -värden i varje iterationssteg. Om regelbundenhet kan konstateras fram till n = N, så skattas trunkeringsfelet i x N+1 = x N t N med E trunk = K t N t N 1 Jag programmerar sekantmetoden så likt newrap som möjligt. Den väsentliga skillnaden är att det behövs två startvärden och att värdena från steget n ska överföras till steget n + 1. function [rot] = sekant(f,start1,start2); x1=start1; x2=start2; it=1; f1=feval(f,x1); t=1; t2=1; Ktest=[]; format short e, format compact disp( x f(x) t Ktest ) while abs(t) > 5e-11*abs(x2) & it<10 f2 = feval(f,x2); t=(x2-x1)/(f2-f1)*f2; if it>2, Ktest=abs(t/(t1*t2)); end disp([x2 f2 t Ktest]) x1=x2; f1=f2; x2=x2-t; t1=t2; t2=t; it=it+1; end if it==10, disp( Avbrott efter 10 iterationer ) else format long rot = x2 end Även den här filen, sekant.m finns åtkomlig på kursens hemsida.

André Jaun, HT-2005 Anteckningar från lektioner i Numeriska Metoder fys-åk2. (Sid 68) EXEMPEL 1, fortsättning Funktionen x 2 4 cos x är visserligen lätt att derivera, men jag behandlar ändå samma ekvation, för att demonstrera skillnader och likheter mellan metoderna. function f= Ex1sek(x) f=x.*x-4*cos(x); - - - - - - - - - - - - - - - - - - - - - >> rotsek=sekant( Ex1sek,1.1, 1.2); x f(x) t Ktest 1.2000e+00-9.4310e-03-1.5852e-03 1.2016e+00 2.8748e-04 4.6890e-05 1.2015e+00-1.2426e-07-2.0260e-08 2.7257e-01 1.2015e+00-1.6351e-12-2.6659e-13 2.8063e-01 rot = 1.20153829934058 Vi ser att vi får regelbundhet och att det blir samma K 0.28 som i Newton-Raphsons metod (K = 1 f (α) i båda metoderna). E 2 f (α) trunk 0.28 2, 67 10 13 2 10 8 1.5 10 21, så fortsättningen följer som i Newton-Raphsons metod. EXEMPEL 2 Bestäm rötterna till ekvationen e x + 1.05x sin(x 2 )/2 = 1. Förarbete Skriv funktionsprogrammet... function f = Ex2ekv(x) f = exp(-x)+1.05*x-sin(x.*x)/2-1;... och rita en graf. Jag chansar vilt med intervallgränserna: fplot( Ex2ekv,[-2,5]), grid 5 4 3 2 1 0 1 2 1 0 1 2 3 4 5 Med ledning av figuren kan jag bevisa att jag inte har några rötter utanför 2 x 2. Övning: Genomför detta bevis! Se till att det verkligen blir ett bevis.

André Jaun, HT-2005 Anteckningar från lektioner i Numeriska Metoder fys-åk2. (Sid 69) När beviset är genomfört kan jag helt förlita mig på figuren och se att rötterna ligger mellan 0.8 och +1.2. För att se tydligare, ritar jag funktionen över detta intervall: 0.1 0.08 0.06 0.04 0.02 0 Bearbetning 0.02 0.8 0.6 0.4 0.2 0 0.2 0.4 0.6 0.8 1 1.2 I figuren ser jag att x = 0 kan vara en rot. Sätter jag in 0 i funktionen finner jag att jag såg rätt. Övriga tre rötter tar jag fram med sekantmetoden. Startvärden skaffar jag med ginput (jag klickar alltså två gånger i närheten av var och en av rötterna). [xnoll, yslask]=ginput(6); for i=1:3 rot(i)=sekant( Ex2ekv,xnoll(2*i-1),xnoll(2*i)); end Körning ger: x f(x) t Ktest -4.7512e-01-2.5826e-03 2.2469e-02-4.9758e-01-2.5446e-04 2.4557e-03-5.0004e-01 2.3806e-05-2.1009e-04 3.8076e+00-4.9983e-01-1.8897e-07 1.6545e-06 3.2069e+00-4.9983e-01-1.3850e-10 1.2135e-09 3.4912e+00-4.9983e-01 6.6613e-16-5.8367e-15 2.9070e+00 rot = -0.49983107228662 x f(x) t Ktest 6.2166e-01 1.3388e-03-2.1738e-02 6.4340e-01-4.7787e-05 7.4919e-04 6.4265e-01 5.6262e-07-8.7180e-06 5.3530e-01 6.4266e-01 1.8722e-10-2.9019e-09 4.4430e-01 6.4266e-01-7.7716e-16 1.2046e-14 4.7615e-01 rot = 0.64265697995232 x f(x) t Ktest 1.0318e+00 2.4541e-03 1.7245e-02 1.0146e+00-6.2884e-04-3.5175e-03 1.0181e+00-4.0082e-05-2.3947e-04 3.9477e+00 1.0183e+00 7.3249e-07 4.2977e-06 5.1021e+00 1.0183e+00-8.2732e-10-4.8487e-09 4.7112e+00 1.0183e+00-1.7097e-14-1.0020e-13 4.8087e+00 rot = 1.01830472374639

André Jaun, HT-2005 Anteckningar från lektioner i Numeriska Metoder fys-åk2. (Sid 70) Efterbehandling Alla tre fallen uppvisar regelbundenhet, så trunkeringsfelen skattas 3 6 10 15 1.2 10 9, 0.48 1.2 10 14 3 10 9 respektive 4.8 10 13 4.9 10 9, och är därför alla försumbara, när jag presenterar värdena med 10 decimaler. Svar: Rötterna är 0.4998310723, 0.6426569800 och 1.0183047237 med 10 korrekta decimaler samt 0 exakt. Tabellfel Hittills har jag, med hjälp av regelbundenheten, bara behövt titta på trunkeringsfelet, försumma beräkningsfelen och som totalfel ange presentationsfelet. Men i uppställningen av feltyper fanns också tabellfelet (lektionsanteckningar för lektion 2 sid 21). Detta kan vanligen skattas med hjälp av felfortplantningsformeln: E f f ( x) E x. Här förutsätts x vara behäftad med fel, och formeln ger då en skattning av det fel i f som därvid uppkommer. När man löser ekvationer, är förhållandet det omvända, dvs f = 0 beräknas med ett visst fel e f, sådant att e f E f och det felet ger ett fel, e x i x. Detta fel kan, åter med användande av felfortplantningsformeln, skattas: E x E f / f ( x) Tack vare MATLAB-s höga räknenoggrannhet har vi hittills inte behövt beakta tabellfelet, men nu är det dags för ett exempel där f(x) faktiskt inte kan beräknas med så stor noggrannhet att tabellfelet blir försumbart. EXEMPEL 3 Bestäm med 8 korrekta decimaler roten till ekvationen y(x) = 1, när y(x) satisfierar begynnelsevärdesproblemet y = 1 + x 2 y 2 ; y(0) = 0. Förarbete function yprim=ex3dif(x,y) xy=x*y; yprim=1+xy*xy; Jag tar först reda på om det överhuvudtaget finns möjligheter att lösa ekvationen. Det gör jag genom att rita lösningen till differentialekvationen ett stycke, och titta ifall, och i så fall var, y(x) > 1. Så långt duger grovskattningar, så jag använder ode45. >> [xgr,ygr]=ode45( Ex3dif,[0 2],0); Warning: Failure at t=1.454993e+00. Unable to meet integration tolerances without reducing the step size below the smallest value allowed (5.169173e-15) at time t. >> [xgr,ygr]=ode45( Ex3dif,[0 1],0); >> plot(xgr,ygr), grid

André Jaun, HT-2005 Anteckningar från lektioner i Numeriska Metoder fys-åk2. (Sid 71) 1.4 1.2 1 0.8 0.6 0.4 0.2 0 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Funktionen har ett mycket lugnt förlopp, åtminstone fram till den punkt vi söker, den då y(x) = 1. Varningen som dök upp då jag försökte nå x = 2, visar att funktionen inte är lika lätthanterlig bortom x = 1. Otrevligheter i närheten av det område som man arbetar i, kan störa, så det är bra att (tack vare varningen) känna till att risken finns. Då är det oförlåtligt att slarva med kontrollerna. Jag tycker att det är bättre att redan under förarbetet ta reda på om den begärda noggrannheten kan uppnås med måttliga ansträngningar bättre än att lösa problemet i förhoppning att allt ska gå bra, och göra undersökningen efteråt. Jag beräknar därför, med Runge-Kuttas metod, y(0.9) (eftersom ekvationens rot ligger nära till vänster om 0.9). Härvid använder jag steglängder 0.01, 0.005, 0.0025,..., (dvs antal steg = 90, 180, 360) och kontrollerar i första hand regelbundenheten, sedan vilken steglängd som behövs för att få 8 decimalers noggrannhet. OBS! Det är roten till ekvationen y(x) = 1, som ska bestämmas med 8 decimalers noggrannhet, men felskattningen i Runge-Kuttas metod avser y-värdet. För roten gäller, som vi nyss såg, E tab = E y / y. Derivatavärdet får man genom att sätta in x och y i differentialekvationens f(x, y). Allt detta ordnas nu enkelt på en kommandofil (jag håller fortfarande på med förarbetet): Körning: y09(1)=rkbegv( Ex3dif,0,0.9,0,90); y09(2)=rkbegv( Ex3dif,0,0.9,0,180); y09(3)=rkbegv( Ex3dif,0,0.9,0,360); format long, y09 format short, delta=diff(y09) kvot=delta(1)/delta(2) yprim=ex3dif(0.9,y09(1)) Extab=abs(delta/yprim)

André Jaun, HT-2005 Anteckningar från lektioner i Numeriska Metoder fys-åk2. (Sid 72) y09 = 1.03826902705165 1.03826902688434 1.03826902687349 delta = 1.0e-09 * -0.1673-0.0108 kvot = 15.4227 yprim = 1.8732 Extab = 1.0e-10 * 0.8932 0.0579 Den sista utmatningen ovan visar att felet i det x-värde, som (framöver) räknas fram, blir mindre än 0.9 10 10 när Runge-Kuttas metod används med 180 steg,. Ty: den sökta roten är något mindre än 0.9. Då kommer steglängden h när man tar 180 steg fram till roten, att bli något mindre än den var ovan. Därför blir trunkeringsfelet, h 4, i Runge-Kuttas metod mindre än här ovan, och därför blir i sin tur felet i x-värdet mindre än 0.9 10 10. Beteckna felgränsen E x,tab = 0.9 10 10. Ställ i ordning den funktionsfil, Ex3ekv.m, som Newton-Raphsons metod behöver: function [f,fprim]=ex3ekv(x) yslut=rkbegv( Ex3dif,0,x,0,180); f=yslut-1; fprim=ex3dif(x,yslut); Bearbetning >> rot=newrap( Ex3ekv,0.9); x f(x) df/dx t Ktest 9.0000e-01 3.8269e-02 1.8732e+00 2.0430e-02 8.7957e-01 1.0208e-03 1.7752e+00 5.7501e-04 1.3776e+00 8.7900e-01 7.4512e-07 1.7726e+00 4.2035e-07 1.2713e+00 8.7899e-01 3.9635e-13 1.7726e+00 2.2359e-13 1.2654e+00 rot = 0.87899461755500 Efterarbete Ktest visar regelbundenhet. Trunkeringsfelet i Newton-Raphsons metod kan därför skattas 1.2654 (2.2359 10 13 ) 2, och är alltså helt försumbart. Avrunda resultatet till 8 decimaler, 0.87899462, så uppkommer presentationsfelet E pres = 2.445 10 9. Det dränker trunkeringsfelet. Totalfelet i skattningen är E x,tab + E pres = 2.535 10 9, som är < 0.5 10 8. Resultat: Roten är 0.87899462 med 8 korrekta decimaler.

André Jaun, HT-2005Anteckningar från lektioner i Numeriska Metoder fys-åk2. (Sid lxxv) Fördjupning frivillig läsning Konvergensordning Som det står i GNM-sid (2)9 definieras konvergensordning p för en talföljd, sådan att lim x n = α av n x n+1 α lim n x n α p = K 0 Newton-Raphsons metod Som det också står på samma sida, och som det ofta kommer att sägas i den här kursen, så har Newton-Raphsons metod kvadratisk konvergens, dvs konvergensordningen p = 2. Jag bevisar detta: x = α är rot till ekvationen f(x) = 0. Från x n i närheten av α beräknas x n+1 som bekant med formeln x n+1 = x n f(x n )/f (x n ). Taylorutveckla f(α) kring x = x n : 0 = f(α) = f(x n ) + (α x n )f (x n ) + 1(α x 2 n) 2 f (x n ) + O(α x n ) 3. Dividera med f f(x n ) (x n ): f (x n ) + α x n + 1(α x 2 n) 2 f (x n ) f (x n ) + O(α x n) 3 = 0. De första tre termerna bildar α x n+1, varför vi får: x n+1 α = 1(α x 2 n) 2 f (x n ) f (x n ) + O(α x n) 3. Dividera med (α x n ) 2 som är detsamma som (x n α) 2 : x n+1 α (x n α) = 1 f (x n ) 2 2 f (x n ) + O(x n α). Gränsövergången n visar nu att Newton-Raphsons metod är kvadratisk konvergent. Högra ledet går mot 1 f (α), vilket blir K i definitionen den asymptotiska 2 f (α) felkonstanten. En intressant detalj är att de absolutbelopp som ingår i definitionen inte dyker upp i beviset, och därför inte behövs i detta fall. Att K kan skattas med (x n+1 x n )/(x n x n 1 ) 2 = t n /t 2 n 1 är grunden för regelbundenhetskontrollen, och inte helt självklart. Det kan man visa så här (jag kortar lite i beteckningar och serieutvecklingar): x n x n 1 = f n 1 /f n 1 (x n x n 1 )f n 1 = f n 1; f n = f n 1 + (x n x n 1 )f n 1 + 1 2 (x n x n 1 ) 2 f n 1 +... = = f n 1 f n 1 + 1 2 (x n x n 1 ) 2 f n 1 +... = 1 2 (x n x n 1 ) 2 f n 1 +... Så: x n+1 x n = f n /f n = 1 2 (x n x n 1 ) 2 f n 1/f n +... De tre punkterna betyder väsentligen O((x n x n 1 ) 3. Vi kan därför dividera med kvadraten och får: (x n+1 x n )/(x n x n 1 ) 2 = 1 2 f n 1 /f n + O(x n x n 1 ) K, v s b.

André Jaun, HT-2005 Anteckningar från lektioner i Numeriska Metoder fys-åk2. (Sid lxxvi) Sekantmetodens konvergens Sekantmetoden är inte en enpunkts iterationsmetod för bestämmandet av x n+1 krävs ju två tidigare värden, x n och x n 1. Det är därför lite besvärligare att visa att just kvoten t n /(t n 1 t n 2 ) KONSTANT upplyser om regelbundenhet och att bestämma konvergensordningen, dvs exponenten p i gränsvärdet lim n x n α p x n+1 α. Liksom när man bevisar motsvarande saker för Newton-Raphsons metod, använder man sig av taylorutveckling, den här gången två stycken: Dels f(x n 1 ) = f(x n ) + (x n 1 x n )f (x n ) + 1 2 (x n 1 x n ) 2 f (x n ) + O(x n 1 x n ) 3. Härur får man f (x n ) = f(x n) f(x n 1 ) x n x n 1 + 1 2 (x n x n 1 )f (x n ) + O(x n x n 1 ) 2. Dels 0 = f(α) = f(x n ) + (α x n )f (x n ) + 1 2 (α x n) 2 f (x n ) + O(α x n ) 3. I denna serie byts f (x n ) ut, enligt den första utvecklingen. Man får: 0 = f(x n ) + (α x n ) f n f n 1 + 1 x n x (α x 2 n)(x n x n 1 + α x n )f (x n ) +... n 1 Tredje termen plus (den med tre punkter antydda) fortsättningen kan förenklas till 1 (α x 2 n)(α x n 1 )f (ξ 1 ), där ξ 1 ligger i intervallet uppspänt av α, x n och x n 1. Nu divideras utvecklingen med f n f n 1, och när denna kvot hamnar i tredje x n x n 1 termen, ersätts den med f (ξ 2 ), där ξ 2 ligger mellan x n och x n 1. Dessa åtgärder resulterar i formuleringen 0 = x n x n 1 f n + α x n + 1 f n f (α x 2 n)(α x n 1 ) f (ξ 1 ) n 1 f (ξ 2 ). Här känner man igen sekantmetodens uttryck för x n+1, varför man får x n+1 α = 1 2 (x n α)(x n 1 α)f (ξ 1 )/f (ξ 2 ), varav följer lim n x n+1 α (x n α)(x n 1 α) = 1 f (α) 2 f (α) I gränsvärdet återser vi den asymptotiska felkonstanten i Newton-Raphsons metod. Vi betecknar den, som förut, med K. Vidare ska konvergensordningen p bestämmas. När n är tillräckligt stort gäller x n+1 α c x n α p och x n α c x n 1 α p, dvs x n 1 α ( x n α /c) 1/p. Vi får därför c x n α p x n α c 1/p x n α 1/p K eller c(1+1/p) x n α (p 1 1/p) K. Detta ska gälla oberoende av n (tillräckligt stort). Därför måste det gälla att p 1 1/p = 0, en ekvation med lösningarna p = 1(1 ± 5). För konvergens krävs 2 p > 1, så den negativa lösningen blir inte aktuell, utan konvergensordningen är p = 1(1 + 5) 1.618. 2 Som biprodukt erhålls resultatet c K 1/p. Det återstår att visa att teststorheten t n /(t n 1 t n 2 ) K. I beviset utelämnar jag O-termer genom att istället skriva, detta för att inte skymma väsentligheter.

André Jaun, HT-2005 Anteckningar från lektioner i Numeriska Metoder fys-åk2. (Sid lxxvii) t n är definerat så att det gäller t n = (x n+1 x n ). Ur taylorutvecklingen av f(α) kring x = x n på förra sidan får vi x n α + f n /f n + 1 2 (x n α) 2 f n /f n. Alltså: t n = x n+1 x n x n+1 α f n /f n 1(x 2 n α) 2 f n /f n = ( xn+1 α = (x n α) x n α f n f(α) x n α 1 1 f (x n 2 n α) f n ) f n ( (xn+1 α) (x n α) p 1 (x n α) f n 1(x 2 n α)f n 1 (x n α) p f (x n 2 n α) f n ) = f n = (x n α) (c (x n α) p 1 1). Här används p och c i samma innebörd som på förra sidan. Det väsentliga är att exponenten p 1 > 0; den är 1 2 ( 5 1) 0.618. Vi har alltså kommit fram till t n (x n α) (1 c(x n α) p 1 ) Motsvarande utvecklingar erhålles för t n 1 och t n 2. Låt N vara det av det tre talen n, n 1 och n 2 för vilket x α är störst. Vi får t n t n 1 t n 2 x n α (x n 1 α)(x n 2 α) (1 + O(x N α) 0.618 ) K där approximationerna blir allt bättre ju större n är. Slut på fördupningstexten