24小时热门版块排行榜    

查看: 880  |  回复: 3
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

guan0603

新虫 (初入文坛)

[求助] 哪位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'.
怎么回事呢
回复此楼

» 猜你喜欢

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

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

guan0603

新虫 (初入文坛)

送红花一朵
引用回帖:
2楼: Originally posted by wurongjun at 2014-12-24 11:13:16
简单修改就行,如下:
function =frcg(fun,gfun,x0)
% 功能: 用FR共轭梯度法求解无约束问题: min f(x)
%输入: x0是初始点, fun, gfun分别是目标函数和梯度
%输出: x, val分别是近似最优点和最优值, k是迭代次数.
...

出来了,谢谢了
4楼2014-12-24 14:26:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 4 个回答

wurongjun

专家顾问 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +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
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

guan0603

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by wurongjun at 2014-12-24 11:13:16
简单修改就行,如下:
function =frcg(fun,gfun,x0)
% 功能: 用FR共轭梯度法求解无约束问题: min f(x)
%输入: x0是初始点, fun, gfun分别是目标函数和梯度
%输出: x, val分别是近似最优点和最优值, k是迭代次数.
...

>> x0=[-1.2 2]'

x0 =

   -1.2000
    2.0000

>> [x,val,k]=frcg('fun','gfun',x0)
??? Error using ==> frcg
Too many input arguments.
这是怎么回事呢,我刚接触MATLAB,编程基础很差,谢谢帮助
3楼2014-12-24 11:58:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 279分求调剂 一志愿211 +17 chaojifeixia 2026-03-19 19/950 2026-03-23 23:26 by 呆呆师姐
[考研] 0703化学求调剂 +4 奶油草莓. 2026-03-22 5/250 2026-03-23 19:37 by pswait
[考研] 316求调剂 +7 梁茜雯 2026-03-19 7/350 2026-03-23 16:21 by lingjue
[考研] 289材料与化工(085600)B区求调剂 +3 这么名字咋样 2026-03-22 4/200 2026-03-22 17:56 by 云民大李老师
[考研] 289求调剂 +7 怀瑾握瑜l 2026-03-20 7/350 2026-03-22 15:57 by ColorlessPI
[考研] 资源与环境 调剂申请(333分) +5 holy J 2026-03-21 5/250 2026-03-21 22:42 by Catalysis25
[考研] 求调剂 +4 要好好无聊 2026-03-21 4/200 2026-03-21 18:57 by 学员8dgXkO
[考研] 0703化学调剂 +4 妮妮ninicgb 2026-03-21 4/200 2026-03-21 18:39 by 学员8dgXkO
[考研] 297求调剂 +3 喜欢还是不甘心 2026-03-20 3/150 2026-03-21 18:33 by 学员8dgXkO
[考研] 求助 +5 梦里的无言 2026-03-21 6/300 2026-03-21 17:51 by 学员8dgXkO
[考研] 332求调剂 +4 ydfyh 2026-03-17 4/200 2026-03-21 02:20 by JourneyLucky
[考研] 一志愿西南交大,求调剂 +5 材化逐梦人 2026-03-18 5/250 2026-03-21 00:26 by JourneyLucky
[考研] 274求调剂 +10 S.H1 2026-03-18 10/500 2026-03-20 23:51 by JourneyLucky
[考研] 南京大学化学376求调剂 +3 hisfailed 2026-03-19 6/300 2026-03-20 23:43 by hisfailed
[考研] 294求调剂材料与化工专硕 +15 陌の森林 2026-03-18 15/750 2026-03-20 23:28 by JourneyLucky
[考研] 一志愿中海洋材料工程专硕330分求调剂 +8 小材化本科 2026-03-18 8/400 2026-03-20 23:16 by JourneyLucky
[考研] 290求调剂 +7 ^O^乜 2026-03-19 7/350 2026-03-20 21:43 by JourneyLucky
[考研] 261求B区调剂,科研经历丰富 +3 牛奶很忙 2026-03-20 4/200 2026-03-20 19:34 by JourneyLucky
[考研] 085600材料与化工调剂 324分 +10 llllkkkhh 2026-03-18 12/600 2026-03-19 14:33 by llllkkkhh
[考研] 收复试调剂生 +4 雨后秋荷 2026-03-18 4/200 2026-03-18 14:16 by elevennnne
信息提示
请填处理意见