matlab非线性拟合求参数,参数有限值,如何求

来源:百度知道 编辑:UC知道 时间:2024/05/24 02:43:38
数据如下x=[1.898 2.548 3.866 3.933 4.353 ];
y=[0.260 0.565 1.620 2.465 3.575 ]; 拟合曲线为ln(ax-1)=lnb+clny
求方程中各参数,都为实数,且0<c<1, a>0, b>0,
本人编程如下,但不知如何限制参数范围,请高手解答,最好能给出编程!

clc;clear
x=[1.898 2.548 3.866 3.933 4.353 ];
y=[0.260 0.565 1.620 2.465 3.575 ];
%把原方程ln(ax-1)=lnb+clny变形为:y=((ax-1)/b)^(1/c)
fun=inline('((a(1)*t-1)/a(2)).^a(3)','a','t')
BETA0=[0.1 0.1 0.1];
beta=nlinfit(x,y,fun,BETA0)
xx=1.8:0.1:4.5;
yy=fun(beta,xx);
plot(x,y,'o',xx,yy)

就是拟合
ax-1=b*y^c
即x=B*y^c+A,其中A=1/a为(0,inf),B=b/a为(0,inf),c为(0,1),在命令窗口输入cftool,然后用power选项拟合
在fit options可以设置各个参数的范围