# [Matlab] Which is the good solution My vs. School - curve fitting?

• MATLAB
Hy, I wonder wich is the good solution for this problem:

Nonlinear least square problem: function: y = x / (a + b.x) linearization: 1/y = a/x + b substitution: v = 1/y , u = 1/x >> model v = b + a.u

What we did in school:

x = [1 2 4 7]; y = [2 1 0.4 0.1];
v=1./y;
u=1./x;
n = length(x);
A=[ones(n,1), u']
xbeta=A\v'
Lbeta=xbeta;
beta0=flipud(Lbeta)
beta=fminsearch('kritfun',beta0)
r = [kritfun(beta0) , kritfun(beta)]

+ kritfun.m

function z=kritfun(beta)
a=beta(1);
b=beta(2);
x = [1 2 4 7];
y = [2 1 0.4 0.1];
error = y - x./(a + b*x );
z = sum((error .^2 ));

in ML we get : xbeta =

7.3658
-8.1692
beta =

1.0e+014 *

-8.2085
4.1043
r =

11.0600 4.1700

but when I try in Curve Fitting tool too check the soulution , I get something else ..according to this video: too call CF I typed to prompt >>cftool

When I try this I get the same number like in the Curve fitting tool , the a,b parameters is my beta(1),beta(2) and the SSE number is my r(2) ..what was same when I tried this:

x = [1 2 4 7];
y = [2 1 0.4 0.1];

%u = 1./x; %these u and v I dont use it...but I didnt know when not using substituion is correct the beta and r(2) , but when I didnt use I get same numbers lik in the Curve Fitting tool
%v = 1./y;

n = length(x);
X = [ ones(n,1), x'];
btr = X\y'

beta0 = flipud(btr)'
beta = fminsearch('mnsNLcFUN',beta0)
r = [mnsNLcFUN(beta0), mnsNLcFUN(beta)]

+ mnsNLcFUN.m function is:

function z=mnsNLcFUN(beta)
a=beta(1);
b=beta(2);

x = [1 2 4 7];
y = [2 1 0.4 0.1];

error = y - x./(a+b.*x);
z = sum((error .^2 ));