Minstakvadratmetoden gör det möjligt att finna en i viss mening bästa lösning till
ett överbestämt ekvationssystem, dvs ett system med fler ekvationer än variabler.
Sådana system saknar normalt lösningar.
Men genom att inte kräva en exakt lösning utan istället
en lösning som minimerar summan av kvadraterna av felen i varje ekvation,
får man användbara resultat.
Ofta används denna metod vid anpassning av kurvor till givna punkter.
Exempel:
Antag att man vill anpassa en rät linje, y=ax+b, till punkterna
((-1,-1), (1,1), (3,5) och (7,9).
Man får då det överbestämda systemet (a,b är variabler):
-a+b=-1, a+b=1, 3a+b=5, 7a+b=9.
Vi matar in systemmatrisen A till detta system .
Först laddar vi in linalg-paketet:
> with(linalg):
> A:=matrix(4,2,[-1,1,1,1,3,1,7,1]);
Högerledsvektorn h måste här matas in som en vektor (inte som matris):
> h:=vector([ -1,1,5,9]);
Sedan är det bara att använda kommandot 'leastsqrs' på A och h.
Man får då den vektor v=(a,b) som löser systemet i minstakvadratmetodens mening.
> v:=leastsqrs(A,h);
För att få det kvadratiska medelfelet, m, som är ett mått på hur
bra anpassningen blev (litet medelfel=bra anpassning)
bildar vi den vektor s vars komponenter är skillnaderna mellan
vänster- och högerleden i resp. ekvation:
> s:=evalm(A&*v-h);
Det kvadratiska medelfelet m är längden av denna vektor, |s|, dividerad med
roten ur antalet ekvationer.
Längden av vektorn s fås med kommandot 'norm(s,2);'.
För att få m dividerar vi med 'sqrt(4)', eftersom vi har 4 ekvationer.
> m:=norm(s,2)/sqrt(4);
Därmed är problemet löst.
>