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

Relevanta dokument
Dagens program. Programmeringsteknik och Matlab. Administrativt. Viktiga datum. Kort introduktion till matlab. Övningsgrupp 2 (Sal Q22/E32)

MMA132: Laboration 2 Matriser i MATLAB

Lösningsförslag till inlämningsuppgift 3 i Beräkningsprogrammering Problem 1) function condtest format compact format long

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

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

NUMPROG, 2D1212, vt Föreläsning 1, Numme-delen. Linjära ekvationssystem Interpolation, Minstakvadratmetoden

Sammanfattning (Nummedelen)

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

Linjärisering, Jacobimatris och Newtons metod.

Icke-linjära ekvationer

Intervallhalveringsmetoden, GKN sid 73. Sekantmetoden, GKN sid 79

Tentamen del 1 SF1546, , , Numeriska metoder, grundkurs

Introduktion till MATLAB

Tentamen, del 2 Lösningar DN1240 Numeriska metoder gk II F och CL

1.1 MATLABs kommandon för matriser

TENTAMEN I GRUNDKURS I NUMERISKA METODER - DEL 20

Omtentamen i DV & TDV

Numeriska metoder, grundkurs II. Dagens program. Exempel Kubiska splines. Ögna igenom de gamla övningsanteckningarna.

FMNF15 HT18: Beräkningsprogrammering Numerisk Analys, Matematikcentrum

14. Minsta kvadratmetoden

Föreläsning 14: Exempel på randvärdesproblem. LU-faktorisering för att lösa linjära ekvationssystem.

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

Mer om texter i MATLAB och om iterativ lösning av linjära ekvationssystem

TANA09 Föreläsning 5. Matrisnormer. Störningsteori för Linjära ekvationssystem. Linjära ekvationssystem

Minsta kvadratmetoden

TAIU07 Matematiska beräkningar med Matlab

