Labb 3: Ekvationslösning med Matlab (v2)

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

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

5B1134 Matematik och modeller Lösningsförslag till tentamen den 29 augusti 2005

Envariabelanalys 5B1147 MATLAB-laboration Derivator

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

LABORATION cos (3x 2 ) dx I =

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

4. Bestäm eventuella extrempunkter, inflexionspunkter samt horisontella och vertikala asymptoter till y = 1 x 1 + x, och rita funktionens graf.

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

Modul 4 Tillämpningar av derivata

Lösningar och kommentarer till uppgifter i 3.1

DOP-matematik Copyright Tord Persson. Gränsvärden. Uppgift nr 10 Förenkla bråket h (5 + h) h. Uppgift nr 11 Förenkla bråket 8h + h² h

2301 OBS! x används som beteckning för både vinkeln x och som x-koordinat

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:

10x 3 4x 2 + x. 4. Bestäm eventuella extrempunkter, inflexionspunkter samt horizontella och vertikala asymptoter. y = x 1 x + 1

Uppsala Universitet Matematiska Institutionen Thomas Erlandsson, Sebastian Pöder

LÖSNINGSFÖRSLAG TILL TENTAMEN 2 SF1664

f(x) = x 2 g(x) = x3 100

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.

f(x) = x 2 g(x) = x3 100 h(x) = x 4 x x 2 x 3 100

Ickelinjära ekvationer

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

Envariabelanalys 5B Matlablaboration

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

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

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

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

Icke-linjära ekvationer

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

Gruppuppgifter 1 MMA132, Numeriska metoder, distans

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

SF1625 Envariabelanalys Lösningsförslag till tentamen DEL A

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

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

5B1134 Matematik och modeller Lösningsförslag till tentamen den 13 januari T = 1 ab sin γ. b sin β = , 956 0, 695 0, 891

5B1147. Envariabelanalys. MATLAB Laboration. Laboration 1. Gränsvärden och Summor

TANA17 Matematiska beräkningar med Matlab

Envariabel SF1625: Föreläsning 11 1 / 13

SF1625 Envariabelanalys

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

Institutionen för Matematik, KTH Lösningar till tentamen i Analys i en variabel för I och K (SF1644) 1/ e x h. (sin x) 2 1 cos x.

Kontrollskrivning KS1T

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

5B1134 Matematik och modeller Uppgifter från kontrollskrivningar och tentamina under läsåren och

Matematisk Modellering

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

Numerisk Analys, MMG410. Lecture 10. 1/17

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

SF1625 Envariabelanalys Lösningsförslag till tentamen DEL A

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

Uppsala Universitet Matematiska Institutionen Bo Styf. Genomgånget på föreläsningarna

Uppsala Universitet Matematiska Institutionen Bo Styf. Lösningar till kryssproblemen 1-5. Uppgifter till lektion 1: = 10 x. = x 10.

6 Derivata och grafer

Linjärisering och Newtons metod

SF1625 Envariabelanalys Tentamen Lördagen den 11 januari, 2014

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

SF1625 Envariabelanalys Lösningsförslag till tentamen DEL A

Funktionsstudier med derivata

LÖSNINGSFÖRSLAG TILL TENTAMEN 2 SF1664

2320 a. Svar: C = 25. Svar: C = 90

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

Interpolation. 8 december 2014 Sida 1 / 20

ATT KUNNA TILL. MA1203 Matte C Vuxenutbildningen Dennis Jonsson

x 2 + x 2 b.) lim x 15 8x + x 2 c.) lim x 2 5x + 6 x 3 + y 3 xy = 7

SF1625 Envariabelanalys Lösningsförslag till tentamen DEL A

SF1625 Envariabelanalys Lösningsförslag till tentamen

Prov i matematik Distans, Matematik A Analys UPPSALA UNIVERSITET Matematiska institutionen

SF1664 Tillämpad envariabelanalys med numeriska metoder Lösningsförslag till tentamen DEL A

Lösningsförslag envariabelanalys

Introduktion till MATLAB

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

TAIU07 Matematiska beräkningar med Matlab

7x 2 5x + 6 c.) lim x 15 8x + 3x Bestäm eventuella extrempunkter, inflexionspunkter samt horizontella och vertikala asymptoter

SF1625 Envariabelanalys Lösningsförslag till tentamen DEL A

