HP Prime: Linear Exponential Combination Fit
The program LINEXPREG attempts to fit bivariate data to the curve:
y = a + b * x + c * e^x
The LSQ (least square) function is used. The output is a list of three matrices:
* A matrix of coefficients: [ [ a ] [ b ] [ c ] ]
* A matrix of y values entered
* A matrix of predicted y values
HP Prime Program LINEXPREG
EXPORT LINEXPREG(lx,ly)
BEGIN
// 2020-11-17 EWS
// x list, y list
LOCAL n,lx2,lx3,mx,my,k,mr,mq;
n:=SIZE(lx);
lx2:=e^(lx);
lx3:={};
FOR k FROM 1 TO n DO
lx3:=CONCAT(lx3,{1,lx(k),lx2(k)});
END;
mx:=list2mat(lx3,3);
my:=list2mat(ly,1);
mq:=LSQ(mx,my);
mr:=mq(1,1)+mq(2,1)*lx+
mq(3,1)*e^(lx);
mr:=list2mat(mr,1);
RETURN {mq,my,mr};
END;
Example
x list: {0, 1, 2, 3, 4, 5}
y list: {2, 7, 13, 18, 26, 34}
LINEXPREG({0, 1, 2, 3, 4, 5},{2, 7, 13, 18, 26, 34})
Results: {coefficients, y values, predicted y values}
coefficients:
[ [ 1.74935499143 ]
[ 5.39455446221 ]
[ 3.66584105034E-2 ] ]
y values:
[ [ 2 ]
[ 7 ]
[ 13 ]
[ 18 ]
[ 26 ]
[ 34 ] ]
predicted y values:
[ [ 1.78601340193 ]
[ 7.24355734477 ]
[ 12.8093349675 ]
[ 18.6693222357 ]
[ 25.3290542368 ]
[ 34.1627178129 ] ]
Equation:
y = 1.74935499143 + 5.39455446221 * x + 3.66584105034E-2 * e^x
On to the last month of 2020...
Eddie
All original content copyright, © 2011-2020. Edward Shore. Unauthorized use and/or unauthorized distribution for commercial purposes without express and written permission from the author is strictly prohibited. This blog entry may be distributed for noncommercial purposes, provided that full credit is given to the author.