5B1146 med Matlab. Laborationsr. Laborationsgrupp: Sebastian Johnson Erik Lundberg, Ann-Sofi Åhn ( endst tal1-3

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

2 Matrisfaktorisering och lösning till ekvationssystem

Minsta-kvadratmetoden

TANA17 Matematiska beräkningar med Matlab

Instruktion för laboration 1

DN1212, Numeriska metoder & grundläggande programmering. Laboration 1 del 1-3 (frivilliga delar) Del 1-3 (dvs upg ) behöver inte redovisas

Kontrollskrivning KS1T

Tentamen, del 2 DN1240 Numeriska metoder gk II för F

Instruktion för laboration 1

SF1624 Algebra och geometri

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

OBS! Snabbinsatt Matlab-intro vissa fönsterhanteringsdetaljer kan vara fel men gör gärna Matlab-uppgifterna. DN1240, Numeriska metoder för OPEN1.

LYCKA TILL! kl 8 13

2 februari 2016 Sida 1 / 23

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

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

Exempel :: Spegling i godtycklig linje.

15 februari 2016 Sida 1 / 32

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

x 2 x 1 W 24 november, 2016, Föreläsning 20 Tillämpad linjär algebra Innehåll: Projektionssatsen Minsta-kvadratmetoden

At=A' % ' transponerar en matris, dvs. kastar om rader och kolonner U' % Radvektorn U ger en kolonnvektor

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

Icke-linjära ekvationer

Lösningar till linjära problem med MATLAB

Exempel :: Spegling i godtycklig linje.

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

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

LABORATION cos (3x 2 ) dx I =

2D1240 Numeriska metoder gk II för T2, VT 2004 LABORATION 1. Ekvationslösning

SF1672, Linjär Algebra med Matlab för F1 Lab0

DN1240, Numeriska metoder. Laboration 0 (frivilliga delar) (dvs uppgifterna behöver inte redovisas) Introduktion till UNIX och MATLAB

Laboration: Grunderna i MATLAB

Newtons metod och arsenik på lekplatser

Vektorgeometri för gymnasister

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

Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI

Laboration 1. Ekvationslösning

Moment Viktiga exempel Övningsuppgifter I Ö5.1b, Ö5.2b, Ö5.3b, Ö5.6, Ö5.7, Ö5.11a

SF1513 NumProg för Bio3 HT2013 LABORATION 4. Ekvationslösning, interpolation och numerisk integration. Enkel Tredimensionell Design

TENTAMEN I LINJÄR ALGEBRA OCH NUMERISK ANALYS F1, TMA671

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Tid: 14:e januari klockan

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

Föreläsning 9, Bestämning av tidsdiksreta överföringsfunktioner

Veckoblad 4, Linjär algebra IT, VT2010

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

Ickelinjära ekvationer

MMA132: Laboration 1 & 2 Introduktion till MATLAB

Laboration 1. 1 Matlab-repetition. 2 Störningsräkning 1. 3 Störningsräkning 2

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 9p av totalt 20p Hjälpmedel: MATLAB

Fel- och störningsanalys

DN1212 Numeriska Metoder och Grundläggande Programmering DN1214 Numeriska Metoder för S Lördag , kl 9-12

Gruppuppgifter 1 MMA132, Numeriska metoder, distans

Sammanfattninga av kursens block inför tentan

TANA19 NUMERISKA METODER

DN1212/numpm Numeriska metoder och grundläggande programmering Laboration 1 Introduktion

Linjär algebra med tillämpningar, lab 1

Numerisk Analys, MMG410. Lecture 10. 1/17

Moment Viktiga exempel Övningsuppgifter

Konvergens för iterativa metoder

Omtentamen i DV & TDV

Uppföljning av diagnostiskt prov Repetition av kursmoment i TNA001-Matematisk grundkurs.

Lösningsförslag till skrivningen i Vektorgeometri (MAA702) Måndagen den 13 juni 2005

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 26 november 2015 Sida 1 / 28

Fö4: Kondition och approximation. Andrea Alessandro Ruggiu

OH till Föreläsning 15, Numme K2, God programmeringsteknik

Moment 5.5 Övningsuppgifter I 5.60a. 5.60b, 5.60.c, 61

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

SF1546, Numeriska Metoder för O1 Lab0 - frivillig. (dvs uppgifterna behöver inte redovisas!)

2x + y + 3z = 4 x + y = 1 x 2y z = 3

Index. Vektorer och Elementvisa operationer. Summor och Medelvärden. Grafik i två eller tre dimensioner. Ytor. 20 januari 2016 Sida 1 / 26

Uppsala Universitet Matematiska Institutionen Thomas Erlandsson

Department of Physics Umeå University 27 augusti Matlab för Nybörjare. Charlie Pelland

Transformationer i R 2 och R 3

Transkript:

Numeriska metoder, grundkurs II Övning 1 för I2 Dagens program Övningsgrupp 1 Johannes Hjorth hjorth@nada.kth.se Rum 163:006, Roslagstullsbacken 35 08-790 69 00 Kurshemsida: http://www.csc.kth.se/utbildning/kth/kurser/2d1240/numi07 Material utdelat på övningarna: http://www.nada.kth.se/ hjorth/teaching/numi07 Hur var det man gjorde? Vi repeterar matlab Newton-Raphsons metod Lösning av f(x) = 0 Sekantmetoden När derivatan f (x) är elak Lösning av ekvationssystem Lika många ekvationer som obekanta Minsta kvadratmetoden Lösning av överbestämda system Administrativt Hur skriver man en funktion? Kom ihåg att registrera er på kursen och koppla ihop numi07 katalogen så att bägge kommer åt den: Kleopatra som är påloggad skriver: >course join numi07 >res checkin numi07 >mkdir numi07 >cd numi07 >fs sa. caesar rlidwk >pwd /här/står/nu/en/lång/path/numi07 aesar, hennes labkompis skriver sen i samma terminalfönster: >ssh my -l caesar >course join numi07 >res checkin numi07 >ln -s /här/står/nu/en/lång/path/numi07 >exit Klart! Nu kan både Kleopatra och aesar komma åt filerna, de skapar en katalog lab1 och sätter igång. Vi vill skriva en funktion i filen funk.m som tar emot tre parametrar x, a och b samt beräknar f(x) = e a x2 ln(x + b) function y = funk( ) y = Vi vill även ha en funktion för att beräkna derivatan, vilken vi lägger i filen dfunk.m function yp = dfunk( ) yp = Fyll i de tomma funktionerna ovan. När ska.* användas?

Newton-Raphsons metod Exempel 2.11 Lägg den här formeln på minnet x n+1 = x n f(x n) f (x n ) För att lösa en ekvation med Newton-Raphsons metod måste vi ha den på formen f(x) = 0. Antag att vi vill beräkna en rot till e a x2 ln(x + b) = 1 där a = 2.533 ± 10 3 och b = 0.543 ± 2 10 3. Hur ska vi då skriva om ekvationen? Vi använder oss av funk.m och dfunk.m från föregående slides då vi skriver NR.m function x = NR(xStart, a, b, tol) % Måste ge dx ett godtyckligt värde > tol dx = 1; x = xstart; % Vi använder while-loop eftersom vi inte vet hur % många gånger loopen behöver köras while(abs(dx) > tol) % Kom ihåg abs dx = funk(x,a,b)/dfunk(x,a,b); end % och glöm inte denna raden! ;) x = x - dx; disp([x dx]) Vilket startvärde ska vi ta? Svar med felgränser För att hitta ett startvärde så plottar vi funktionen inom lämpligt intervall. Varför valde vi [ 0.54,10]? clear all, close all % rensar variabler, stänger figurer a = 2.533; da = 1e-3; b = 0.543; db = 2e-3; xmin = -0.54; xmax = 10; x = linspace(xmin, xmax, 100); plot(x, funk(x,a,b)) hold on % förhindrar att första plotten skrivs över plot([xmin xmax], [0 0], -- ) Vi har fått osäkra indata och uppgiften säger att vi ska uppskatta felet i svaret. Vi är lata och antar att felet är linjärt runt de små störningarna. Vi stör a uppåt, beräknar avvikelsen från det ostörda svaret, därefter stör vi b uppåt. tol = 0.5e-10; x0 = 1; x = NR(x0,a,b,tol); xda = NR(x0,a+da,b,tol); xdb = NR(x0,a,b+db,tol); Vi ser att x 0 = 1 verkar vara en bra startgissning 6 5 4 3 2 1 0 1 2 0 2 4 6 8 10 Slutligen adderar vi beloppet av de två störningarna i svaret och avrundrar uppåt! xerr = abs(x - xda) + abs(x - xdb); disp( Svar med felgräns ) disp([x xerr]) Matlab säger 0.7404 0.0010 och vi svarar med x = 0.740 ± 0.002. Varför blev det ±0.002?

