共轭梯度法matlab代码的调用函数在Matlab里是什么? fminunc是不是共轭梯度法matlab代码的调用格式

网站已改版,请使用新地址访问:
gongertidufa 共轭梯度法求多元函数的极值,使用matlab程序即可解答
238万源代码下载- www.pudn.com
&文件名称: gongertidufa
& & & & &&]
&&所属分类:
&&开发工具: matlab
&&文件大小: 2 KB
&&上传时间:
&&下载次数: 21
&&提 供 者:
&详细说明:共轭梯度法求多元函数的极值,使用matlab程序即可解答-Conjugate gradient method for the extreme multi-function use matlab program to answer
文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&共轭梯度法求多元函数极小值\Newton.m&&..........................\ff.m&&..........................\minCG.m&&共轭梯度法求多元函数极小值
&输入关键字,在本站238万海量源码库中尽情搜索:
&[] - 基于共轭梯度法,现采用编程来计算最优解,matlab程序和简要说明文档。
&[] - 采用matlab编写的利用共轭梯度法求解矩阵方程
&[] - Jacobi算法和共轭梯度法的基本matlab程序,rar压缩包,包括2个文件
&[] - 在最优化问题中,常用需求取代价函数的最小值,该程序实现了最速梯度求最小的功能
&[] - 最优化问题的快速下降法,共轭梯度法,基于matlab算法。经过测试好用
&[] - 我编写的一个关于解决非线性方程的优化问题的共轭梯度法,希望对大家有用
&[] - 本程序用共轭梯度法求函数局部极小值。程序包括三个文件,主程序conjugategradient,函数的梯度gradient,以及黄金分割法partition精确求一维搜索极小点变量步长。程序用来求多变量函数的极小值。匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。当前位置: >>
用MATLAB实现最速下降法,牛顿法和共轭梯度法求解实例
实验的题目和要求一、所属课程名称:最优化方法二、实验日期:2010 年 5 月 10 日~2010 年 5 月 15 日三、实验目的掌握最速下降法,牛顿法和共轭梯度法的算法思想,并能上机 编程实现相应的算法。二、实验要求用 MATLAB 实现最速下降法,牛顿法和共轭梯度法求解实例。四、实验原理最速下降法是以负梯度方向最为下降方向的极小化算法,相邻 两次的搜索方向是互相直交的。 牛顿法是利用目标函数 f (x) 在迭代点 xk 处的 Taylor 展开式作为模型函数,并利用这个二次模型函数的极 小点序列去逼近目标函数的极小点。 共轭梯度法它的每一个搜索方向 是互相共轭的,而这些搜索方向 d k 仅仅是负梯度方向 ? g k 与上一次接 待的搜索方向 d k ?1 的组合。五.运行及结果如下:最速下降法: 题目:f=(x-2)^2+(y-4)^2 M 文件:function [R,n]=steel(x0,y0,eps) f=(x-2)^2+(y-4)^2; v=[x,y]; j=jacobian(f,v); T=[subs(j(1),x,x0),subs(j(2),y,y0)]; temp=sqrt((T(1))^2+(T(2))^2); x1=x0;y1=y0; n=0; while (temp&eps) d=-T; f1=x1+kk*d(1);f2=y1+kk*d(2); fT=[subs(j(1),x,f1),subs(j(2),y,f2)]; fun=sqrt((fT(1))^2+(fT(2))^2); Mini=Gold(fun,0,1,0.00001); x0=x1+Mini*d(1);y0=y1+Mini*d(2); T=[subs(j(1),x,x0),subs(j(2),y,y0)]; temp=sqrt((T(1))^2+(T(2))^2); x1=x0;y1=y0; n=n+1; end R=[x0,y0]调用黄金分割法: M 文件:function Mini=Gold(f,a0,b0,eps) u=a0+0.382*(b0-a0); v=a0+0.618*(b0-a0); k=0; a=a0;b=b0; array(k+1,1)=a;array(k+1,2)=b; while((b-a)/(b0-a0)&=eps) Fu=subs(f,kk,u); Fv=subs(f,kk,v); if(Fu&=Fv) b=v; v=u; u=a+0.382*(b-a); k=k+1; elseif(Fu&Fv) a=u; u=v; v=a+0.618*(b-a); k=k+1; end array(k+1,1)=a;array(k+1,2)=b; end Mini=(a+b)/2;输入:[R,n]=steel(0,1,0.0001) R= R= n= 1.42 1.42 1 3.63 3.63牛顿法: 题目:f=(x-2)^2+(y-4)^2 M 文件:syms x1 x2; f=(x1-2)^2+(x2-4)^2; v=[x1,x2]; df=jacobian(f,v); df=df.'; G=jacobian(df,v); epson=1e-12;x0=[0,0]';g1=subs(df,{x1,x2},{x0(1,1),x0(2,1)});G1=subs(G,{x1,x2 },{x0(1,1),x0(2,1)});k=0;mul_count=0;sum_count=0; mul_count=mul_count+12;sum_count=sum_count+6; while(norm(g1)&epson) p=-G1\g1; x0=x0+p; g1=subs(df,{x1,x2},{x0(1,1),x0(2,1)}); G1=subs(G,{x1,x2},{x0(1,1),x0(2,1)}); k=k+1; mul_count=mul_count+16;sum_count=sum_count+11; k x0 mul_count sum_count结果: k = :x0 = 2 4 mul_count = sum_count =128 17共轭梯度法:题目:f=(x-2)^2+(y-4)^2 M 文件:function f=conjugate_grad_2d(x0,t) x=x0; syms xi yi a f=(xi-2)^2+(yi-4)^2; fx=diff(f,xi); fy=diff(f,yi); fx=subs(fx,{xi,yi},x0); fy=subs(fy,{xi,yi},x0); fi=[fx,fy]; count=0; while double(sqrt(fx^2+fy^2))&t s=- if count&=0 s=- else s=s1; end x=x+a*s; f=subs(f,{xi,yi},x); f1=diff(f); f1=solve(f1); if f1~=0 ai=double(f1); else break x,f=subs(f,{xi,yi},x),count end x=subs(x,a,ai); f=xi-xi^2+2*xi*yi+yi^2; fxi=diff(f,xi); fyi=diff(f,yi); fxi=subs(fxi,{xi,yi},x); fyi=subs(fyi,{xi,yi},x); fii=[fxi,fyi]; d=(fxi^2+fyi^2)/(fx^2+fy^2); s1=-fii+d*s; count=count+1; fx= fy= end x,f=subs(f,{xi,yi},x),count输入:conjugate_grad_2d([0,0],0.0001) 结果:x= f= 0.85 0.76 -0.73 count = ans =10 0.76六、结论如下:最速下降法越接近极小值,步长越小,前进越慢。牛顿法要求二阶导 数,计算量很大。共轭梯度法是介于最速下降和牛顿法之间的算法, 克服了最速下降法的收敛速度慢的缺点,又避免了牛顿法的大计算 量。数值分析最速下降法 matlab 源程序Matlab 源程序 syms x1 x2; X=[x1,x2]; fx=X(1)^2+X(2)^2-4*X(1)-6*X(2)+17; fxd1=[diff(fx,x1) diff(fx,x2)]; x=[2 3]; g=0; e=0.0005; a=1; fan=subs(fxd1,[x1 x2],[x(1) x(2)]); g=0; for i=1:length(fan) g=g+fan(i)^2; end g=sqrt(g); step=0; while g&e step=step+1; dk=- %点 x(k)处的搜索步长 ak=((2*x(1)-4)*dk(1)+(2*x(2)-6)*dk(2))/(dk(1)*dk(2)-2*dk(1)^2-2*dk(2)^2); xu=x+ak* x=%输出结果 optim_fx=subs(fx,[x1 x2],[x(1) x(2)]); fprintf(' x=[ %d %d ] optim_fx=%d\n',x(1),x(2),optim_fx);%计算目标函数点 x(k+1)处一阶导数值 fan=subs(fxd1,[x1 x2],[x(1) x(2)]);g=0; for i=1:length(fan) g=g+fan(i)^2; end g=sqrt(g); end%输出结果optim_fx=subs(fx,[x1 x2],[x(1) x(2)]); fprintf('\n 最速下降法\n 结果:\n x=[ %d %d ] optim_fx=%d\n',x(1),x(2),optim_fx);
更多搜索:
All rights reserved Powered by
文档资料库内容来自网络,如有侵犯请联系客服。共轭梯度法求解最优化计算Matlab_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
共轭梯度法求解最优化计算Matlab
阅读已结束,下载文档到电脑
想免费下载更多文档?
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 共轭梯度法 matlab 的文章

 

随机推荐