Minstakvadratproblem

I denna övning kommer Du att få ställa upp och lösa både linjära och ickelinjära minstakvadratproblem.

Greve Rumford utförde 1798 följande experiment. Ett kanonrör uppvärmdes till 130° F genom att en trubbig borr vreds runt av hästar i 30 minuter. Sedan fick röret svalna medan man då och då mätte temperaturen T i röret. Man fick följande mätserie:

t (min.) 4 5 7 12 14 16 20 24 28 31 34 37.5 41
T (°F) 126 125 123 120 119 118 116 115 114 113 112 111 110

Den omgivande temperaturen Tomg var 60 °F. Enligt Newtons avsvalningslag gäller att:

dT(t) / dt = -ß (T(t) - Tomg)

Om vi löser differentialekvationen får vi:

T(t) = Tomg + (T(0) - Tomg) e-ß t,  t >= 0

Vi vill bestämma parametern ß med hjälp av mätvärdena. Du kommer att lösa detta anpassningsproblem på tre olika sätt nedan.

Grundproblemet är dock att bestämma ß givet tider och temperaturer. Som problemet är formulerat ovan ingår inte parametern ß linjärt (problemet passar inte in i den teori vi såg på under föreläsningen). Vi kan dock formulera ett så kallat ickelinjärt minstakvadratproblem:
 
Givet tider och temperaturer (tk, Tk), minimera kvadratsumman av:

(T1 - Tomg - (T(0) - Tomg) e-ß t1)2 + (T2 - Tomg - (T(0) - Tomg) e-ß t2)2 +...

med avseende på ß. Som tur är, finns ett färdigt Matlabprogram (lsqnonlin) som kan göra detta åt oss. Du kommer att använda detta program i andra och tredje deluppgiften. I första deluppgiften kommer Du att transformera det ickelinjära problemet till ett problem där parametern ingår linjärt. Du kan då använda teorin från föreläsningen.  

  1. Parametern ß ingår inte linjärt i T(t), men genom att skriva om uttrycket kan man få ett linjärt problem (ledning flytta en term i uttrycket och applicera logaritmfunktionen). Detta linjära problem kan lösas på vanligt sätt (med \ ). (Eftersom vi bildar temperaturdifferenser i Newtons lag spelar det ingen roll att vi arbetar i °F och inte i K).
    Formulera problemet på vanligt sätt med A, x och b samt tala om vad som svarar mot dessa tre storheter i det aktuella problemet.
     

  2. Använd Matlab-rutinen lsqnonlin (ge kommandot help lsqnonlin) för att lösa det ickelinjära problemet direkt (dvs. utan att skriva om problemet).
     
    lsqnonlin
    ingår i den så kallade optimeringstoolboxen (något som inte följer med standard-Matlab).
     
    Hur man skriver Matlabfunktioner. Läs detta först.
     
    Så här används lsqnonlin.
     
    lsqnonlin kräver ett startvärde på parametern. Vad är ett lämpligt startvärde i detta problem?
     

  3. Ovanstående approximationer stämmer inte så bra (om Du plottar upp mätvärden och approximationer). Kanske har några värden blivit fel avskrivna (något kan ha tappats bort under de 200 år sedan experimentet utfördes). Kan Du komma på någon annan, fysikalisk, förklaring till diskrepansen?
    Betrakta nu även omgivningstemperaturen som okänd och lös det ickelinjära minstakvadratproblemet med avseende på både ß och Tomg. Vad är lämpliga startvärden?

Lös de tre problemen ovan, plotta sedan mätpunkter och de tre approximationerna i samma diagram. Spara parametervärdena. Kommentarer?

I verkliga experiment eller forskning får man givetvis inte justera data som i deluppgift tre. Sådana saker har dock hänt, läs (om Du vill) om Schönskandalen.


Back