24小时热门版块排行榜    

查看: 1324  |  回复: 10

a364448242

新虫 (初入文坛)

[求助] 请问一下matlab这个是什么问题 已有2人参与

是要整成双精度么~~怎么破。菜鸟求教。谢谢

请问一下matlab这个是什么问题
1.jpg


请问一下matlab这个是什么问题-1
2.jpg
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

生如夏花ZJU

铜虫 (初入文坛)

【答案】应助回帖


感谢参与,应助指数 +1
fegg7502: 金币+1, 应助指数+1, 3ks 2014-06-19 08:04:35
这个调试一下应该就能看出来的。在出错的那一行前面设个断点,运行到断点处就可以在workspace里看x的属性。
因为你这个前面调用过fun(x0)没问题,那么问题最可能是在x= fminunc('fun',x0);这一句了。
生如夏花之绚烂,死如秋叶之静美
7楼2014-06-18 23:03:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖


感谢参与,应助指数 +1
fegg7502: 金币+1, 3ks 2014-06-19 08:04:07
fun 没定义
给出完整的程序看看。
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
2楼2014-06-18 18:49:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

a364448242

新虫 (初入文坛)


fegg7502: 金币+1, 鼓励交流 2014-06-19 08:04:15
引用回帖:
2楼: Originally posted by 月只蓝 at 2014-06-18 18:49:08
fun 没定义
给出完整的程序看看。

clc
tic
x0=input('请输入初始点(形式如[0 0]):');
x0=x0';
disp('变尺度法求解无约束最优化问题,本程序以Rosenbrock函数为例');
disp('1-----Armijo搜索');
disp('2-----Armijo_goldstein搜索');
tt=input('请您选择搜索方法\n');
disp('1-----DFP校正公式');
disp('2-----Symmetric Rank 1校正公式');
disp('3-----BFGS校正公式');
zz=input('请您选择所用的系数公式\n');
disp('正在计算,请稍等……');
f0=fun(x0);
g0=gfun(x0);
p0=-gfun(x0);
bcd(x0,tt,zz);
disp('---------调用系统函数相比较-----------');
x= fminunc('fun',x0);
f=fun(x);
disp('最小值时的迭代点 :');
        x
        disp('函数的最小值为:');
        f

disp('CPU运行时间:')
disp('-------------结束-------------');
toc
3楼2014-06-18 19:46:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

引用回帖:
3楼: Originally posted by a364448242 at 2014-06-18 19:46:28
clc
tic
x0=input('请输入初始点(形式如):');
x0=x0';
disp('变尺度法求解无约束最优化问题,本程序以Rosenbrock函数为例');
disp('1-----Armijo搜索');
disp('2-----Armijo_goldstein搜索');
tt=input('请 ...

gfun的定义呢
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
4楼2014-06-18 20:31:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

引用回帖:
3楼: Originally posted by a364448242 at 2014-06-18 19:46:28
clc
tic
x0=input('请输入初始点(形式如):');
x0=x0';
disp('变尺度法求解无约束最优化问题,本程序以Rosenbrock函数为例');
disp('1-----Armijo搜索');
disp('2-----Armijo_goldstein搜索');
tt=input('请 ...

以及bcd的定义
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
5楼2014-06-18 20:31:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖


fegg7502: 金币+1, 应助指数+1, 鼓励交流 2014-06-19 08:04:27
你这个函数涉及的函数比较多,你把所有的函数都放在matlab的工作目录下试试看看。

» 本帖已获得的红花(最新10朵)

MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
6楼2014-06-18 20:33:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

a364448242

新虫 (初入文坛)

引用回帖:
4楼: Originally posted by 月只蓝 at 2014-06-18 20:31:23
gfun的定义呢...

%(求梯度)
function g=gfun(x0)
syms x1 x2
f=100*(x2-x1^2)^2+(1-x1)^2;
gg=jacobian(f,[x1;x2]);
g=(subs(gg,{x1,x2},{x0(1),x0(2)}))';
8楼2014-06-19 09:24:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

a364448242

新虫 (初入文坛)

引用回帖:
5楼: Originally posted by 月只蓝 at 2014-06-18 20:31:55
以及bcd的定义...

function [x,f,times]=bcd(x0,tt,zz)
xx1=-1:0.1:2;
xx2=-1:0.1:2;
%----------绘图函数
set(0,'defaultfigurecolor',[1 .8 0]);
[x1,x2]=meshgrid(xx1,xx2);
f=100*(x2-x1.^2).^2+(1-x1).^2;
contour(x1,x2,f,20);
hold on
title('变尺度法','FontSize',16,'fontweight','bold');
strl(1)={'信科012班'};
strl(2)={'9号;23号'};
uicontrol('Style','text','FontSize',12,'Position',[75 320 120 38],...
   'String',strl);
%---------------变尺度法搜索最小值函数
%---------------tt表选择搜索方法系数
%---------------zz表选择系数
x=x0;
h0=[1 0;0 1];
epis=0.000001;
f=fun(x0);
g=gfun(x0);
times=0;
plot(x0(1),x0(2),'k*')
while norm(g)>=epis
    p0=-h0'*g;
    times=times+1;
    x0=x;
    f0=f;
    g0=g;
    switch tt         %--------------------选择搜索方法
        case 1        %--------------------Armijo法
    x=s1(x0,p0);
        case 2        %--------------------Armijo_goldstein法
    x=s2(x0,p0);
  otherwise
    return
   end
   
    plot(x(1),x(2),'g*')
    plot([x0(1), x(1)],[x0(2), x(2)],'r')
    f=fun(x);
    g=gfun(x);
    s0=x-x0;
    y0=g-g0;
    if norm(g)<epis
        disp('最后的迭代步数为:')
        times
        disp('最小值时的迭代点 :');
        x
        disp('函数的最小值为:');
        f
        break;
      end
   switch zz
          case 1
          h=h0+(s0*s0')/(s0'*y0)-(h0*y0*y0'*h0)/(y0'*h0*y0);                %-------DFP校正公式
          case 2
          h=h0+((s0-h0*y0)*(s0-h0*y0)')/(y0'*(s0-h0*y0));                     %-------Symmetric Rank 1校正公式
          case 3
          h=h0+((1+(y0'*h0*y0)/(s0'*y0))*s0*s0'-h0*y0*s0'-s0*y0'*h0)/(s0'*y0); %----------BFGS校正公式
         otherwise
             return
     end
         h0=h;
      
     end
9楼2014-06-19 09:26:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

a364448242

新虫 (初入文坛)

送红花一朵
引用回帖:
6楼: Originally posted by 月只蓝 at 2014-06-18 20:33:35
你这个函数涉及的函数比较多,你把所有的函数都放在matlab的工作目录下试试看看。

解决了。还是谢谢你
10楼2014-06-19 15:44:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 a364448242 的主题更新
信息提示
请填处理意见