多谢,我查了一下,1stopt可以给参数加约束,能不能帮忙再计算一下,如果方便的话可不可以传一下破解的1stopt,可以用钱买。
x1=[10,20,30,40,50,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40]';
x2=[8,8,8,8,8,4,6,8,10,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8]';
x3=[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,1,2,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5]';
x4=[0,0,0,0,0,0,0,0,0,0,0,0,0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8]';
x=[x1,x2,x3,x4];
S=[2,2.8,3.5,4.5,4.8,3,3.3,4.5,6.8,4.5,3,2,4.5,5,5.7,6,6.3,6.5,7.5,7.2,6.8,6.2,5,4.2,3.5,3.4,1.1,0,0,0,0]';
a0=[8.758,0.073,-1.571,0.069,0.412,13.128,1.195,0.566]';
fun=@(a,x)a(1)+a(2)*x1+a(3)*x2+a(4)*exp(a(5)*x3)+a(6)/a(7)/sqrt(pi./2)*exp(-2.*(x4-a(8)).^2/a(8)/a(8));
[a,r,j]=nlinfit(x,S,fun,a0)
y1=fun(a,x)
a(2)>0;a(3)<0;a(4)>0;a(5)>0;a(6)>0;0.8<a(7)<1.2;0.5<a(8)<0.8; |