| 查看: 855 | 回复: 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人回复
交叉科学部支持青年基金,对三无青椒是个机会吗?
已经有4人回复
招博士
已经有6人回复
限项规定
已经有8人回复
国家级人才课题组招收2026年入学博士
已经有5人回复
Fe3O4@SiO2合成
已经有6人回复
青年基金C终止
已经有4人回复
青椒八年已不青,大家都被折磨成啥样了?
已经有7人回复
为什么nbs上溴 没有产物点出现呢
已经有10人回复
救命帖
已经有11人回复
» 本主题相关价值贴推荐,对您同样有帮助:
高手指点:如何使用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人回复
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
4楼2014-12-24 14:26:39













回复此楼
guan0603