CTH/GU STUDIO b TMV036c - 01/013 Matematiska vetenskaper Minsta-kvadratmetoden Analys och Linjär Algebra, del C, K1/Kf1/Bt1 1 Inledning Ett ofta förekommande problem inom teknik och vetenskap är att koppla samman mätdata med en formel eller kurva som man vill verifiera eller bygga upp Minsta-kvadratmetoden Ett klassiskt problem är att anpassa en rät linje y = a+b t till givna mätdata (t i, y i ), i = 1,, n Hur skall vi välja a och b? Vi kan ju inte få den räta linjen att gå igenom mer än högst två punkter Problemet vi skall lösa är följande överbestämda ekvationssystem a + b t 1 = y 1 a + b t = y a + b = y n (det är a och b som är de obekanta!) På matrisform, 1 t 1 1 t 1 A [ a b = y 1 y y n y Grundidén i minsta-kvadratmetoden är att projicera vektorn y ortogonalt på kolonnrummet för matrisen A (Col(A)) och sedan lösa ekvationen Ax = p där p är projektionen På så vis får vi en lösning ˆx där avståndet Aˆx y är det minsta möjliga och väljer vi nu a = ˆx 1, b = ˆx så har vi minimerat summan av kvadraterna på avvikelserna: n (a + b t i y i ) i=1 Lösningen ˆx till problemet Ax = p ovan säges vara minsta-kvadratlösningen till det ursprungliga ekvationssystemet Ax = y Vi finner den genom att lösa den så kallade normalekvationen, (se Lay kap 65, sats 13 och 1), A T Ax = A T y (1) (Notera att vi inte behöver bestämma projektionen p för att bestämma ˆx) 1
Det kvadratiska medelfelet, den genomsnittliga avvikelsen, ges av där n är antalet mätdata ε = Aˆx y / n Låt oss nu bestämma den räta linje som i minsta-kvadratmening är bäst anpassad till följande data: t -1 0 1 3 6 7 y -075 03 3 56 7 6 8 Då är [ A T = 1 1 1 1 1 1 1 1 1 0 1 3 6 7 och normalekvationen är [ 8 116 [ 8, A T A = 116 [ a b I Matlab löser vi (1) med kommandot \ enligt = [ 3395 15375 [ 3395, A T y = 15375 >> td=[-1 0 1 3 6 7 ; % t-data >> yd=[-075 03 3 56 7 6 8 ; % y-data >> A=[ones(size(td)) td; % Designmatrisen >> x=a\yd; a=x(1); b=x(); % Minsta-kvadratlösningen >> n=length(td); % Antalet mätdata >> e=norm(a*x-yd)/sqrt(n); % Kvadratiska medelfelet Vi kan nu rita upp följande figur 10 8 6 0 y = a + bt a = 15 b = 109 ε = 098 0 6 8 Vi mininmerar summan av kvadraterna på de lodräta sträckorna Uppgift 1 Antag att variablerna t och y uppfyller sambandet y = a + b t För att betämma koefficienterna a och b utför vi mätningar av t och y: (a) Lös normalekvationen (1) med minsta kvadratmetoden i Matlab Bestäm också kvadratiska medelfelet (b) Rita upp datapunkterna (t i, y i ) och den anpassade funktionen y = a + b t i samma figur
t 5 6 7 8 9 10 y 195888 303 5575 9131 319575 358116 Tabell 1: Mätvärden av y för vissa t 3 Tillämpning, Arrhenius ekvation Uppgift Arrhenius ekvation lyder k = k 0 e E/(RT) (a) Bestäm konstanten k 0 och kvoten E/R från informationen i Tabell Detta gör vi genom att logaritmera ekvationen så att en linjär relation mellan y = ln(k) och t = 1/T erhålls Denna blir på formen y = a + b t Använd Tabell till att generera datapunkter (t i,y i ), där t i = 1/T i och y i = ln(k i ) Bilda ett linjärt ekvationssystem och lös det med minsta kvadratmetoden Bestäm också kvadratiska medelfelet I Matlab ges ln(k) av log(k) (b) Rita ut datapunkterna(t i, y i ) och den anpassade funktionen y = a + b t i samma figur T[K 33 353 363 373 383 393 03 k[s 1 8 10 5 56 10 5 11 10 5 10 5 8 10 5 896 10 5 179 10 5 Tabell : Data till Arrhenius ekvation Allmän formulering Härnäst skall vi bestämma den kurva där f 1, f, f k mätdata y = c 1 f 1 (t) + c f (t) + + c k f k (t) är kända funktioner, som i minsta kvadratmening är bäst anpassad till givna f 1( t t 1 t y y 1 y y n Matrisformuleringen av det överbestämda ekvationssystem vi intresserar oss för ges av t 1 t 1 t 1 c 1 y 1 t t t c y ) f ( ) f k( ) } {{ } A (designmatrisen) c k = y n y Precis som tidigare finner vi minsta-kvadratlösningen genom att lösa normalekvationen (1) Låt oss återgå till vårt första exempel ovan och istället anpassa ett andragradspolynom, y = c 1 + c t + c 3 t, till givna mätpunkter Här är f 1 (t) = 1, f (t) = t, f 3 (t) = t och designmatrisen A och minsta-kvadratlösningen skapas i Matlab på liknande sätt som tidigare 3
>> td=[-1 0 1 3 6 7 ; % t-data >> yd=[-075 03 3 56 7 6 8 ; % y-data >> A=[ones(size(td)) td td^; % Designmatrisen >> x=a\yd; % Minsta-kvadratlösningen >> n=length(td); % Antalet mätdata >> e=norm(a*x-yd)/sqrt(n); % Kvadratiska medelfelet Vi kan nu rita figuren 10 8 6 0 y = a + bt c 1 = 0956 c = 187 c 3 = 019 ε = 059 0 6 8 Vi mininmerar summan av kvadraterna på de lodräta sträckorna Uppgift 3 Anpassa ett tredjegradspolynom till mätdata i uppgift 1 Rita ut datapunkter och den anpassade kurvan i samma figur och ange kvadratiska medelfelet Uppgift Lös uppgift 6610 i Lay Rita figur i Matlab! Uppgift 5 Tabellen nedan visar (en del av) utfallet y av ett försök då man varierar två faktorer s och t s 19 3 39 5 73 75 79 50 t 91 93 95 97 99 303 305 307 y 513 513 83 675 730 765 703 79 (a) Datafilen labdatamat på studiohemsidan innehåller hela uppsättningen data lagrad i tre variabler sd, td och yd Hämta filen och ladda in i Matlab med load och rita upp data med plot3 enligt >> load( labdata ) >> smin=min(sd); smax=max(sd); tmin=min(td); tmax=max(td); >> plot3(sd,td,yd, ro, linewidth,), hold on >> axis([smin smax tmin tmax), axis vis3d, box on Vänd och vrid för att se om data ligger nära ett plan
(b) Anpassa en linjär modell y = a + b s + c t till data med minsta-kvadratmetoden Rita ut, tillsammans med mätdata, det plan som beskriver modellen Om koefficienterna ligger samlade i en vektor c så ritar du upp modellen med >> y=@(s,t)c(1)+c()*s+c(3)*t; >> S=[smin smax smax smin; T=[tmin tmin tmax tmax; >> fill3(s,t,y(s,t), b, facealpha,0) >> xlabel( s ), ylabel( t ), zlabel( y(s,t) ), grid on Vänd och vrid för att se om ert plan ligger nära data 5 Import av data För att hantera mätdata behöver man bla kunna hantera olika fil-format Om import av data kan man läsa i Moore avsnitt 75 Matlab har en Import Wizard som man kan läsa om i Helpdesk Vi hinner inte i matematikkursen gå in mer på detta 6 Redovisning Denna vecka skall uppgifterna 1-5 redovisas för handledaren 5