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

Join the discussion
Registration is free. Ask a follow-up in this thread, or start your own.
2 replies · 2K views
artiny
Messages
6
Reaction score
0
Hy, I wonder which 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 don't 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 ));
 
Physics news on Phys.org
Thanks for the post! Sorry you aren't generating responses at the moment. Do you have any further information, come to any new conclusions or is it possible to reword the post?
 
somewho said that is more possible way to do the linearization...and what we did is not the same as Matlab makes ,...or I don't know what else..