SAMMANFATTNING TATA41 ENVARIABELANALYS 1

Sammanfattning (Nummedelen)

5B1134 Matematik och modeller Lösningsförslag till tentamen den 11 oktober 2004

polynomfunktioner potensfunktioner exponentialfunktioner

Newtons metod och arsenik på lekplatser

Frågorna 1 till 6 ska svaras med sant eller falskt och ger vardera 1

Modul 1: Funktioner, Gränsvärde, Kontinuitet

TANA17 Matematiska beräkningar med Matlab

Något om Taylors formel och Mathematica

Konvergens för iterativa metoder

Kontinuerliga funktioner. Ytterligare en ekvivalent formulering av supremumaxiomet

SF1625 Envariabelanalys Tentamen Måndagen den 11 januari 2016

Anteckningar för kursen "Analys i en Variabel"

S n = (b) Med hjälp av deluppgift (a) beräkna S n. 1 x < 2x 1? i i. och

Tentamen del 1 SF1546, , , Numeriska metoder, grundkurs

TATA42: Föreläsning 2 Tillämpningar av Maclaurinutvecklingar

Chalmers tekniska högskola Datum: kl Telefonvakt: Jonny Lindström MVE475 Inledande Matematisk Analys

Tentamensuppgifter, Matematik 1 α

Fel- och störningsanalys

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

MA2001 Envariabelanalys

Blandade A-uppgifter Matematisk analys

Ekvationer & Funktioner Ekvationer

Om datorns användning matematikundervisningen

MATEMATIKPROV, LÅNG LÄROKURS BESKRIVNING AV GODA SVAR

Intervallhalveringsmetoden, GKN sid 73. Sekantmetoden, GKN sid 79

Transkript:

Envariabelanalys Labb 3: Ekvationslösning 1/13 Labb 3: Ekvationslösning med Matlab (v2) Envariabelanalys 2007-03-05 Björn Andersson (IT-06), bjoa@kth.se Johannes Nordkvist (IT-06), nordkv@kth.se Det finns flera sätt att lösa ekvationer. För enklare uttryck, som polynom av låg grad, kan man snabbt och utan större ansträngning hitta exakta lösningar. Andra uttryck kräver att man tar fram approximationer med hjälp av numeriska metoder. Syftet med denna laboration är att visa styrkorna - men också svagheterna med användandet av numeriska metoder för att lösa ekvationer i matematikbearbetningsverktyget Matlab. Labb 3: Ekvationslösning med Matlab... 1 Uppgift 21... 2 Uppgift 22... 2 Uppgift 23... 3 Uppgift 24... 4 Uppgift 25... 6 Resultat... 10 Uppgift 21... 10 Uppgift 22... 10 Uppgift 23... 10 Uppgift 24... 10 Uppgift 25... 10 Källor... 11 Bilaga: Matlab-kod... 12

