Model Curve
|
|
|
MODEL curvea ! linear regressions for L1 and L (infinity) norms |
|
SET |
|
|
nopts = {1 .. 19}; |
! number of data points |
|
DATA |
|
|
xvalue[nopts] << "xfile.dat", |
|
|
yvalue[nopts] << "yfile.dat"; |
|
VARIABLES |
|
|
a free, |
! coefficients in |
|
|
b free, |
! linear relation |
|
|
maxdev, |
! maximum deviation variable |
|
|
slack[nopts], |
! negative error |
|
|
surp[nopts]; |
! positive error |
|
OBJECTIVE |
|
|
MINIMIZE sumdev = sum{i in nopts} (slack[i] + surp[i]); |
! minimise L1 norm |
|
|
! MINIMIZE minmax = maxdev; |
! minimise L (infinity) norm |
|
CONSTRAINTS |
|
|
dev{i in nopts} : xvalue[i]*b + a + slack[i] |
! linear relation |
|
|
- surp[i] = yvalue[i], |
|
|
|
ula{i in nopts} : maxdev-slack[i] >= 0, |
! maximum deviation >= absolute deviations |
|
|
ulb{i in nopts} : maxdev-surp[i] >= 0; |
|
|
END MODEL |
|
|
solve curvea; |
|
|
print solution for curvea >> "curvea.sol"; |
|
|
quit; |
|
|
|
|
|
MODEL curveb ! quadratic regressions for L1 and L (infinity) norms |
|
SET |
|
|
nopts = {1 .. 19}; |
! number of data points |
|
DATA |
|
|
xvalue[nopts] << "xfile.dat", |
|
|
yvalue[nopts] << "yfile.dat"; |
|
VARIABLES |
|
|
a free, |
! coefficients |
|
|
b free, |
! in quadratic |
|
|
c free, |
! relation |
|
|
maxdev, |
! maximum deviation variable |
|
|
slack[nopts], |
! negative error |
|
|
surp[nopts]; |
! positive error |
|
OBJECTIVE |
|
|
! MINIMIZE sumdev = sum{i in nopts} (slack[i] + surp[i]); |
! minimise L1 norm |
|
|
MINIMIZE minmax = maxdev; |
! minimise L (infinity) norm |
|
CONSTRAINTS |
|
|
dev{i in nopts} : (xvalue[i]*xvalue[i])*c + xvalue[i]*b |
! quadratic relation |
|
|
+ a + slack[i] - surp[i] = yvalue[i], |
|
|
|
ula{i in nopts} : maxdev-slack[i] >= 0, |
! maximum deviation >=absolute deviations |
|
|
ulb{i in nopts} : maxdev-surp[i] >= 0; |
|
|
END MODEL |
|
|
solve curveb; |
|
|
print solution for curveb >> "curveb.sol"; |
|
|
quit; |
|
|
|
xfile.dat |
|
[0.0,0.5,1.0,1.5,1.9,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.6,7.0,7.6,8.5,9.0,10.0] |
|
|
|
yfile.dat |
|
[1.0,0.9,0.7,1.5,2.0,2.4,3.2,2.0,2.7,3.5,1.0,4.0,3.6,2.7,5.7,4.6,6.0,6.8,7.3] |
|
|
|
|