| 4 | 1/1 | 返回列表 |
| 查看: 883 | 回復: 3 | ||||
[求助]
哪位MATLAB高手能幫忙調試一下程序,不是遇到這問題就是那問題 已有1人參與
|
|
function [x,val,k]=frcg(fun,gfun,x0) % 功能: 用FR共軛梯度法求解無約束問題: min f(x) %輸入: x0是初始點, fun, gfun分別是目標函數(shù)和梯度 %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分別是近似最優(yōu)點和最優(yōu)值, k是迭代次數(shù). maxk=5000; %最大迭代次數(shù) 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'. 怎么回事呢 |
專家顧問 (職業(yè)作家)
![]() |
專家經驗: +831 |
|
簡單修改就行,如下: function [x,val,k]=frcg(fun,gfun,x0) % 功能: 用FR共軛梯度法求解無約束問題: min f(x) %輸入: x0是初始點, fun, gfun分別是目標函數(shù)和梯度 %輸出: x, val分別是近似最優(yōu)點和最優(yōu)值, k是迭代次數(shù). maxk=5000; %最大迭代次數(shù) 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 |

| 4 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 086003食品工程求調劑 +4 | 淼淼111 2026-03-24 | 4/200 |
|
|---|---|---|---|---|
|
[考研] 344求調劑 +3 | desto 2026-03-24 | 3/150 |
|
|
[考研] 求調劑 +7 | 十三加油 2026-03-21 | 7/350 |
|
|
[考研] 一志愿國科過程所081700,274求調劑 +3 | 三水研0水立方 2026-03-23 | 3/150 |
|
|
[考研] 269求調劑 +4 | 我想讀研11 2026-03-23 | 4/200 |
|
|
[考研] 333求調劑 +3 | ALULU4408 2026-03-23 | 3/150 |
|
|
[考研] 070300,一志愿北航320求調劑 +3 | Jerry0216 2026-03-22 | 5/250 |
|
|
[考研] 275求調劑 +6 | shansx 2026-03-22 | 8/400 |
|
|
[考研] 311求調劑 +3 | 26研0 2026-03-20 | 3/150 |
|
|
[考研] 求調劑 +5 | Zhangbod 2026-03-21 | 7/350 |
|
|
[考研] 0805 316求調劑 +3 | 大雪深藏 2026-03-18 | 3/150 |
|
|
[考研] 0703化學調劑 +4 | 妮妮ninicgb 2026-03-21 | 4/200 |
|
|
[考研] 265求調劑 +12 | 梁梁校校 2026-03-19 | 14/700 |
|
|
[考研] 330求調劑0854 +3 | assdll 2026-03-21 | 3/150 |
|
|
[考研] 085601調劑 358分 +3 | zzzzggh 2026-03-20 | 4/200 |
|
|
[考研] 華東師范大學-071000生物學-293分-求調劑 +3 | 研究生何瑤明 2026-03-18 | 3/150 |
|
|
[考研] 一志愿華中科技大學,080502,354分求調劑 +5 | 守候夕陽CF 2026-03-18 | 5/250 |
|
|
[考研] 274求調劑 +10 | S.H1 2026-03-18 | 10/500 |
|
|
[考研] 求調劑一志愿南京航空航天大學289分 +3 | @taotao 2026-03-19 | 3/150 |
|
|
[考研] 一志愿西安交通大學 學碩 354求調劑211或者雙一流 +3 | 我想要讀研究生 2026-03-20 | 3/150 |
|