广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

    如何解决Matlab错误Too many output arguments.

    来源:网络收集  点击:  时间:2024-09-11
    【导读】:
    最优化方法与理论这本书的代码中有很多印刷错误的地方,大家平时要留意下复制最优化理论书上的源代码,用Matlab编译时出现如下错误:??? Error using == qmin Too many output arguments.工具/原料moreMatlab方法/步骤1/6分步阅读

    书上的代码如下:

    function = 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); end

    while (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; end

    end

    s = s0; phis = feval (phi, s);

    ds = h; dphi = err;

    end

    2/6

    在Matlab中新建一个M文件,名称为qmin

    3/6

    编译时出现如下错误提示:

    大意是输出参数太多

    4/6

    仔细检查一下代码,发现命令语句的输出参数中多了一个k参数

    5/6

    将命令语句中的K参数删除,再次运行便可成功输出结果了

    6/6

    注意:最优化方法与理论这本书的代码中有很多印刷错误的地方,大家平时要留意下

    注意事项

    如果对本经验有什么不清楚的地方或遇到什么问题,可能是我描述的问题,您可以给我评论指教哦。我会及时给予回复的。

    matlabmany
    本文关键词:

    版权声明:

    1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

    2、本站仅提供信息发布平台,不承担相关法律责任。

    3、若侵犯您的版权或隐私,请联系本站管理员删除。

    4、文章链接:http://www.1haoku.cn/art_1209882.html

    相关资讯

    ©2019-2020 http://www.1haoku.cn/ 国ICP备20009186号05-31 15:49:43  耗时:0.721