# HP Forums

Full Version: Linear Exponential Combination Fit
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
http://edspi31415.blogspot.com/2020/11/h...ation.html

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

Code:
```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
Hi, Eddie

Thanks for the post. I did not know HP Prime had LSQ function.

It might be simpler not to create a flatten list (with CONCAT), then reconstruct the matrix.
We could build the matrix, functional style:

CAS> lx = range(6)
CAS> ly = [2, 7, 13, 18, 26, 34]
CAS> fit = LSQ(transpose([(lx-lx) .+ 1., lx, e^lx]), ly)

[[1.74935499144],[5.39455446221],[3.66584105036e−2]]

CAS> col(fit,1) * [1, x, e^x]

3.66584105036e−2*e^x + 5.39455446221*x + 1.74935499144
Reference URL's
• HP Forums: https://www.hpmuseum.org/forum/index.php
• :