Kurvanpassning jfr lab Kurvanpassning Beräkningsvetenskap II Punktmängd approximerande funktion Finns olika sätt att approximera med polynom Problem med höga gradtal kan ge stora kast Kurvanpassning jfr lab Från laborationen, olika Matlabkommandon: x = [0 1 4 9 16]; y = [0 1 2 3 4]; xx = linspace(0,16); % skapa x-axel p = polyfit(x,y,4) % 4:e gradspolynom p = -0.0010 0.0306-0.2986 1.2690-0.0000 yy = polyval(p,xx); % Evaluera polynomet yyspline = spline(x,y,xx); % spline plot(x,y, *,xx,yy, :,xx,yyspline, - ); legend( Mätpunkter, 4:grads pol, spline ); grid on; xlabel( x ); ylabel( y ); Kurvanpassning jfr lab Så här blir just detta exempel Matlabkommandon: polyfit, polyder, polyval, roots, spline Kurvanpassning jfr lab p = polyfit(x,y,n); Hittar koefficienter till interpolationspolynom av grad n. Om antal punkter > n+1 sker minsta kvadratanpassning yy = polyval(p,xx); Evaluerar polynomet p i punkterna xx y = A\b; Om systemet är överbestämt (flera ekvationer än obekanta) sker minsta kvadratanpassning yy = spline(x,y,xx); Beräkna kubiska splines Kurvanpassning innebär approximation Att anpassa en funktion till en punktmängd är en form av approximation Vanligt med polynom eftersom de är enkla att hantera, t ex derivera Kan göras på olika sätt, då polynomet inte skär genom punkterna utan är en typ av medelvärde Interpolation, då polynomet skär exakt i punkterna. Kan i sin tur göras på olika sätt Som ett polynom över hela punktmängden Som styckvisa polynom som sätts samman till en kurva, s k splines 1
Vanliga användningsområden Interpolation Anpassning av matematiska modeller till experimentdata (mätdata) Beräkning av approximativa värden i mellanliggande punkter Bestämning av trender Approximation av svår funktion med enklare Antag n mätvärden Exempel) x 1 2 3 4 5 f(x) 1 2 1 2 3 Sammanbind dessa punkter med ett polynom exakt genom samtliga punkter: ett polynom över hela punktmängden eller styckvisa polynom, s k splines Om man använder ett polynom över alla punkter bestämmer antalet punkter polynomgraden. Varför? För att entydigt bilda ett polynom av grad 1 krävs 2 punkter För att entydigt bilda ett polynom av grad 2 krävs 3 punkter Slutsats: För att entydigt bestämma ett polynom av grad n krävs n+1 punkter Ansätter man ett polynom av grad<n och har n+1 punkter får man minska kvadratanpassning Exemplet) Konstruera ett interpolationspolynom. 5 punkter 4:e gradspolynom Ansätt: Sätt in de 5 punkterna i polynomet 5 ekvationer likhet i punkterna OBS! 5 obekanta (a0,,a4) och 5 ekvationer Entydigt lösbart system! vilket ger lösningen Stoppa in detta i ansatsen ger det färdiga polynomet Plottning ger Löses med Gausselimination 2
Begreppet ansats Gången blir alltså Ansätt ett polynom Sätt in punkter i ansatsen (och använd likhet i punkterna) Lös systemet Sätt in lösningen i ansatsen det färdiga interpolationspolynomet Man kan i princip ansätta vilket polynom (eller annan funktion) som helst Vissa ansatser effektivare än andra I exemplet gjordes ansatsen En ansats anger att ett uttryck ska ha en viss form, men koefficienter/parametrar återstår att bestämma. Exempel: förstagradspolynom exponentiellt avtagande funktion Begreppet ansats Om p(x) är ett förstagradspolynom kan t ex följande ansatser tänkas: medelvärde Oändligt många ansatser möjliga för ett och samma polynom! Man väljer den som är praktisk, blir bäst beräkningsmässigt. Bättre ansats: Newtons interpolationsformel P 4 (x 1 ) Exemplet P 4 (x 2 ) P4 (x 5 ) På matrisform Newtons interpolationsformel ger triangulär matris! Den här ansatsen gav problemet bättre egenskaper beräkningsmässigt. 3
Stoppa in mätvärden i matrisen Att båda metoderna ger samma polynom beror på Stoppa in i ansatsen ger Samma polynom som tidigare! Givet Interpolation med polynom så gäller entydighet. så att Bevis Antag existerar två sådana polynom, och. Då gäller där, dvs ett polynom av grad n-1 med n nollställen ett nollpolynom vilket strider mot antagandet. Runges fenomen Exempel f(x) = 1/(1+25x 2 ) Approximera f(x) med 5:e gradspolynom (i 6 pkt:er på kurvan) Approximera med 10:e gradspolynom (i 11 pkt:er) Felet blir större ju högre grad högregradspolynom ger stora svängningar Kallas Runges fenomen Medför att man i praktiken inte bör använda polynom av höga gradtal Vanligast att 3:e gradspolynom ansätts mellan varje par av punkter, s k kubiska splines. Sätts samman till en kedja av polynom. Exemplet 4 st kubiska splines Hur kan man hitta 3:e gradspolynom mellan två punkter? Måste hitta på nya krav så antalet ekvationer och obekanta stämmer. Krav Kontinuitet i skarvarna Kontinuerlig derivata i skarvarna Kontinuerlig andraderivata i skarvarna Vanligen andraderivata = 0 i ändpunkterna ( natural spline ), men finns andra alternativ Detta leder till att kedjan sitter ihop och att det blir jämn övergång mellan länkarna i kedjan Ansätt 3:e gradspolynom på intervall i, vanligen Ger 1:a derivata och 2:a derivata Sätt samman detta så att allt hänger samman i skarvarna 4
Kontinuitet i skarvarna medför att s 1 (x 1 )=f(x 1 ) s 1 (x 2 )=s 2 (x 2 )=f(x 2 ) s 2 (x 3 )=s 3 (x 3 )=f(x 3 ) etc ett system med 8 ekvationer: Detta ger På samma sätt medför kontinuerlig 1:a derivata 2:a derivata = 0 i ändpunkterna ger Kontinuerlig 2: derivata i skarvarna ger dvs 2 ekvationer Antal ekvationer totalt: 8+3+3+2=16 Antal obekanta totalt: a i, b i, c i, d i, i=1,2,3,4 (4 obekanta varje intervall) 16 obekanta Lösbart ekvationssystem! Totalt 3+3 ekvationer Sätt samman de 16 ekvationerna i ett ekvationssystem och lös systemet. Ger Olika därför att MATLAB använder andra villkor i ändpunkterna ( not-a-knot -villkor) Hittills interpolation polynomet går genom punkterna Istället låt polynomet vara någon typ av medelvärde minimera avståndet mellan punkter och polynom 5
Exemplet igen: Antag vi vill approximera med 2:a gradspolynom Ansats t ex Likhet i punkterna x 1 2 3 4 5 f(x) 1 2 1 2 3 5 ekvationer, 3 obekanta kan (vanligen) ej lösas entydigt! Ekvationsystemet blir Kallas för ett överbestämt system, fler ekvationer än obekanta Kan ej lösas på vanligt sätt (gausselimination) beror på att det inte finns någon lösning Istället hitta lösning som minimerar Kallas minsta kvadratlösningen den bästa lösningen i minsta kvadratmening Kan hittas genom att lösa normalekvationerna Exemplet: ger Resultat: Minimering av summan av avstånden i kvadrat Konditionstal ofta stort hos A T A. I exemplet: cond 2 (A) = 82.8, men cond 2 (A T A) = 6847.3. Använder därför ofta ortogonalisering av A:s kolonner s k QR-faktorisering Vilket polynom ska man välja? Polynom av grad 2 eller 3 eller 4 eller? Kan finnas kunskap om den underliggande trenden, t ex att trenden ungefär bör följa en kvadratisk kurva, dvs ett 2:a gradspolynom Kan pröva olika gradtal, nerifrån och upp, tills polynomen inte ändras nämnvärt. Interpolation eller minstakvadrat - inte alltid självklart! Några olika exempel Minsta kvadrat Skulle interpolation fungera? Stor datamängd 6
Kastbana med data som innehåller fel (t ex mätfel eller mätningar med viss noggrannhet) Minsta kvadrat brukar användas då man har störda data. Inte rimligt att låta en linje gå exakt genom inexakta mätpunkter. Kastbana med störda data Interpolation ger Inte en bra bild av kaströrelsen Förstoring/förminskning av bilder Linjär interpolation brukar användas för att fylla ut data mellan pixlar (medför försämrad bild) Obs att t ex Word använder inte linjär interpolation utan en sämre metod än PhotoShop CAD/CAM Splines i 3D (s k B-splines) Splines används även för att jämna till bokstäver i ordbehandlare, jämna till bilder i digital video etc etc (smoothing) 7