Envariabelanalys Labb 3: Ekvationslösning 2/13 Uppgift 21 Uppgiften gick ut på att pröva funktionen roots på olika givna polynom. roots är en numerisk funktion som letar reda på nollställen för den funktion vars koefficienter som man skickar som parameter. Den fungerar enbart för polynom. Koefficienterna till de olika termerna i polynomen matas in i gradordning i funktionen roots 3 5 Om man t.ex. matar in polynomet 1+ 3x 2x + x så blir det: roots([1 0 2 0 3 1]) Resultat av beräkningarna i Matlab: 3 5 1+ 3x 2x + x ger rötterna 1,24 ± 0,66i och 1,06 ± 0,53i och -0,36 2 x ger dubbelroten 0 x 2 +1 ger rötterna ± i Uppgift 22 Uppgiften var att testa den numeriska matlab-funktionen fzero för några givna funktioner ( ej polynom ). Till skillnad från roots så kräver den här funktionen inget polynom men hittar ast en rot åt gången. Fzero klarar inte heller imaginära rötter. Vi börjar att plotta funktionerna för att se var de kan tänkas ha ett nollställe. För funktionen tan( x ser vi (figur 1) att första nollstället kommer strax efter x=1,2. Eftersom vi enbart ska testa funktionen så undersökta vi bara första nollstället efter x=0 för de olika funktionerna. fzero tar två parametrar, en funktion och ett startvärde. Som exempel för funktionen tan(-x satte vi funktionen enligt fzero( tan(-x,1.2).

Envariabelanalys Labb 3: Ekvationslösning 3/13 tan( x ger roten 1,57 Figur 1: f( = tan(-x x 2 +1 ger inget nollställe eftersom fzero inte klarar imaginära tal. 1 cos( Fzero klarar inte denna funktion (säger att roten är imaginär). Vid x=0 finns dock ett nollställe (f(0)=0). Den numeriska metoden bakom fzero tycks därför vara beroe av att uttrycket ska skära och passera x-axeln för att kunna ge ett svar. Uppgift 23 Uppgiften gick ut på att konstruera en snurra som finner gränsvärdet för den rekursivt definierade talföljden x x + x + n Ν, x = 1. Vi vill med andra ord se var (och om) funktionen konvergerar. n + 2 = n+ 1 n 1 0 x1 = I snurran utnyttjar vi egenskapen hos konvergerande uttryck att differensen mellan funktionsvärdena går mot noll när n går mot oändligheten. I vår snurra anser vi att vi fått ett tillräckligt noggrant värde på x gränsvärde när differensen mellan nuvarande och föregåe x är en 1/10 6 (se koden i figur 2). Om så är fallet kommer vi inte fortsätta att räkna ut nästkommande värde utan skriver ut gränsvärdet.

Envariabelanalys Labb 3: Ekvationslösning 4/13 %Vi letar efter gränsvärdet, alltså när uttrycket konvergerar bigdif = 1; k = 0; newn = 0; nplus = 1; n = 1; while(bigdif & (k < 1000)) newn = sqrt(nplus + n + 1); %Skillnaden ska vara väldigt liten bigdif = (abs(nplus - n)>0.000001); k = k + 1; if(k ~= 1000) newn else display('konvergerar inte Figur 2: Matlab-kod Vi har även infört en variabel k. Denna variabel ökar med ett för varje loop. Om talföljden inte konvergerat efter 1000 beräkningar (k = 1000 n = 1000 + 2) så antar vi att uttrycket inte kommer att konvergera och skriver ut ett felmeddelande. Den rekursivt definierade talföljden xn + 2 = xn+ 1 + xn + 1 n Ν, x0 = x1 = 1 har gränsvärdet: 1,7321 Uppgift 24 Uppgiften syftar till att med olika metoder bestämma det största värdet till funktionen f ( = e x sin( i intervallet [0,1] ( 0 x 1). Lokala extrempunkter för funktionen kommer att finns i ändpunkterna och eventuellt också där derivatan är noll. För att få en uppfattning av derivatan plottar vi funktionen i Matlab (se figur 3).

Envariabelanalys Labb 3: Ekvationslösning 5/13 Figur 3: f ( = e x sin( Vi ser i grafen att derivatan ser ut att vara konsekvent ökande och sakna nollställen i intervallet ( 0 x 1). I uppgiften står det dock att vi ska använda en numerisk metod för att försöka bestämma extrempunkter. Då vi inte har något polynom kan vi inte använda roots utan använder fzero. Vi använder fzero med derivatan av f ( = e x sin( som funktion-parameter och startvärde x=0 då detta inleder intervallet. Vi börjar med att derivera funktionen på papper enligt produktregeln. x x x x f ( = e sin( f '( = e sin( + e cos( = e (sin( + cos( ) Och exekverar därefter följande i matlab: fzero( e^x*(sin(+cos(), 0) Detta ger en rot då x = -0,7854, vilket inte är en del av intervallet. Misstankarna från figur 3 visade sig därför stämma. Vidare kan vi i figur 3 se att funktionens lokala max-värde kommer att ligga i ändpunkten (tillhör intervallet) med störst x-värde, då derivatan i intervallet är konsekvent positiv. Vi beräknar med Matlab följande funktion: fmax = e*sin(1) fmax = 2,2874

Envariabelanalys Labb 3: Ekvationslösning 6/13 Vidare skulle vi beräkna exakt värde för den lokala max-punkten. Vi sätter därför in x=1 i det ursprungliga uttrycket. f ( = e x sin( ; x änd = 1 f max (1) = e 1 sin(1) = esin(1) Slutligen skulle vi använda funktionen fmin för att ta reda på max-värdet. Då fmin är deprecated och inte fungerar i Matlab R2006a använde vi fminbnd som fungerar på samma sätt. Den använder sig av intervallhalveringsteknik. För att kunna använda fmin till att ta ut maxvärden så sätter man ett minustecken framför funktionen som man använder som parameter. Övriga parametrar var start och slutvärde på det givna intervallet [0,1]. fminbnd( -(2.71828^x*sin(),0,1) Vi erhöll med denna metod f max = 2,2871 Vad vi kan se är att resultatet från fminbnd (2,2871) skiljer sig från värdet vi erhöll då vi satte in ändpunkten (x=1) av funktionen f ( = e x sin(. Detta beror på att fminbnd är en numerisk funktion som använder sig av intervallhalveringsteknik. Precis som Arne Persson och Lars-Christer Böiers skriver i boken Analys i en variabel så kommer denna numeriska metod (likt andra numeriska metoder) ast fungera som en grov approximation (som bör kompletteras med andra metoder). För att intervallhanteringsteknik ska ge noggranna resultat krävs många exekveringssteg, vilket skulle kräva mycket resurser - även för verktyg som Matlab. Resultat från uppgift 24: Max-värde m.h.a. insättning av ändpunkt i funktion: 2,2874 Max-värde m.h.a. fminbnd: 2,2871 (se anledning ovan) Uppgift 25 Uppgiften var att göra en Matlab-funktion som använder sig av Newton-Rhapsons algoritm. Den skulle ta tre parametrar: en matematisk funktion, ett startvärde och ett toleransvärde. Den matematiska funktionen definierades som matematisk funktion m.h.a. Matlabfunktionen fcnchk som även används av matlab-funktioner som fzero. För att beräkna derivatan till funktionen så tog vi två olika värden för funktionen och jämförde skillnaden i y- och x-led. De två värden vi tog var: startvärde-0,0001 och startvärde+0,0001. Det ena kallade vi för y1 och det andra för y2. Skillnaden mellan dessa två y-värden kallade vi för dy. dx var alltid 0,0002, oavsett värden på y. På så vis fick vi ut lutningen. Vi kunde därefter sätta in de erhållna värdena enligt Newton-Raphsons metod

Envariabelanalys Labb 3: Ekvationslösning 7/13 x n+ 1 n+1 = x n f ( xn ) f ( x ) n x blev nya startvärdet när loopen började på nytt. Uttrycket i Newton-Raphsons metod kommer att konvergera. Vi använder därför en snurra som liknar den vi konstruerade i uppgift 24. Snurran tar fram nya värden till dess att differensen mellan talet x n+1 och x n är mindre än den av användaren givna toleransen. Nedan visas Matlab-funktionen: function rot = NRrot(f,x0,tolerans) func = fcnchk(f); previousroot = x0 + 1000; format long while(tolerans<abs(previousroot-x0)) fvalue = func(x0); y2 = func(x0+0.0001); y1 = func(x0-0.0001); dx = 0.0002; dy = y2 - y1; deriv = dy/dx; previousroot = x0; x0 = x0 - fvalue/deriv; rot = previousroot; Vi visar nu att ovanståe funktion ger korrekta rötter (en åt gången) för olika matematiska funktioner. Vi börjar med att söka rötterna för olika polynom. I figur 4 visas hur NRrot används för att hitta roten (närmast 2) för polynomet x 2-1(=0). Därefter finner vi roten enligt x 2 = 2 x = 2 1/2. Som vi ser i figuren ger de båda inmatningarna i Matlab samma resultat. Vi ger därefter rot närmast x=2 för x 3-8(=0) och x 4-16(=0) enligt ovan nämnda tillvägagångssätt.

Envariabelanalys Labb 3: Ekvationslösning 8/13 Figur 4: Test av NRrot i Matlab I figur 5 testar vi funktionen NRrot för matematiska funktioner som inte är polynom. Vi finner roten närmast 2 för funktionerna f( = cos( och f( = sin(.

Envariabelanalys Labb 3: Ekvationslösning 9/13 Figur 5: Test av NRrot för funktioner (icke-polynom) π I figur 5 ser vi att NRrot ger roten 1,5708 = för f(=cos(. I figur 6 ser vi att 2 enhetscirkeln visar cos π = 0. Vidare ger NRrot roten 3,1416=π för f(=sin( nära 2 x=2. Vi ser att även detta stämmer med enhetscirkeln i figur 6. Figur 6: Enhetscirkeln (bildkälla: http://sv.wikipedia.org/wiki/cos)

Envariabelanalys Labb 3: Ekvationslösning 10/13 Resultat Uppgift 21 1 x x + x 3 5 + 3 2 ger rötterna,24 0,66i 2 x ger dubbelroten 0 x 2 +1 ger rötterna ± i 1 ± och 1,06 ± 0,53i och -0,36 Uppgift 22 tan( x ger nollstället 1,57 x 2 +1 ger inget nollställe eftersom fzero inte klarar imaginära tal. 1 cos( Fzero klarar inte denna funktion (säger att roten är imaginär). Vid x=0 finns dock ett nollställe (f(0)=0). Uppgift 23 Den rekursivt definierade talföljden xn + 2 = xn+ 1 + xn + 1 n Ν, x0 = x1 = 1 har gränsvärdet: 1,7321 Uppgift 24 Max-värde m.h.a. insättning av ändpunkt i funktion: 2,2874 Max-värde m.h.a. fminbnd: 2,2871 (se uppg 24 för anledning) Uppgift 25 function rot = NRrot(f,x0,tolerans) func = fcnchk(f); previousroot = x0 + 1000; format long while(tolerans<abs(previousroot-x0)) fvalue = func(x0); y2 = func(x0+0.0001); y1 = func(x0-0.0001); dx = 0.0002; dy = y2 - y1; deriv = dy/dx; previousroot = x0; x0 = x0 - fvalue/deriv;

Envariabelanalys Labb 3: Ekvationslösning 11/13 rot = previousroot; Källor Persson, Böiers. Analys i en variabel. Andra upplagan. Tryckt 2006, utgiven av Studentlitteratur. Kompium: Envariabelanalys i Matlab. Läsåret 2001. 2007-03-02: http://www.math.kth.se/math/student/courses/5b1147/me/200607/matlabenvar/5b1147 matlab.pdf

Envariabelanalys Labb 3: Ekvationslösning 12/13 Bilaga: Matlab-kod clc, clear display('21: roots display('1+3x-2x^3+x^5 roots([1 0-2 0 3 1]) display('x^2 roots([1 0 0]) display('x^2+1 roots([1 0 1]) display('22: fzero display('tan(-x x=-3:0.1:3; plot(x,tan( -,grid fzero('tan(-x', 1.2) display('1-cos( x=-5:0.1:5; figure(2) plot(x,1-cos(),grid display('vi ser i grafen att f(=1-cos( aldrig skär x-axeln display(' display('x^2+1 x=-5:0.1:5; figure(3) plot(x,x.^2+1),grid display('vi ser i grafen att f(=x^2+1 aldrig skär x-axeln display('23: Finn gränsvärdet för newn = sqrt(nplus + n + 1) %Vi letar efter gränsvärdet, alltså när uttrycket konvergerar bigdif = 1; k = 0; newn = 0; nplus = 1; n = 1; while(bigdif & (k < 1000)) newn = sqrt(nplus + n + 1); %Skillnaden ska vara väldigt liten bigdif = (abs(nplus - n)>0.000001); k = k + 1;

Envariabelanalys Labb 3: Ekvationslösning 13/13 if(k ~= 1000) newn else display('konvergerar inte display('24: Finn maxvärde för funktionen f(=e^x*sin( display('x nära noll som ger max f( %Vi itererar fram funktionsvärden index = 0; for x = 0:0.001:1 index = index +1; y(inde = 2.71828^x*sin(; figure() x = 0:0.001:1; plot(x,y),grid fzero('2.71828^x*(cos(+sin()', 0) display('x-värdet tillhör inte intervallet, störst i ändpunkten (då x=1) x=1; 2.71828^x*sin( display('det exakta max-värdet är e(sin(1)+cos(1) display(' x = fminbnd('-(2.71828^x*sin()',0,1); max_med_fminbnd = 2.71828^x*sin( function rot = NRrot(f,x0,tolerans) func = fcnchk(f); previousroot = x0 + 1000; format long while(tolerans<abs(previousroot-x0)) fvalue = func(x0); y2 = func(x0+0.0001); y1 = func(x0-0.0001); dx = 0.0002; dy = y2 - y1; deriv = dy/dx; previousroot = x0; x0 = x0 - fvalue/deriv; rot = previousroot;