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.
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.
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).
ingår i den så kallade optimeringstoolboxen
(något som inte följer med standard-Matlab).
lsqnonlin
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?
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.