|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
以下是M文件中定义的内容:
function F = myfun(x)
c=[0.18041 0.2471 0.30645 0.37225 0.48656 0.49793 0.54194 0.66045 0.79251 0.87882];
m=[0.27111 0.32536 0.21723 0.21939 0.20962 0.15835 0.14626 0.11133 0.087731 0.036902];
k = 1:10;
F=log(m(k)/betainc(c(k),x(1),x(2)));
——————————————————————————————————————————————————————————
以下是调用最小二乘法求参数x(1),x(2)的语句:
x0=[10,20]
[x,resnorm] = lsqnonlin(@myfun,x0)
——————————————————————————————————————————————————————————
为什么总是返回错误,代码如下:
Warning: Large-scale method requires at least as many equations as variables;
switching to line-search method instead. Upper and lower bounds will be ignored.
> In optim\private\lsqncommon at 160
In lsqnonlin at 147
??? Error using ==> betainc
Z must be real and nonnegative.
Error in ==> myfun at 8
F=log(m(k)/betainc(c(k),x(1),x(2)));
Error in ==> optim\private\nlsq at 337
CostFunction = feval(funfcn{3},x,varargin{:});
Error in ==> optim\private\lsqncommon at 216
[x,FVAL,JACOB,EXITFLAG,OUTPUT,msg] = ...
Error in ==> lsqnonlin at 147
[x,Resnorm,FVAL,EXITFLAG,OUTPUT,LAMBDA,JACOB] = ...
——————————————————————————————————————————————————————————————————————
如果我把M文件中的log去掉就能返回结果。不知道这错误代码说的是什么?请高手帮我看看。
我不知道是我不会用log函数呢。还是我的M文件中有其它的错误。
[ 本帖最后由 hjc421421 于 2008-11-4 15:38 编辑 ] |
|