Hur fungerar Newton-Raphson? I varje iteration har vi ett startvärde x n, vi känner även f(x n ) samt lutning f (x n ). Rita tangenten. f (x n) f(x) f(x ) n x n x n+1 x Då gäller att f (x n ) = f(x n) x har vi sedan x kan vi uppdatera x n x n+1 = x n x vilket vi kan skriva om som x n+1 = x n f(x n) f (x n ) Sekantmetoden Exempel 2.11 med sekantmetoden Om vi inte kan beräkna derivatan kan vi istället använda sekantmetoden. x n+1 = x n x n x n 1 f(x n ) f(x n 1 ) f(x n) Sekantmetoden behöver två startgissningar och konvergerar långsammare än Newton-Raphson. clear all, format compact % Startgissningar 0 och 2 x = [0 2]; tol = 1e-4; dx = 1; a = 2.533; b = 0.543; while(abs(dx) > tol) dx = (x(end) - x(end-1))... /(funk(x(end),a,b) - funk(x(end-1),a,b))... * funk(x(end),a,b); x(end+1) = x(end) - dx; % lägger nya värdet sist f(x) end disp([x(end) dx]) % x(end) referar alltid till % det sista elementet i x 2 x 0 x 2 x 0 x 2 x 3 1.5 x 0 x 3 x 1 x 1 1 0.5 Dra en rät linje mellan de två startvärdena. Denna linjen skär x-axeln i någon punkt, som vi tar som vårt nya värde x n+1. 0 x 6 x 5 x 0.5 4 x 2 1 x 1 0 0.5 1 1.5 2

Hur löser vi ekvationssystem? Ställ upp ekvationssystemet i matlab Antag att vi har fyra punkter (1,1),(2,3),(3,5),(4,-1) och vill skapa ett tredjegradspolynom som skär dem. y = c 0 + c 1 x + c 2 x 2 + c 3 x 3 Om vi sätter in våra punkter i ekvationen ovan får vi fyra nya ekvationer c 0 + c 1 1 + c 2 1 + c 3 1 = 1 = = = Hur använder vi x för att bilda matrisen A i matlab? Vi vill inte behöva räkna för hand eller skriva en massa ettor i matrisen. x = y = A = c = A\y Skriv det på matrisform: Dubbelkolla, har x, y och A rätt dimensioner? = Minstakvadratmetoden linjär algebra Geometrisk tolkning Antag att vi har två punkter (0, 1), (1, 8). Vi kan då enkelt dra en rät linje y = c 1 x + c 0 genom dem. A = [0 1; 1 1]; b = [1 8] ; c = A\b Detta ger oss y = 7 x + 1. Om vi nu får ytterligare två punkter (3,11) och (4, 20) kan vi inte längre dra en rät linje som går genom alla punkterna. Hur gör vi då? 20 15 Vi har fyra ekvationer vi försöker uppfylla vilket kan skrivas c 0 + 0 c 1 = 1 c 0 + 1 c 1 = 8 c 0 + 3 c 1 = 11 c 0 + 4 c 1 = 20 0 1 0 1 0 1 1 0 1 c B1 0 @ 1A +c B1 1 @ 3A = B 8 @ 11A 1 4 20 {z } {z } {z } u 0 u 1 w Vektorerna u 0 och u 1 spänner upp ett plan, och vi försöker hitta den vektorn v i planet som ligger så nära w som möjligt. w 10 u 0 5 v 0 0 1 2 3 4 5 u 1

