一連の測定値があり、線形近似を作成し始めました (このプロットのように)。パラメーターの線形最小二乗推定と、V_{max}
MatlabK_{m}
のこのコードから:
data=[2.0000 0.0615
2.0000 0.0527
0.6670 0.0334
0.6670 0.0334
0.4000 0.0138
0.4000 0.0258
0.2860 0.0129
0.2860 0.0183
0.2220 0.0083
0.2200 0.0169
0.2000 0.0129
0.2000 0.0087 ];
x = 1./data(:,1);
y = 1./data(:,2);
J = [x,ones(length(x),1)];
k = J\y;
vmax = 1/k(2);
km = k(1)*vmax;
lse = (vmax.*data(:,1))./(km+data(:,1));
plot(data(:,1),data(:,2),'o','color','red','linewidth',1)
line(data(:,1),lse,'linewidth',2)
これにより、問題なく見えるフィット感が得られます。次に、同じことをしたかったのですが、非線形最小二乗法を使用しました。ただし、フィットは常に間違っているように見えます。その試みのコードは次のとおりです。
options = optimset('MaxIter',10000,'MaxFunEvals',50000,'FunValCheck',...
'on','Algorithm',{'levenberg-marquardt',.00001});
p=lsqnonlin(@myfun,[0.1424,2.5444]);
lse = (p(1).*data(:,1))./(p(2)+data(:,1));
plot(data(:,1),data(:,2),'o','color','red','linewidth',1)
line(data(:,1),lse,'linewidth',2)
これは、M-ファイルでこの関数を必要とします:
function F = myfun(x)
F = data(:,2)-(x(1).*data(:,1))./x(2)+data(:,1);
コードを実行すると、私の問題が表示されます。しかし、うまくいけば、私とは異なり、私が間違っていることがわかります。