从一个例子出发
已知数据
y=[1.2 1.5 1.8 2.2 2.7 3.6 4.16 4.79 5.26 5.64 10.5 11.1 11.6 11.7 26.9 41.2 ]
x=[1.5 1.8 2.1 2.5 3 3.8 4.7 5.3 5.8 6.1 14.1 16.2 18.6 19.3 36.1 60.5]
散点图为
x、y满足的关系为:
y ( x ) = ∫ 0 x a d x 1 + b / x \ y(x)=\int_0^x \frac{adx} {1+b/x}y(x)=∫0x1+b/xadx
使用fitnlm函数
函数的用法可以具体参考:
https://ww2.mathworks.cn/help/stats/fitnlm.html?requestedDomain=cn
这里使用:
mdl = fitnlm(x,y,modelfun,beta0)形式
其中modelfun是函数句柄,也就是我们需要自己定义的y与x之间的关系
这里使用function形式,也可以单独保存为一个.m文件
function y=myfun(p,x)
N=size(x,1); %传入进来的是x向量
y=zeros(N,1); %需要计算每一个y分量
Nn=1e5; %自定义积分间隔,相当于把积分形式化为求和
Mn=1/Nn;
for i=1:N
for j=1:(x(i)*Nn)
y(i)=y(i)+p(1)*Mn/(1+p(2)/(Mn*j)); %求和代