Beatrice Frock Laboration 1 3 11068 DN114, Numeriska Metoder för S. Laboration 1: MATLAB-introduktion ochekvationslösning Sista redovisningsdag för bonuspoäng: 011-10-03 + 011-10-04 Under Tö1 - Tö kommer vi att arbeta med uppgifterna i Lab1. Ni kommer säkert inte att hinna göra samtliga uppgifter under terminalövningarna så ni måste planera ert arbete så ni kan redovisa delmomenten i Lab1 under terminalövningspassen. Alla deluppgifter skall utföras,och de delmoment som markerats med R skall redovisas. Om inte annat sägs i uppgiftsformuleringen skall redovisningen bestå av programlistor samt resultatutskrifter i form av plotbilder och dagböcker med kommentarer. Redovisningen görs fortlöpande under terminalövningspassen. Då alla delmomenten godkänts bokförs hela labben som godkänd. För deluppgifter som ej markerats med R behöver ni inte sammanställa någon bestående redovisning,men ni skall vara beredda att demonstrera era lösningar direkt vid terminalen. Förbered Dig till Tö 1 genom att läsa om vektorer och matriser i Matlab-häftet. Titta i kap 1 om hur man kör MATLAB på din dator. Läs om repetition (for-sats,while-sats) i häftet. Se även material från föreläsningar och övningar. Användbara programfiler beskrivs i NAM och finns på kursbiblioteket p:\kurser\nada\numme på datorn. Kopiera in vad du behöver,byt namn och modifera efter behov. Filerna kan även hämtas genom kursens hemsida på nätet. Klicka på det aktuella stället i texten och spara det du behöver. Använd flitigt help-kommandot i MATLAB. Program är det lämpligt att skriva in som m-filer i editerings-fönstret och sedan köra i MATLAB-fönstret genom att ange filens förnamn (detta får Du bl.a. öva på i denna lab). MATLAB kommer att vara vårt verktyg under hela kursen så ni kan spara mycket tid vid de framtida laborationerna genom att noggrant genomföra alla delmomenten i Lab 1 (även dem som ej behöver detaljredovisas). Bokför den tid du lägger ned på arbete med laborationerna. Vi är mycket intresserade av att få reda på elevernas arbetsbelastning,så vi vill att du fortlöpande bokför den tid du lägger ned på arbete med labuppgifterna och skriver ned totaltid vid slutredovisning av respektive labuppgift. 1
Namn:... Pers.no:... I. Praktiska övningar med MATLAB Läs igenom relevanta delar av Matlab-häftet och lös följande uppgifter. Uppgifterna redovisas fortlöpande i datorsalen. 1.R Lös det linjära ekvationssystemet 1 3 0 0 4 5 6 1 1 1 0 1 1 1 1 w 1 w w 3 w 4 Lösning:... 6 = 5 1.R Tabellera och rita funktionen f(x) =(5+ x)lnx 10 x + a för några olika intervall på x-axeln,dels för a =8,och dels för a =1. Har funktionen något nollställe? Hur många och var? En rot är mycket stor (flera tiopotenser),med vetskap om detta kan ett approximativt värde lätt beräknas,hur då? De elementära funktionerna finns på sid 5. Skriv ut någon av plotbilderna på papper. 3.R Skriv ett program som löser det linjära ekvationssystemet x M =0, 000 + 0.5x G + 0.1x S x G =40, 000 + 0.x M + 0.6x S x S =0, 000 + 0.1x M +0.5x G Exekvera programmet och spar resultatutskrifterna på en dagboksfil (diary). Skriv ut program och dagbok på papper. 4.R Skriv ett program som i ett koordinatsystem ritar kurvorna y = x 4 ax 3 + 51x 1066x + 1680 för följande tre värden på a =5.99, 6, 6.01 med lämplig rubrik (t.ex. Num Numsson,Deluppg. 4) och axelbeteckningar. x bör variera i området 4.7, 8.3. Pröva även med andra intervall. Varför är det givna intervallet mest intressant? Använd slutligen gtext till att markera vilken av kurvorna,som svarar mot respektive a värde. Skriv ut plotbilden på papper. 5.R En bil rör sig med konstant acceleration a längs en rak väg. Inför följande beteckningar: Bilens avstånd till en referenspunkt O vid tiden t =0 : s 0, Bilens avstånd till referenspunkten O vid tiden t : s, Bilens hastighet vid tiden t =0 : v 0
Namn:... Pers.no:... Med dessa beteckningar gäller s = s 0 + v 0 t + at Skriv ett program där de okända parametrarna bestäms från följande mätvärden. t 5 9 s 9.1 8.4 68.5 Koefficientmatrisen bör byggas upp från kolumnvektorer. Tabellera och rita slutligen s som funktion av t (t=0:0.1:10) med lämplig rubrik och axelbeteckningar (se Matlabhäftet). Rita in mätvärdena som cirklar i bilden. Skriv ut plotbilden på papper. Redigera samman de två filerna till en liten redogörelse enligt följande mall: Rubrik,t.ex. Accelerande bil,lab 1 deluppgift I:5 Namn,t.ex. Num Numsson Pers.no Programmet pgi5.m nedan (kopia av programfilen) ger följande resultatutskrift (kopia av dagboksfilen) Plotbilden som genereras av programmet bifogas. Skriv slutligen ut er redogörelse på papper,och var beredd att demonstrera programmet. Redovisat deluppgifterna I:1-5 Ass. sign. och datum:... 3
6. Kommandofiler (m-filer) kan användas för att skriva in stora uttryck som kan vara svåra att få rätt på en gång. definiera matriser med många rader och kolumner. skriva hela program. Filerna kan editeras om det blev fel första gången. Kommandofilen nedan heter fack.m och innehåller koefficientmatrisen och högerledet till ett linjärt ekvationssystem med 17 obekanta och 17 ekvationer. Som Du kan förstå är det mycket lätt att göra misstag då matrisen ställs upp,så det är väsentligt att man lätt kan korrigera misstagen. Procenttecknet ( %) används i MATLAB som inledning till en kommentar. Allt som står efter % på en rad är kommentar,d.v.s. datorn utför inte detta,utan det står där enbart för att förklara för den som läser texten. Filen fack.m finns på kursbiblioteket,så Du kan leka med exemplet senare. a=sqrt()/; % Kolumnnummer % 1 3 4 5 6 7 8 9 10 11 1 13 14 15 16 17 % rad nod led A=[-a 0 0 1 a 0 0 0 0 0 0 0 0 0 0 0 0 % 1 x -a 0-1 0 -a 0 0 0 0 0 0 0 0 0 0 0 0 % y 0-1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 % 3 3 x 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 % 4 3 y 0 0 0-1 0 0 0 1 0 0 0 0 0 0 0 0 0 % 5 4 x 0 0 0 0 0 0-1 0 0 0 0 0 0 0 0 0 0 % 6 4 y 0 0 0 0 -a -1 0 0 a 1 0 0 0 0 0 0 0 % 7 5 x 0 0 0 0 a 0 1 0 a 0 0 0 0 0 0 0 0 % 8 5 y 0 0 0 0 0 0 0-1 -a 0 0 1 a 0 0 0 0 % 9 6 x 0 0 0 0 0 0 0 0 -a 0-1 0 -a 0 0 0 0 %10 6 y 0 0 0 0 0 0 0 0 0-1 0 0 0 1 0 0 0 %11 7 x 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 %1 7 y 0 0 0 0 0 0 0 0 0 0 0-1 0 0 0 a 0 %13 8 x 0 0 0 0 0 0 0 0 0 0 0 0 0 0-1 a 0 %14 8 y 0 0 0 0 0 0 0 0 0 0 0 0 -a -1 0 0 1 %15 9 x 0 0 0 0 0 0 0 0 0 0 0 0 a 0 1 0 0 %16 9 y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -a -1]; %17 10 x % 1 3 4 5 6 7 8 9 10 11 1 13 14 15 16 17 b= [0 0 0 10 0 0 0 10 0 0 0 10 0 0 0 10 0] ; 4
Matrisen har så många kolumner att det är omöjligt att skriva ut matrisens samtliga element på ett överskådligt sätt. Vi använder därför kolon-notation för att definiera delmatriser av A se Edsberg 3.8. Nedan utför vi filen fack.m och tittar därefter på vilka värden matriselementen i nedre högra hörnet har. Vi tittar på kolumnerna 1 till 17,raderna 8 till 17. >> fack >> A(8:17,1:17) ans = 0 0 0 0 0 0 1.0000 0.7071 0 0 0 0 0-0.7071 0 0 0 0 0 0 1.0000 0 0 0 0 0 0 0 0 0-1.0000 0 0 0 0.7071 0 0 0 0-1.0000 0.7071 0 0-0.7071-1.0000 0 0 1.0000 0 0.7071 0 1.0000 0 0 0 0 0 0-0.7071-1.0000 Kopiera i filen fack.m,exekvera den och gör följande operationer på A och b. a. Skriv på skärmen den första kolumnen av A. b. Skriv komponent 4 till 8 av b. c. Skriv den 3 3 delmatris av A som fås av de tre första kolumnerna,de tre första raderna. d. Lös ekvationssystemet och skriv ut lösningen. e. Ändra (,5)-elementet av A till 1.4 och lös ekvationssystemet. 7.R Funktioner returnerar ett eller flera värden,och kan ha en eller flera parametrar. Man kan skapa egna funktionsfiler,läs om funktioner i Matlab-häftet. för mer information. Grafer kan enkelt ritas med hjälp av funktionen fplot. Görhelp fplot för information om hur funktionen används. Bli inte rädd för all den text som skrivs ut,utan börja med att läsa de tre första raderna och testa exemplet där. 5
Namn:... Pers.no:... Funktionen måste ha två argument, FNAME,namnet på den funktion som skall plottas LIMS,en vektor som anger ett intervall på x-axeln Vi definerar därför en egen funktion enligt function f=fx46(x) f=*x.^3-3*x.^-1*x+1; Funktionens namn är fx46,och funktionen finns i en fil med namnet fx46.m. Jag skapade funktionen genom att i emacs skriva in ovanstående rader i en fil med namnet fx46.m. För att beräkna funktionens värde för x=1.5 gör vi anropet fx46(1.5). Om argumentet är en vektor,så blir resultatet också en vektor. För att plotta grafen för funktionen fx46 gör vi anropet fplot( fx46,[-3 5]) och får direkt en snygg figur. Skriv en egen funktionsdefinition och pröva! Observera att funktionsnamnet omges av strängparanteser vid anropet av fplot. Uppgift: R Plotta kurvan y = e.5x ln(x +0.5) + 1 x 5 a. i intervallet 0 x 4 med ett lagom litet steg så att kurvan inte ser kantig ut. b. Skriv en egen funktion myfun för funktionen ovan. Skriv funktionen så argumentet x kan vara såväl en skalär som en vektor (OBS: punkt notationen). Plotta därefter kurvan i a. med hjälp av fplot,se Matlab-häftet. Tag ut plotbilden på papper. c.iintervallet 4 x 4. Använd gärna myfun och fplot. Fundera över resultatet! Vad är definitionsområdet för funktionen? Pröva med MATLAB-kommandot log(-) respektive x=-3:0.1:-0.1; plot(x,log(x)) när du funderar över resultaten. Redovisat deluppgifterna I:7 a,b,c ovan. Ass. sign. och datum:... 6
Namn:... Pers.no:... II. Ekvationslösning. I NAM,EKVATIONER OCH EKVATIONSSYSTEM finns bra exempel och programdelar som Ni kan utgå från i ert arbete. 1. Bestäm den positiva roten till ekvationen x 4 cos x =0.R Vi vill bestämma samtliga rötter till följande ekvation x 4sinx 3=0 a. Rita grafen för y(x) =x 4sinx 3=0. Experimentera med olika intervall i x-led och olika tabellsteg så att figuren till slut har med alla nollställen till y(x). b. Bestäm den största och den minsta roten till ekvationen x 4sinx 3=0 med Newton-Raphsons metod. Redovisa startgissningar,antal iterationer och resultat för de två rötterna. c. Newton-Raphsons metod sägs ha kvadratisk konvergens. Förklara hur man kan avläsa detta ur resultatutskriften. d. Är Newton-Raphson idiotsäker eller spårar den ur någon gång? Pröva t. ex. med starvärdet x 0 =7. Försök att förklara. Motivera ditt svar med hjälp av en lämplig figur. e. Undersök empiriskt och teoretiskt vilka av rötterna som kan bestämmas med fixpunktsiterationen x n+1 = sin(x n )+ 5 4 x n 3 4. Är konvergensen linjär eller kvadratisk (i de konvergerande fallen)? Ass. sign. och datum:... 3.R Bestäm de reella nollställena till ekvationen y = x 4 ax 3 + 51x 1066x + 1680 för följande tre värden på a =5.99, 6, 6.01 a. (Redan gjort i Deluppgift I.4) Rita grafen för polynomet. Välj intervallet i x-led så samtliga nollställen syns. Använd gärna matlabfunktionen polyval för att beräkna polynomets värden. b. Bestäm nollställena med matlabfunktionen roots. Då alla deluppgifter godkänts skall ni visa upp detta häfte med godkännande signaturer för Er ordinarie övningsassistent. Han bokför då laborationsgodkännandet och skriver in datum nedan. Spar häftet som kvitto och för tentamensförberedelser. Observera att Ni måste skriva namn och personnummer på varje blad. Hela lab 1 GODKÄND: DATUM:... Namn:... Pers. No:... Ass. Signum:... Tidsuppskattning:... 7
Beatrice Frock DN114, Numeriska Metoder för S. 11068 Laboration : Minstakvadratmetoden, interpolation, integration, 3-D plottning Sista redovisningsdag för bonuspoäng: 011-10-13 Uppgifterna redovisas löpande vid terminalövningarna. Båda deltagarna i labgruppen ska vara aktiva. 1. Lös i MATLAB problemet EXS 4:1 b i exempelsamlingen. Ställ upp koefficientmatris A och högerled b och bestäm lösningen enligt A \ b. Gör de undersökningar som begärs i talet..r Vattnets viskositet Viskositeten µ hos vatten beror av temperaturen T enligt sambandet Följande mätvärden av µ och T är givna: µ(t )=1/(a + bt + ct ) T (C) 10 0 30 40 50 60 µ (cp) 1.308 1.005 0.801 0.656 0.549 0.406 Använd minstakvadratmetoden för att bestämma parametrarna a, b och c. Rita upp mätpunkter och den anpassade funktionen µ(t ) i samma diagram samt residualvektorn i ett annat diagram. (Använd subplot!) 3.R Givet mätvärden som approximativt ligger på en cirkel. x y ---------------- 1 6 9 5 8 4 4 4 6 5 Cirkelns ekvation ges som bekant av (x x 0 ) +(y y 0 ) = R eller x = x 0 + R cos φ; y = y 0 + R sin φ där x 0,y 0 är cirkelns okända medelpunkt och R cirkens okända radie. Skriv om den första modellen,d.v.s. utveckla kvadraterna och gruppera om i ekvationen så du kan formulera ett överbestämt linjärt ekvationssystem för x 0, y 0 och x 0 + y0 R. Bestäm därefter dessa obekanta med minsta-kvadrat metoden. Bestäm slutligen de ursprungliga parametrarna. Använd den andra framställningen av cirkeln då du ritar mätvärden och beräknad cirkel i ett diagram. 8
Namn:... Pers. No:... Ass. sign. och datum:... 4. R Vid ett vägbygge stöter Osquar Vägingeniör på en vikingaby och måste därför ändra vägens sträckning. Han mäter upp fem punkter genom vilka han tänker dra vägen runt fornlämningen. Bestäm vägsträckningen genom att beräkna det fjärdegradspolynom y = P (x) som går genom de fem punkterna (0, 0), (05, 100), (458, 458) och (71, 1750), (100, 0). 100,0 71,1750 458, 458 05,100 ursprunglig vägsträckning x y 0,0 Bestäm polynomet,rita grafen för polynomet för x (0, 100). Rita in de fem interpolationspunkterna,markera dem t.ex. med o. I NAM,INTERPOLATION,finns ett lämpligt program att utgå från. Vad tror Du om att konstruera vägen på detta sätt? Beräkna vägens längd från punkten (0,0) till punkten (100,0). Bestäm även den minsta krökningsradien R (Petermann, Analytiska Metoder I,sec 7.4) R = 1 κ, κ = P (x) (1 + P (x) ) 3/ genom att t.ex. rita κ som funktion av x. Du får gärna använda numerisk derivering vid beräkningen av första och andra derivatan om du tycker det är besvärligt att derivera i Newtons formel. Den föreslagna vägkurvan är nog inte riktigt bra där den ansluter till den ursprungliga raka vägen. Diskutera (inget program eller kalkyler behövs) vad som är dåligt och hur problemet skulle kunna åtgärdas. Ass. sign. och datum:... Namn:... Pers. No:... 9
5.R Rotationssymmetrisk lur ochtredimensionell lurbild Konturen för en lur definieras av funktionskurvan y(x) = e x/3, 0 x H, för H =. cos πx Luren uppstår genom att kurvan roteras kring x-axeln och rotationsvolymen är V = π H 0 y dx. Använd Matlab s quadl eller quad8 för att bestämma V med sex korrekta siffror i volymvärdet. Gör även en fin tredimensionell lurbild så här: Låt x och f vara kolumnvektorer för konturkurvan y(x). Skapa en radvektor (som måste ha samma längd) för rotationsvinkeln 0 ϕ π med lagom steg,t ex π/30. Bilda matriser X,Y och Z: X=x*ones(size(fi)); Y=f*cos(fi); Z=f*sin(fi); Skriv mesh(x,y,z) som ger en nätfigur eller välj surf(x,y,z) eller surfl(x,y,z) som ger en fylld 3D-figur (gör gärna help surfl). 6.R En 30 m hög damm skall byggas i en flod där bredden b varierar med höjden x över den plana flodbottnen enligt formeln b(x) =1 6e (0.003x) Vattenståndet i floden varierar kraftigt under året. Du skall beräkna och plotta den totala kraften på dammen vid olika vattenstånd H. Kraften vid vattenståndet H ges av F (H) = H 0 ρ(h h)b(h)dh där ρ =1 Tabellera och plotta F (H) för H i intervallet 0, 30. Beräkningarna bör göras rimligt effektiva,så den enkla varianten F=[0]; for H=1:30, F=[F quadl( integranden,0,h,1.e-6)]; end, H=[0 H]; plot(h,f) [H F ] som är mycket ineffektiv duger inte. Beräkningarna bör lämpligen organiseras sa att mellanresultat som beräknats kan användas på nytt. Gör en indelning av intervallet för H. För varje nytt H-värde utökas F (H) med integralvärdet över det lilla intervallet som har tillkommit. Tänk också på att två delintegraler ingår i beräkningen av F (H),där integranderna är b(h) respektive hb(h). Ass. sign. och datum:... Namn:... Pers. No:... 10
Hela lab GODKÄND: DATUM:... vid muntlig Namn:... REDOVISNINIG Pers. No:... Ass. Signum:... Tidsuppskattning:... 11
Beatrice Frock DN114, Numeriska Metoder för S. 11068 Laboration 3: Inbindningsmetoden, icke-linjära ekvationssystem ochdifferentialekvationer Sista redovisningsdag för bonuspoäng: 011-11-10 + 011-11-11 Uppgifterna redovisas löpande vid terminalövningarna. Båda deltagarna i labgruppen ska vara aktiva. 1.R Inbindningsmetoden Koordinaterna till punkten P skall bestämmas genom att man mäter avstånden till två kända punkter A och B. (Detta sätt att bestämma en punkts okända koordinater kallas inom geodesin för inbindningsmetoden och är det som satellitnavigeringssystemet GPS utnyttjar.) Då gäller { (xa x P ) +(y A y P ) = LA (x B x P ) +(y B y P ) = LB Detta ekvationssystem har två lösningar,då det ju finns två punkter,p och P,som båda ligger på detta avstånd till punkterna A och B: Pprim A B P a. Newtons metod Ekvationssystemet består av två ekvationer med två obekanta. Lös med Newtons metod detta icke-linjära ekvationssystem då man vet att de kända punkternas koordinater är A =(6, 16) och B =(93, 63),och de uppmätta avstånden L A =46. och L B =55.1. Avstånden antas vara exakta i denna deluppgift. b. Lägg till en punkt Lös med Gauss-Newtons metod det icke-linjära,överbestämda (ty 3 ekvationer och obekanta) ekvationssystem vi får med inbindningsmetoden i uppgift a. ovan,när vi tar med tre punkter A, B och C i beräkningen. Använd värdena C =(0, 83) och L C =46., (x A x P ) +(y A y P ) = LA (x B x P ) +(y B y P ) = LB (x C x P ) +(y C y P ) = L C.R Global Positioning System (GPS) Global Positioning System (GPS) bygger just på inbindningsmetoden. Man mäter avståndet till ett antal satelliter som ingår i systemet. Av militära skäl uppger man de uppmätta avstånden med stora felgränser. Detta motsvarar i vårt exempel ovan att L A, L B och L C får felgränser. 1
a. Beskriv hur man bestämmer punkten (x P,y P ) i uppgift 1 (ovan) med den felgräns som kommer av att avstånden är givna med felgränser L A =46. ± 0.9, L B = 55.1 ± 1. och L C =46. ± 0.9. b. Bestäm felgränsen för problemet i uppgift 1 a. ( ekvationer och avstånd). Du behöver endast behandla den punkt P som är nära (40, 50) (alltså inte båda lösningarna). c. Bestäm felgränsen för problemet i uppgift 1 b. (3 ekvationer och avstånd,överbestämt system). Samma punkt P avses här. Detta ska visa finessen med att göra fler mätningar än matematiskt nödvändigt,för att reducera konsekvenserna av osäkra mätdata och/eller enskilda mätfel. 3. R Lurig differentialekvation Givet är differentialekvationsproblemet y + πy e x/3 (y sin (πx)+πy cos (πx)) = y/9, y(0) = 1, y (0) = 1/3. Inför nya variabler u 1 = y och u = y,så att differentialekvationen kan skrivas om till ett system av två första ordningens differentialekvationer. Utnyttja matlabs ode45 för numerisk lösning fram till x =. Använd två toleranser och jämför slutvärdena,dvs y(). Rita upp lösningskurvan och jämför den med lurkonturen i Lab 3. Hela lab 3 GODKÄND: DATUM:... vid muntlig Namn:... REDOVISNINIG Pers. No:... Ass. Signum:... Tidsuppskattning:... 13