alpar@9: /*Yet Another Curve Fitting Solution alpar@9: alpar@9: Obviously this solution produces the same answer alpar@9: as examples/cflsq.mod alpar@9: alpar@9: Nigel_Galloway@operamail.com alpar@9: February 1st., 2009 alpar@9: */ alpar@9: set Sample; alpar@9: param Sx {z in Sample}; alpar@9: param Sy {z in Sample}; alpar@9: alpar@9: var a; alpar@9: var b; alpar@9: alpar@9: equalz1 :sum{z in Sample} a*Sx[z]*Sx[z] + sum{z in Sample} b*Sx[z] = sum{z in Sample} Sy[z]*Sx[z]; alpar@9: equalz2 :sum{z in Sample} a*Sx[z] + sum{z in Sample} b = sum{z in Sample} Sy[z]; alpar@9: alpar@9: solve; alpar@9: alpar@9: printf "\nbest linear fit is:\n\ty = %f %s %fx\n\n", b, if a < 0 then "-" else "+", abs(a); alpar@9: alpar@9: data; alpar@9: alpar@9: param: alpar@9: Sample: Sx Sy := alpar@9: 1 0 1 alpar@9: 2 0.5 0.9 alpar@9: 3 1 0.7 alpar@9: 4 1.5 1.5 alpar@9: 5 1.9 2 alpar@9: 6 2.5 2.4 alpar@9: 7 3 3.2 alpar@9: 8 3.5 2 alpar@9: 9 4 2.7 alpar@9: 10 4.5 3.5 alpar@9: 11 5 1 alpar@9: 12 5.5 4 alpar@9: 13 6 3.6 alpar@9: 14 6.6 2.7 alpar@9: 15 7 5.7 alpar@9: 16 7.6 4.6 alpar@9: 17 8.5 6 alpar@9: 18 9 6.8 alpar@9: 19 10 7.3 alpar@9: ; alpar@9: alpar@9: end;