如何解决Matlab错误Too many output arguments.
1、书上的代码如下:function [s, phis, ds, dphi, S] = qmin (phi, a, b, delta, epsilon)s0 = 1; maxj = 20; maxk = 30; big = 1e6; err = 1; k = 1;S(k) = s0; cond = 0; h = 1; ds = 0.00001;if (abs (s0) > 1e4), h = abs(s0) * (1e-4); endwhile (k < maxk && err > epsilon && cond ~= 5) f1 = (feval (phi, s0 + ds) - feval(phi, s0 - ds)) / (2 * ds) if(f1 > 0), h = -abs(h); end s1 = s0 + h; s2 = s0 + 2 * h; bars = s0; phi0 = feval(phi, s0); phi1 = feval (phi, s1); phi2 = feval(phi, s2); barphi = phi0; cond = 0; j = 0; while (j < maxj && abs (h) > delta && cond == 0) if (phi0 <= phi1), s2 = s1; phi2 = phi1; h = 0.5 * h; s1 = s0 + h; phi1 = feval (phi, s1); else if (phi2 < phi1), s1 = s2; phi1 = phi2; h = 2 * h; s2 = s0 + 2 * h; phi2 = feval (phi, 2); else cond = -1; end end j = j + 1; if (abs (h) > big || abs (s0) > big), cond = 5; end end if (cond == 5), bars = s1; barphi = feval (phi, s1); else d = 2 * (2 * phi1 - phi0 - phi2); if (d < 0), barh = h * (4 * phi1 - 3 * phi0 - phi2)/d; else barh = h / 3; cond = 4; end bars = s0 + barh; barphi = feval (phi, bars); h = abs (h); h0 = abs (barh); h1 = abs (barh - h); h2 = abs (barh - 2 * h); if (h0 < h), h = h0; end if (h1 < h), h = h1; end if (h2 < h), h = h2; end if(h == 0), h = barh; end if (h < delta), cond = 1; end if (abs (h) > big || abs (bars) > big), cond = 5; end err = abs (phi1 - barphi); s0 = bars; k = k+1; S(k) = s0; end if (cond == 2 && h < delta), cond = 3; endends = s0; phis = feval (phi, s);ds = h; dphi = err;end
2、在Matlab中新建一个M文件,名称为qmin
3、编译时出现如下错误提示:大意是输出参数太多
4、仔细检查一下代码,发现命令语句的输出参数中多了一个k参数
5、将命令语句中的K参数删除,再次运行便可成功输出结果了
6、注意:最优化方法与理论这本书的代码中有很多印刷错误的地方,大家平时要留意下