Enkel funktionsanpassning via ett generellt optimeringsprogram --------------------------------------------------------------- av Peter Lohmander 2003-04-20 Detta dokument visar hur två alternativa funktionsformer kan användas för att beskriva samma data. I bägge fallen minimeras Z, summan av de kvadrerade avvikelserna från funktionen. Den första funktionen är linjär och den andra funktionen är exponentiell. I bägge fallen användes det generella optimeringsprogrammet Lingo från Lindo.com . Man kan bestämma exponentiella funktioner via vanliga linjära regressionsprogram också om man först logatitmerar. Då minimeras dock summan av de kvadrerade avvikelserna från den logaritmerade funktionen och ej från den verkliga funktionen. Den metod som beskrives här nedan är såväl enkel som korrekt. Notera att Z blir lägre om vi väljer den exponentiella funktionsformen nedan. --------------------------------------------------- ! Funktionsanpassning via alternativa metoder; ! Peter Lohmander 2003-04-20; ! FunkAnp1; model: sets: Obs/1..5/:X,Y; endsets min = Z; Z = @SUM(Obs(i): (Y(i) - a - b*X(i))^2 ); @free(a); @free(b); data: X = 0 20 40 60 80; Y = 92 73 56 52 49; enddata end Local optimal solution found at step: 167 Objective value: 152.3000 Variable Value Reduced Cost Z 152.3000 0.0000000 A 85.79999 0.0000000 B -0.5349999 0.0000000 X( 1) 0.0000000 0.0000000 X( 2) 20.00000 0.0000000 X( 3) 40.00000 0.0000000 X( 4) 60.00000 0.0000000 X( 5) 80.00000 0.0000000 Y( 1) 92.00000 0.0000000 Y( 2) 73.00000 0.0000000 Y( 3) 56.00000 0.0000000 Y( 4) 52.00000 0.0000000 Y( 5) 49.00000 0.0000000 Row Slack or Surplus Dual Price 1 152.3000 1.000000 2 -0.1136868E-12 -1.000000 ---------------------------------------------------------------------- ! Funktionsanpassning via alternativa metoder; ! Peter Lohmander 2003-04-20; ! FunkAnp2; model: sets: Obs/1..5/:X,Y; endsets min = Z; Z = @SUM(Obs(i): (Y(i) - @EXP(a + b*X(i)) )^2 ); @free(a); @free(b); a > 0; b < 0; data: X = 0 20 40 60 80; Y = 92 73 56 52 49; enddata end Local optimal solution found at step: 54 Objective value: 79.86179 Variable Value Reduced Cost Z 79.86179 0.0000000 A 4.487082 0.1140141E-05 B -0.8868183E-02 0.0000000 X( 1) 0.0000000 0.0000000 X( 2) 20.00000 0.0000000 X( 3) 40.00000 0.0000000 X( 4) 60.00000 0.0000000 X( 5) 80.00000 0.0000000 Y( 1) 92.00000 0.0000000 Y( 2) 73.00000 0.0000000 Y( 3) 56.00000 0.0000000 Y( 4) 52.00000 0.0000000 Y( 5) 49.00000 0.0000000 Row Slack or Surplus Dual Price 1 79.86179 1.000000 2 0.0000000 -1.000000 3 4.487082 0.0000000 4 0.8868183E-02 -0.2273737E-04 ---------------------------------------------------------------------------