DN11 Numeriska metoder och grundläggande programmering Sammanfattning (Nummedelen Icke-linjära ekvationer Ex: y=x 0.5 Lösningsmetoder: Skriv på polynomform och använd roots(coeffs Fixpunkt x i+1 =G(x i, konvergerar endast om G ' ( x i <1 nära roten G( x i utseende beror på ekvationen som ska lösas. x Sekantmetoden x i+ 1 i x i 1 f (x i f (x i 1 f (x i Newton-Raphson x i+ 1 f (x i, kvadratisk konvergens f ' ( x i För system: Newtons metod x i+ 1 = x i J ( x i 1 f ( x i (x = x J\f i MATLAB Konvergenshastighet Linjär konvergens om: Kvadratisk konvergens om: x i x i 1 x i 1 x i konstant x i x i 1 x i 1 x i konstant Startgissning För att börja iterera krävs en startgissning. Denna kan exempelvis fås genom att: Plotta funktionen och uppskatta skärningspunkten med x-axeln. För system: uppskatta skärningspunkten mellan funktionerna i systemet. Plotta höger- och vänsterled separat och uppskatta skärningspunkten. Anta att okända variabler är stora och förenkla därefter. Anta att okända variabler är små och förenkla därefter. (I dessa fall, kontrollera att resultatet stämmer med antagandet. Kurvanpassning Med polynom Skriv ett polynom y=c n x n +...+c x +c 1 x 1 +c 0 x 0 av grad n som anpassar sig till de m punkterna (x 1,,(x, y,...,( x m Residual och felkvadratsumma Residualvektorn är en vektor vars element är avståndet mellan de givna punkterna och den anpassade kurvan i dessa punkter. Felkvadratsumman är summan av felen i kvadrat i samtliga punkter. Dvs. summan av residualvektorns element i kvadrat. 1
Lösningsmetoder: Naiva ansatsen ( A c= y Om antalet punkter = gradtal+1: Lösbart system, lös med matrisinvers: c= A 1 y (c=a\y i MATLAB Om antalet punkter > gradtal+1: Överbestämt system, inga lösningar Approximera med minsta-kvadrat metoden (MKV (vänstermultiplicera med A T : A T A c=a T y (Detta system kallas normalekvationerna Lös normalekvationerna för hand eller lös ut c med matrisinvers: c=(a T A 1 A T y (c=a\y i MATLAB c ger ett polynom vars sammanlagda avvikelse från de givna punkterna är så liten som möjligt. (residualvektorns längd är så liten som möjligt Om antalet punkter < gradtal+1: Underbestämt system, oändligt med lösningar. Newtons ansats (Lämplig för handräkning Exempel Förstagrads-polynom genom punkter: y=c 1 (x x 1 +c 0 Andragrads-polynom genom 3 punkter: y=c ( x x +c 1 +c 0 Tredjegrads-polynom genom 4 punkter: y=c 3 (x x 1 (x x ( x x 3 +c ( x x +c 1 +c 0 etc... Sätt in punkterna en efter en i ekvationen ovan (x = x 1, y =... x = x m, y = y m. Varje punkt ger en koefficient. (Resulterande koefficienter kan inte användas på standardformen y=c n x n +...+c x +c 1 x 1 +c 0 x 0 utan är specifika för den ansats som valdes. Med modellfunktion (linjärt system Ex. Bestäm variablerna a och b i y=a cos( x4 x +b log( så att funktionen anpassas till de m 5 punkterna (x 1,,(x, y,...,( x m. Sätt in punkterna för att få fram värden för cos( x4 5 A [ a = y A c= y. b] Om antalet punkter = antalet variabler Lös med matrisinvers som ovan. (c = A\y i MATLAB Om antalet punkter > antalet variabler Approximera med MKV som ovan. (c = A\y i MATLAB x och log(. Ställ upp systemet som
Med modellfunktion (olinjärt system Ex. Bestäm variablerna a och b i y= 5+a =g(x,a, b så att funktionen anpassas till de m b x +10 punkterna (x 1,,(x, y,...,( x m På grund av funktionens utseende kan systemet inte ställas upp på formen A c= y. Lösningsmetoder: Newtons metod Sätt funktionen lika med 0: 0=g(x,a,b y= f ( x, y,a,b f (x 1,, a i Ställ upp det olinjära ekvationssystemet: f ( x, y,a i,b f (x i =[, a i 0 f ( x m,a i ]=[0 0] Lös systemet med Newtons metod: [ a i +1 b i+1] = [ a i b i] h då h=j ( x, y, a i 1 f ( x, y,a i alt. J ( x, y,a i h= f ( x, y,a i δ f ( x1, y1,ai,bi δ f ( x 1,, a i δ a δ b δ f ( x och J ( x, y,a i =[, a i δ f (x, a i ] δ a δ b δ f (x m,a i δ f (x m,a i δ a δ b om antalet punkter är fler än antalet obekanta så är inverterbar. J ( x i inte kvadratisk och därav inte Approximera i så fall h med MKV: h=( J T J 1 J T f (h = J\f i MATLAB Ta fram en startgissning [ a 0 b 0]. Iterera med [ a i +1 b i+1] = [ a i b i] h tills felkvadratsumman Q= f T f är minimal. Hermite Interpolation Anpassa en kurva till de till de m punkterna (x 1,,(x, y,...,( x m. Denna metod beskriver en formel som styckvis interpolerar mellan de givna punkterna med ett 3:e grads polynom i varje intervall. Derivatan i ändpunkterna för anslutande polynom är samma för att ge en kontinuerlig kurva. För att använda formeln krävs alltså de m punkterna samt derivatan i alla dessa punkter. Formeln behöver inte kunnas utantill. 3
Integration xend I = xstart f ( xdx Lösningsmetoder: i=n Trapetsregeln I (h=[ ( i=1 Richardson Extrapolation: f (x i f ( x 1 + f (x n ] h x 1 =xstart, x n = xend I bättre =I (h+ I (h I (h 3 Genererar en bättre lösning genom att använda lösningen med nuvarande steglängd och en lösning med dubbla steglängden. quad / quadl: I = quad(@func, xstart, xend Detta är en adaptiv metod vilket betyder att den väljer en steglängd automatiskt beroende på funktionens utseende. Differential ekvationer Begynnelsevärdesproblem Ex: y' =y+x y(1=3 Lösningsmetoder (kan antingen vara explicita eller implicita: explicit: Kan användas direkt som iterationsformel implicit: y i+1 måste lösas ut innan formeln kan användas, mer stabil än explicit Euler framåt: y i+1 +h f ( x i, y i, x i+1 = x i +h (explicit Euler bakåt: y i+1 +h f ( x i+1, y i +1, x i +1 +h (implicit Trapetsmetoden (inte samma som trapetsregeln, kombination av Euler framåt och bakåt y i+1 +h f (x, y + f (x, y i i i +1 i+1, x i +1 +h (implicit Runge-kutta k 1 =h f ( x i, y i k =h f (x i + h, y i + k 1 k 3 =h f ( x i + h, y + k i k 4 =h f (x i +h, y i +k 3 y i+1 + (k +k +k +k 1 3 4 6 x i+1 +h (explicit ode45 / ode3: [x y] = ode45(@fprim, [xstart xend], ystart (explicit ode funktionerna kan också ta en extra parameter efter ystart kallad options. Options parametern genereras med funktionen odeset och kan t.ex. definiera vilken noggrannhet (relativ tolerans som krävs i svaret: options = odeset('reltol', 5e-6 [x y] = ode45(@fprim, [xstart xend], ystart, options 4
Högre ordningens Begynnelsevärdesproblem Ex: y' ' ' + y' ' +5yy'=15x y(=1, y ' (= 1, y' ' (=5 Substituera u 1 = y,u = y ',u 3 = y' ',...,u n = y (n 1 då n är högsta derivatan i diff.ekvationen Ställ upp differentialekvations-systemet u ' = f ( x, u : u 1 '=u u ' =u 3... u n ' = y (n = givna differentialekvationen med y (n utlöst. Lös systemet med någon av ovanstående metoder då y i istället blir en vektor u i =[u 1,i, u,i,..., u n,i ]' och f (x i, y i istället blir en funktionsvektor f (x i, u i =[u ' 1,i, u ',i,..., u ' n, i ]' Ex. med Euler framåt: u i+1 = u i +h f ( x i, u i, x i +1 +h u [u,0 1,1 Första steget: u,1 u 3,1] [u1,0 = u,0 u 3,0]+h [ u 3, 0 15x 0 u, x 3, 0 5u u 1, 0,0] 1=x 0+h Ex. med ode45: [xv um] = ode45(@fprim, [xstart xend], [u1start; ustart; u3start]... 1-1 5 function uprim = fprim(x, u uprim = [u(; u(3; 15*x - u(3/ - 5*u(1*u(] Resultat: x 1 xv=[xstart ] x xend, ] 0 u,0 u3,0 u um=[u1, 1 u,1 u 3,1 u 1, u, u 3, Randvärdesproblem Ex: y' ' +5y '= y y(1=1, y(4= 5 Finita differens-metoden Approximera derivator med y ' '= y y + y i 1 i i+1, y '= y y i +1 i 1 h h Dela upp intervallet i N steg (=diskretisera och ställ upp ekvationerna för i = 1,, 3,, N-1 då y 0 = y(1 = 1 och y N = y(4 = -5 Ställ upp ekvationssystemet A y= b som representerar ekvationerna. y=[, y 3,..., y N 1 ]' är dom okända y värdena (y 0 och y N är kända A blir en tridiagonell matris pga att ekvationerna beror på i-1, i och i+1 Konstanter som inte beror på y läggs i b ( y 0 och y N är konstanter Lös ekvationssystemet med y= A 1 b (y=a\b i MATLAB 5
Noggrannhetsordning E trunk konst h p eller E trunk h p E trunk = trunkeringsfelet = skillnaden mellan det numeriskt framtagna svaret och det exakta svaret. h = steglängden p = noggrannhetsordningen på metoden som användes Dvs. om steglängden (h halveras så multipliceras E trunk med (1/ p T.ex. om steglängden halveras i en metod med noggrannhetsordningen så fyrdelas trunkeringsfelet Felskattning Det exakta svaret på funktionen f(x är y. En approximation av f(x är y. Absoluta felet (E = Error är då E= y y och relativa felet är r=e / y. Om funktionen y= f (a,b, c och a=±0.1, b=3±0., c=1±0.1 så kan felet dessa osäkerheter i a, b och c orsakar på y tas fram genom en av dessa 3 metoder: Allmänna felfortplantningsformeln: E tot = δ f δ a E a+ δ f δ b E b+ δ f δ c E c E a =0.1, E b =0., E c =0.1 y= f (a,b,c±e tot Störningsräkning: Stör variablerna uppåt eller nedåt (ej både och en i taget och räkna ut värdet på f för varje störning. Jämför varje resultat med det ostörda resultatet för att få ut en felfaktor per störd variabel: δ y a = f (a,b,c f (a+0.1,b,c δ y b = f (a,b,c f (a,b+0.,c δ y c = f (a,b,c f (a,b,c+0.1 Summera felfaktorerna för att få det totala felet: E tot =δ y a +δ y b +δ y c y= f (a,b,c±e tot Min-max räkning: Hitta kombinationen av störningar på a, b och c som ger maximalt samt minimalt värde på y. y ligger då approximativt i mitten av intervallet mellan min och max och har hela intervallet som felfaktor: y= y + y max min ± y max y min Denna metod är ineffektiv eftersom antalet uträkningar som krävs är fler än i övriga metoder och dessutom ökar drastiskt då antalet variabler ökar. 6