| 查看: 851 | 回复: 3 | ||||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | ||||
[求助]
哪位MATLAB高手能帮忙调试一下程序,不是遇到这问题就是那问题 已有1人参与
|
||||
|
function [x,val,k]=frcg(fun,gfun,x0) % 功能: 用FR共轭梯度法求解无约束问题: min f(x) %输入: x0是初始点, fun, gfun分别是目标函数和梯度 %function g=gfun(x) g=[400*x(1)*(x(1)^2-x(2))+2*(x(1)-1),-200*(x(1)^2-x(2))]'; %function f=fun(x) f=100*(x(1)^2-x(2))^2+(x(1)-1)^2; %输出: x, val分别是近似最优点和最优值, k是迭代次数. maxk=5000; %最大迭代次数 rho=0.6;sigma=0.4; k=0;epsilon=1e-4; n=length(x0); while(k<maxk) g=feval(gfun,x0); %计算梯du itern=k-(n+1)*floor(k/(n+1)); itern=itern+1; %计算搜索方向 if(itern==1) d=-g; else beta=(g'*g)/(g0'*g0); d=-g+beta*d0; gd=g'*d; if(gd>=0.0) d=-g; end end if(norm(g)<epsilon),break;end %检验终止条件 m=0;mk=0; while(m<20) %Armijo搜索 if(feval(fun,x0+rho^m*d)<feval(fun,x0)+sigma*rho^m*g'*d) mk=m;break; end m=m+1; end x0=x0+rho^mk*d; val=feval(fun,x0); g0=g;d0=d; k=k+1; end x=x0; val=feval(fun,x); %输入x0=[-1.2 1]'; %[x,val,k]=frcg('fun','gfun',x0) 在命令窗口输入 x0=[-1.2 1]'; >> [x,val,k]=frcg('fun','gfun',x0) ??? Undefined command/function 'frcg'. 怎么回事呢 |
» 猜你喜欢
假如你的研究生提出不合理要求
已经有6人回复
对氯苯硼酸纯化
已经有3人回复
求助:我三月中下旬出站,青基依托单位怎么办?
已经有12人回复
不自信的我
已经有12人回复
所感
已经有4人回复
论文终于录用啦!满足毕业条件了
已经有28人回复
要不要辞职读博?
已经有7人回复
北核录用
已经有3人回复
实验室接单子
已经有3人回复
磺酰氟产物,毕不了业了!
已经有8人回复
» 本主题相关价值贴推荐,对您同样有帮助:
高手指点:如何使用matlab使数据行与行间空一行
已经有6人回复
matlab编程 ODE45
已经有4人回复
linux 下 matlab 的调用问题
已经有3人回复
matlab画图问题: 怎样用小图标或自定义图形代替+ x . o等做图
已经有10人回复
一个关于matlab的simulink的变频空调PI控制的问题
已经有9人回复
请大侠指教matlab的这个错误提示到底是个神马意思?
已经有12人回复
有个matlab程序,但是运行不下来,求高手
已经有23人回复
matlab程序中调用m文件的问题
已经有13人回复
fortran的debug调试
已经有10人回复
求高手解答Matlab求解微分方程的初始值和边界值问题
已经有5人回复
请matlab高手看一下这个问题怎样编程才好,附程序代码,谢谢!
已经有9人回复
MATLAB程序调试
已经有9人回复
求Matlab高手解决线性方程组的迭代求解问题
已经有17人回复
Matlab中如何自己定义一个新函数,然后计算时可以调用?
已经有12人回复
matlab调试问题
已经有3人回复
matlab程序问题,总是出错,麻烦大家看看问题在那里?
已经有6人回复
matlab重复调用子程序的问题
已经有6人回复
求助大侠帮忙,有关matlab模拟数据
已经有29人回复
求助matlab编程
已经有13人回复
VS2005下matlab调用
已经有8人回复
【求助】一个MATLAB程序,读不懂,老师说是用随机游走算pi的值【已完结】
已经有6人回复
4楼2014-12-24 14:26:39
wurongjun
专家顾问 (职业作家)
-

专家经验: +831 - 数学EPI: 9
- 应助: 791 (博后)
- 贵宾: 0.308
- 金币: 24609
- 散金: 310
- 红花: 75
- 帖子: 3004
- 在线: 881.2小时
- 虫号: 1368482
- 注册: 2011-08-14
- 性别: GG
- 专业: 计算数学与科学工程计算
- 管辖: 数学
【答案】应助回帖
★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
guan0603: 金币+10, ★★★很有帮助 2014-12-24 11:58:46
感谢参与,应助指数 +1
guan0603: 金币+10, ★★★很有帮助 2014-12-24 11:58:46
|
简单修改就行,如下: function [x,val,k]=frcg(fun,gfun,x0) % 功能: 用FR共轭梯度法求解无约束问题: min f(x) %输入: x0是初始点, fun, gfun分别是目标函数和梯度 %输出: x, val分别是近似最优点和最优值, k是迭代次数. maxk=5000; %最大迭代次数 rho=0.6;sigma=0.4; k=0;epsilon=1e-4; n=length(x0); while(k<maxk) g=feval(gfun,x0); %计算梯du itern=k-(n+1)*floor(k/(n+1)); itern=itern+1; %计算搜索方向 if(itern==1) d=-g; else beta=(g'*g)/(g0'*g0); d=-g+beta*d0; gd=g'*d; if(gd>=0.0) d=-g; end end if(norm(g)<epsilon),break;end %检验终止条件 m=0;mk=0; while(m<20) %Armijo搜索 if(feval(fun,x0+rho^m*d)<feval(fun,x0)+sigma*rho^m*g'*d) mk=m;break; end m=m+1; end x0=x0+rho^mk*d; val=feval(fun,x0); g0=g;d0=d; k=k+1; end x=x0; val=feval(fun,x); function g=gfun(x) g=[400*x(1)*(x(1)^2-x(2))+2*(x(1)-1),-200*(x(1)^2-x(2))]'; function f=fun(x) f=100*(x(1)^2-x(2))^2+(x(1)-1)^2; 下面是运行结果: >> x0=[-1.2 1]' x0 = -1.2000 1.0000 >> [x,val,k]=frcg('fun','gfun',x0) x = 0.9999 0.9999 val = 2.9396e-009 k = 44 |
» 本帖已获得的红花(最新10朵)

2楼2014-12-24 11:13:16
3楼2014-12-24 11:58:06












回复此楼
送红花一朵