用matlab求y=100-100*exp(-b*x^a)的参数a,b

数据为x={3,10,20,30,40},y={0.024,0.129,0.163,0.201,0.268}

第1个回答  2010-05-02
可以用非线性最小二乘法。由于本问题的特殊性,可以转化为线性最小二乘法来求解。

首先,将原函数变形为:
ln(100-y)-ln(100)=-b*x^a
ln(100/(100-y))=b*x^a 记z=ln(100/(100-y)),则:
ln(z)=ln(b)+a*ln(x) 记Y=ln(z),X=ln(x),beta=ln(b)则:
Y=beta+a*X

然后线性拟合函数polyfit(X,Y,1).(matlab是用最小二乘拟合的)

具体的m文件:
clc;clear;

x=[3,10,20,30,40];
y=[0.024,0.129,0.163,0.201,0.268];
X=log(x);
Y=log(log(100./(100-y)));

p=polyfit(X,Y,1);
a=p(1)
beta=p(2);
b=exp(beta)
相似回答
大家正在搜