QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 7019|回复: 0
打印 上一主题 下一主题

牛顿法求函数最小值程序

[复制链接]
字体大小: 正常 放大

9

主题

4

听众

1673

积分

升级  67.3%

  • TA的每日心情
    奋斗
    2018-4-11 22:36
  • 签到天数: 490 天

    [LV.9]以坛为家II

    邮箱绑定达人

    跳转到指定楼层
    1#
    发表于 2012-2-13 17:54 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta |邮箱已经成功绑定
    本人自编了一个用牛顿法求解函数最小值的程序:
    global f
    global dfx
    global dfy
    f='exp(x^2+y^2-x*y)*cos(x+y)';
    X=input('请输入初始值[x,y]:');
    r=grad(X);
    s=hesse(X);
    k=1;
    epsilon=0.01;
    while sqrt(sum(r.^2))>=epsilon
        d=-inv(s)*r;
        X=X+d;
        k=k+1;
    end
    disp('[x,y]=');disp([X(1),X(2)]);
    disp('k=');disp(k);
    disp('fobj=');disp(exp(X(1)^2+X(2)^2-X(1)*X(2))*cos(X(1)+X(2)));

    其中函数grad为:
    function r=grad(X)
    global f
    global dfx
    global dfy
    dfx=diff(f,X(1));dfy=diff(f,X(2));
    r=[dfx;dfy];

    函数hesse为:
    function s=hesse(X)
    global f
    global dfx
    global dfy
    dfxx=diff(dfx,X(1));dfxy=diff(dfx,X(2));
    dfyx=diff(dfy,X(1));dfyy=diff(dfy,X(2));
    s=[dfxx,dfxy;dfyx,dfyy];

    但当我输入一些初始值比如[1,2],[1,3],[1,4]等等之类的时候。就会报错:
    ??? Error using ==> vertcat
    All rows in the bracketed expression must have the same
    number of columns.

    Error in ==> grad at 6
    r=[dfx;dfy];
    Error in ==> newton_method at 6
    r=grad(X);

    如果初始值里面含有零分量(比如[0,1]),就会报错:
    ??? Error using ==> diff
    Difference order N must be a positive integer scalar.

    Error in ==> grad at 5
    dfx=diff(f,X(1));dfy=diff(f,X(2));

    Error in ==> newton_method at 6
    r=grad(X);

    求高手帮我分析一下究竟是错在什么地方,谢谢!
    p.s.如果用syms定义了x和y,再去定义函数f,即:
    syms x y;
    f=exp(x^2+y^2-x*y)*cos(x+y);

    运行时会报错:
    Function 'ge' is not defined for values of class 'sym'.
    难道大于等于在符号变量的运算中就不能用了吗?
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    暂无签名。
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2025-5-26 11:28 , Processed in 0.544926 second(s), 55 queries .

    回顶部