matlab - Exponential curve fitting without the Curve Fitting toolbox? -


i have data points need fit exponential curve of form

y = b * exp(a/x) 

(without of curve fitting toolbox).

what have tried far linearize model applying log, results in

log(y/b) = a/x  log(y) = a/x + log(b) 

i can write in form

y = ax + b 

now, if neglect b, able solve with

a = pseudoinverse (x) * y 

but stuck values of b...

fitting curve of form

y = b * exp(a / x) 

to data points (xi, yi) in least-squares sense difficult. cannot use linear least-squares that, because model parameters (a , b) not appear in affine manner in equation. unless you're ready use nonlinear-least-squares method, alternative approach modify optimization problem modified problem can solved using linear least squares (this process called "data linearization"). let's that.

under assumption b , yi's positive, can apply natural logarithm both sides of equations:

log(y) = log(b) + / x 

or

a / x + log(b) = log(y) 

by introducing new parameter b2, defined log(b), becomes evident parameters a , b2 appear in linear (affine, really) manner in new equation:

a / x + b2 = log(y) 

therefore, can compute optimal values of parameters using least squares; have left construct right linear system , solve using matlab's backslash operator:

a = [1 ./ x, ones(size(x))]; b = log(y); params_ls = \ b; 

(i'm assuming x , y column vectors, here.)

then, optimal values (in least-squares sense) modified problem given by:

a_ls = params_ls(1); b_ls = exp(params_ls(2)); 

although values not, in general, optimal original problem, "good enough" in practice. if needed, can use them initial guesses iterative nonlinear-least-squares method.


Comments

Popular posts from this blog

css - SVG using textPath a symbol not rendering in Firefox -

Java 8 + Maven Javadoc plugin: Error fetching URL -

order - Notification for user in user account opencart -