NUMPROG, D, vt 006 Föreläsning, Numme-delen Linjära ekvationssystem Interpolation, Minstakvadratmetoden En av de vanligaste numeriska beräkningar som görs i ingenjörsmässiga tillämpningar är att lösa ett linjärt ekvationssystem Ax = b (.) där A är en n n-matris, x och b är n -vektorer. Om systemet är litet, säg n =eller n =3, löser vi det för hand. För större system används dator. Läs själv i PP, kap 4,4:B. Den algoritm (numeriska metod) som används är Gausselimination. Denna metod är genomgånen i kursen 5B3 (Amalia I) och tas därför ej upp här. Ekvationssystemet (.) har en entydig lösning om det(a) 0. Om så ej är fallet, dvs det(a) =0, så har systemet antingen ingen lösning eller oändligt många lösningar. Det är viktigt att veta hur Matlab behandlar linjära ekvationssystem. Om matrisen är icke-singulär, dvsdet(a) 0, A=[ 3;4 5 6;7 8 0]; b=[-3-3 -5] ; x=a\b så skriver Matlab ut den entydiga lösningen x =(,, ) T. Om vi ändrar elementet A 33 till A(3,3)=9; så blir matrisen A singulär, dvsdet(a) = 0, och Matlab skriver ut Matrix close to singular or badly scaled. Results may be inaccurate, vilket betyder att vi inte kan vara säkra på om x verkligen är en lösning. Om matrisen är singulär finns det anledning att kontrollera indata igen.
I beräkningssammanhang är det viktigt att kunna uppskatta hur lång tid en beräkning tar på en dator. Tidsåtgången är proportionell mot antalet operationer, dvs antalet additioner, subtraktioner, multiplikationer och divisioner som behövs för att räkna ut resultatet. Man kan visa att för Gauss-elimination är antalet operationer n 3 /3, dvs tidsåtgången ökar med kuben på antalet obekanta. Detta resultat gäller om matrisen A är fylld, dvsdeflestaelementenia är skilda från noll. Om många av elementen i A är lika med noll kan algoritmen för Gausselimination modifieras så att färre operationer behövs för att räkna fram lösningen. D = Exempel. Medx nedan menas ett element skilt från noll x 0... 0 0 x... 0...... 0 0... x,t = x x 0... 0 0 0 x x x... 0 0 0......... 0 0 0... x x x 0 0 0... 0 x x,l= x 0 0... 0 x x 0... 0 x x x... 0....... x x x... x Ovanstående matriser är exempel på glesa matriser; många av elementen är lika med noll. Av ovanstående matriser är D en diagonalmatris, T en tridiagonal matris och L en vänstertriangulär matris. För att lösa ekvationssystemet Dx = b behövs n operationer (inses direkt). För att lösa T x = b behövs 8n operationer och för Lx = b krävs n operationer. För stora linjära ekvationssystem är det viktigt att utnyttja matrisens struktur så att beräkningstiden blir så kort som möjligt! Interpolation Interpolation handlar om hur man anpassar kurvor till givna punkter. Kap 4, avsnitt 4:E i PP behandlar polynominterpolation Enkelt inledande exempel är linjär interpolation: anpassning av en rät linje till två givna punkter. Antag att (x,y ) samt (x,y ) är givna. Bestäm c och c i den räta linje y = c x + c som går genom punkterna.
Följande två ekvationer kan ställas upp: c x + c = y, c x + c = y Detta är ett linjärt ekvationssystem Ac = y, där A = ( ) ( ) ( ) x c y, c =, y = x c y Om vi i stället har 4 punkter givna, (x i,y i ),i=,, 3, 4, kan ett polynom av gradtal 3 som går genom punkterna bestämmas. Antag polynomet p(x) har följande form p(x) =c x 3 + c x + c 3 x + c 4 Följande fyra ekvationer kan ställas upp: c x 3 + c x + c 3x + c 4 = y c x 3 + c x + c 3 x + c 4 = y c x 3 3 + c x 3 + c 3x 3 + c 4 = y 3 c x 3 4 + c x 4 + c 3 x 4 + c 4 = y 4 På matrisform blir detta Ac = y, där A = x 3 x x x 3 x x x 3 3 x 3 x 3 x 3 4 x 4 x 4, c = c c c 3 c 4, y = y y y 3 y 4 Ett Matlab-program för lösning av interpolationsproblemet med ett tredjegradspolynom samt plottning av givna punkter och polynomkurva kan se ut på följande sätt: x=[,,3,4] ;y=[- 3 ] ; A=[x. 3 x. x ones(size(x))]; c=a\y xp=[0:0.:5] ; yp=c()*xp. 3+c()*xp. +c(3)*xp+c(4); plot(x,y, o,xp,yp) 3
title( Tredjegradsinterpolation ) xlabel( x ),ylabel( y ) grid 4 Tredjegradsinterpolation 3 0 y 3 4 5 6 0 0.5.5.5 3 3.5 4 4.5 5 x Observera att kurvan går exakt genom punkterna. Om vi har många punkter, säg mer än eller lika med 0 st, är det då lämpligt att använda interpolation för att anpassa en kurva till punkterna? Följande exempel visar att så inte alltid är fallet: 3.5 3.5.5 0.5 3 4 5 6 7 8 9 Kraftiga oscillationer mellan interpolationspunkterna går under namnet Runges fenomen. Att använda samma polynom genom alla givna punkter kallas global interpolation. Ett alternativ är att använda styckvis interpolation, där po- 4
lynomet är olika mellan alla delintervall (x i,x i+ ) såsom styckvis linjär eller styckvis kubisk, texhermiteinterpolation, se kap 4, avsnitt 4:E-3. Minstakvadratmetoden Minstakvadratmetoden handlar om hur man anpassar kurvor till givna punkter, men inte som vid interpolation då kurvan går exakt genom punkterna, utan approximativt. Kap 4, avsnitt 4:D i PP behandlar MKmetoden. Vid handräkning används enklast normalekvationerna (se nedan). Vid Matlabprogrammering används \-operatorn. Enkelt inledande exempel är anpassning av en rät linje y = c x + c till m givna punkter (x,y ), (x,y ),...(x m,y m ). Villkoret för att den räta linjken ska approximera de givna punkterna formuleras som m ekvationer för obekanta: c x + c y c x + c y... c x m + c y m Detta ekvationssystem är överbestämt och har i allmänhet ingen lösning. 0 Raet linje genom att antal punkter 8 6 4 y 0 8 6 4 3 4 5 6 7 8 9 x 5
Ekvationssystemet kan formuleras på matrisform: Ac y där A är en m -matris med elementen x i på rad i, c är kolumnvektorn av obekanta (c och c )ochy en m kolumnvektor bestående av y i -värdena. Det överbestämda ekvationssystemet har i allmänhet ingen lösning, men minstakvadratproblemet, dvs problemet m min (c c,c x i + c y i ) (.) i= har alltid en lösning, som kan beräknas med hjälp av normalekvationerna: A T Ac = A T y I fallet med den räta linjen blir komponenterna i A T A och A T y: A T A = ( mi= x i mi= x i mi= x i m ) ( mi= ), A T x y = i y i mi= y i När normalekvationerna löses med Gausselimination erhålles minstakvadratlösningen c,varefterresidualvektorn (skillnaderna mellan punktens y-värde och motsvarande värde på den räta linjen) r = y Ac kan beräknas. Den minsta kvadratsumman blir r T r,dvsvärdetav(.). Matlab-exempel: x=[:9] ;y=*x+*rand(9,); A=[x ones(size(x))]; c=a\y; xp=[:0.:9] ; yp=c()*xp+c(); r=y-a*c; kvadsum=r *r 6
subplot(,,);plot(x,y, *,xp,yp) title( Anpassning av raet linje ) xlabel( x ),ylabel( y ) subplot(,,);plot(x,r) title( Residualvektor ) xlabel( x ),ylabel( r ) 0 Anpassad raet linje Residualvektor 5 0.5 0 0 0.5 5 0 0 4 6 8 0.5 0 4 6 8 0 Vi avslutar kap 4 i PP med en jämförelse mellan ) global interpolation, ) spline-interpolation och 3) minstakvadratmetoden. Vilken kurva svarar mot vilken approximation? 3.5 Jaemfoerelse interpolation och minstakvadratmetoden 3.5 y.5 0.5 3 4 5 6 7 8 9 x Valet av vilken metod som används är subjektivt; det finns inget sätt 7
att avgöra vilken anpassning som är den bästa till en given uppsättning punkter. Det som avgör valet är vad den anpassade kurvan ska användas till. Laboration, krav på Numme-delen av laborationen ) Du ska kunna förklara skillnaden mellan interpolation (IP) och minsta kvadratmetoden (MKM) ) För att programmera de två metoderna IP och MKM kan man använda \ eller polyfit. I bägge fallen ska du kunna förklara de linjära ekvationssystem som utgör grunden för IP resp MKM. Du ska även kunna förklara vad normalekvationerna är. 3) Du ska kunna förklara begreppet residualvektor och varför residualvektorn vid interpolation alltid blir noll 8