| 查看: 859 | 回复: 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'. 怎么回事呢 |
» 猜你喜欢
遇见不省心的家人很难过
已经有24人回复
依托企业入选了国家启明计划青年人才。有无高校可以引进的。
已经有6人回复
博士延得我,科研能力直往上蹿
已经有9人回复
天津大学招2026.09的博士生,欢迎大家推荐交流(博导是本人)
已经有6人回复
AI 太可怕了,写基金时,提出想法,直接生成的文字比自己想得深远,还有科学性
已经有6人回复
有院领导为了换新车,用横向课题经费买了俩车
已经有9人回复
酰胺脱乙酰基
已经有13人回复
同年申请2项不同项目,第1个项目里不写第2个项目的信息,可以吗
已经有4人回复
有时候真觉得大城市人没有县城人甚至个体户幸福
已经有10人回复
» 本主题相关价值贴推荐,对您同样有帮助:
高手指点:如何使用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













回复此楼
送红花一朵