Vilket fel kommer vi att göra? Felvektorn e är ortogonal mot planet Vi kommer att göra ett fel e i vid respektive punkt. 0 1 0 1 0 1 0 1 e 1 1 0 1 e = Be 2 @ e A = c B1 0 @ 3 1A + c B1 1 @ 3A B 8 @ 11A e 4 1 4 20 {z } {z } v w Det totala felet kan vi nu teckna på följande sätt e 2 = e T e = e 12 + e 22 + e 32 + e 4 2 Nu vill vi bara komma på ett sätt att minimera det! Rita ut felen e 1, e 2, e 3 och e 4 respektive felvektorn e i de två föregående figurerna! Om två vektorer u och v är ortogonala blir deras skalärprodukt u T v = 0. Kan vi använda detta? e = v w Om e har någon komponent i planets riktning så kan vi flytta v lite närmare w. När vi gjort det har e blivit ortogonal mot planet, vi får då att: u 1T e = 0 u 2T e = 0 Nu kommer vi inte närmare, e är ortogonal mot kolumnvektorerna i A. Detta kan skrivas: A T e = 0 Nu blir det enklare... Vi försöker lösa det överbestämda systemet A c = w Felet för vårt c = (c 1,c 2 ) T kan skrivas som e = A c w och det är som minst då A T e = 0. Vi skriver om det som A T e = A T (A c w) = 0 med andra ord A T A c = A T w Allt vi behöver göra är multiplicera med A T

Handräkning och matlab Exempel 4.6 När vi ska lösa det överbestämda systemet för hand multiplicerar vi vänster och höger led med A T. A T A c = A T w Ska vi däremot använda matlab ska vi inte multiplicera med A T utan vi använder \-operatorn. x = [0 1 3 4] ; w = [1 8 11 20] ; A = [x ones(size(x))]; c = A\w Tidvattnet i Nordsjön bestäms av den så kallade M 2 -tide, vars periodlängd är cirka tolv timmar och har formen, H(t) = h 0 + a 1 sin( 2πt 12 ) + a 2 cos( 2πt 12 ) där t anges i timmar. Anpassa med minstakvadratmetoden H(t) till mätdataserien: t = [0 2 4 6 8 10] y = [1.0 1.6 1.4 0.6 0.2 0.8] clear,clf t = [0 2 4 6 8 10] ; y = [1.0 1.6 1.4 0.6 0.2 0.8] ; A = [ones(size(t)) sin(t*pi/6) cos(t*pi/6)] Den räta linjen blir då med c 1 = 4.1 och c 0 = 1.8 AtA = A *A Aty = A *y % Bara för att vi ska få se hur de ser ut y = c 1 x + c 0 Kursivt: Anledningen till att vi inte ska förmultiplicera med transponatet är därför att det försämrar ekvationens konditionstal. Matlab använder en annan matris baserad på A som inte försämrar konditionstalet lika mycket. x = A \ y title( Exempel 4.6 ) xlabel( t ) ylabel( y ) hold on plot(t, y, * ) % Vi räknar direkt med A och y i matlab t2=0:0.1:10; plot(t2, x(1) + x(2)*sin(t2*pi/6) + x(3)*cos(t2*pi/6)) >> format compact >> exs46 A = 1.0000 0 1.0000 1.0000 0.8660 0.5000 1.0000 0.8660-0.5000 1.0000 0.0000-1.0000 1.0000-0.8660-0.5000 1.0000-0.8660 0.5000 AtA = 6.0000 0.0000-0.0000 0.0000 3.0000 0.0000-0.0000 0.0000 3.0000 Aty = 5.6000 1.7321 0.8000 x = 0.9333 0.5774 0.2667 y 1.6 1.4 1.2 1 0.8 0.6 0.4 Exempel 4.6 0.2 0 2 4 6 8 10 t Lista filer: ls Byt katalog: cd numi07 Några bra shell kommandon Skapa en underkatalog: mkdir lab1 Gå tillbaka en katalog: cd.. Kopiera en fil: cp fil.m nyfil.m Ta bort en fil: rm fil.m Byt namn eller flytta fil: mv per.m pia.m Starta matlab: matlab & Exempel på hur det kan se ut i terminalfönstret: hjorth@titanic:~$ cd numi07 hjorth@titanic:~/numi07$ ls testfil.m hjorth@titanic:~/numi07$ mkdir lab1 hjorth@titanic:~/numi07$ cp testfil.m lab1/nyfil.m hjorth@titanic:~/numi07$ cd lab1 hjorth@titanic:~/numi07/lab1$ matlab & [1] 1528 hjorth@titanic:~/numi07/lab1$ cd.. hjorth@titanic:~/numi07$ ls lab1 testfil.m hjorth@titanic:~/numi07$ mv testfil.m lab1/ hjorth@titanic:~/numi07$ ls lab1 hjorth@titanic:~/numi07$ Vilka filer ligger nu i lab1 katalogen?