我再把我现在的程序发一遍完整的,这样子不会乱。
m文件:
function g4=f(beta0,x1,x2,T,R)
g1=beta0(1);
g2=beta0(2);
g3=beta0(3);
g4=beta0(4);
g4=exp(x2.*x2.*((((g(1)./(R.*T)).*(exp(-g(3).*g(1)./(R.*T))).^2)./((x1+(exp(-g(3).*g(1)./(R.*T))).*x2).^2))+(((g(2)./(R.*T)).*(exp(-g(3).*g(2)./(R.*T))).^2)./((x2+(exp(-g(3).*g(2)./(R.*T))).*x1).^2))))
程序代码:
x1=[0.01525 0.02059 0.02685 0.03417 0.04221 0.04958];
x2=[0.98475 0.97941 0.97315 0.96583 0.95779 0.95042];
T=[298.15 303.15 308.15 313.15 318.15 323.15];
R=[8.314 8.314 8.314 8.314 8.314 8.314];
beta0=[1,1,0.3,1];
[g,resnorm]=lsqcurvefit(@f,beta0,x1,x2,T,R)
运行后输出:
Warning: Length of lower bounds is > length(x); ignoring extra bounds.
> In checkbounds at 27
In optim\private\lsqncommon at 39
In lsqcurvefit at 149
In Untitled2 at 6
Warning: Length of upper bounds is > length(x); ignoring extra bounds.
> In checkbounds at 37
In optim\private\lsqncommon at 39
In lsqcurvefit at 149
In Untitled2 at 6
Exiting due to infeasibility: 4 lower bounds exceed the corresponding upper bounds.
g =
1.0000 1.0000 0.3000 1.0000
resnorm =
[]
就是初始值定义什么就出什么。
或者这个应该怎么写呢,