




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、牛顿法迭代公式:Matlab代码:function x1,k =newton(x1,eps)hs=inline('(x-1)4+y2'); 写入函数ezcontour(hs,-10 10 -10 10); 建立坐标系hold on; 显示图像syms x y 定义变量f=(x-1)4+y2; 定义函数grad1=jacobian(f,x,y); 求f的一阶梯度grad2=jacobian(grad1,x,y); 求f的二阶梯度k=0; 迭代初始值while 1 循环grad1z=subs(subs(grad1,x,x1(1),y,x1(2); 给f一阶梯度赋初值grad2z=s
2、ubs(subs(grad2,x,x1(1),y,x1(2); 给f二阶梯度赋初值 x2=x1-inv(grad2z)*(grad1z)' 核心迭代公式if norm(x1-x2)<eps 判断收敛条件 break;else plot(x1(1),x2(1),x1(2),x2(2),'-r*'); 画图 k=k+1; 迭代继续 x1=x2; 赋值endendend优点:在极小点附近收敛快缺点:但是要计算目标函数的hesse矩阵最速下降法1. :选取初始点xo,给定误差2. 计算一阶梯度。若一阶梯度小于误差,停止迭代,输出3. 取4. 例题:求min (x-2)4+
3、(x-2*y)2.初始值(0,3)误差为0.1(1)编写一个目标函数,存为f.mfunction z = f( x,y )z=(x-2.0)4+(x-2.0*y)2;end (2)分别关于x和y求出一阶梯度,分别存为fx.m和fy.mfunction z = fx( x,y )z=2.0*x-4.0*y+4.0*(x-2.0)3;end和function z = fy( x,y )z=8.0*y-4.0*x;end(3)下面是脚本文件,一维搜索用的是黄金分割法Tic 计算时间eps=10(-4);误差err=10;dt=0.01;x0=1.0;初始值y0=1.0;mm=0;while err&
4、gt;eps 黄金分割法 dfx=-fx(x0,y0); dfy=-fy(x0,y0);tl=0;tr=1;确定一维搜索的区间 h=3; nn=0; gerr=10; geps=10(-4); while gerr>geps tll=tl+0.382*abs(tr-tl); trr=tl+0.618*abs(tr-tl); if f(x0+tll*h*dfx,y0+tll*h*dfy)>f(x0+trr*h*dfx,y0+trr*h*dfy) tl=tll; else tr=trr; end gerr=abs(tl-tr); 区间的长度之差 tt=0.5*(tl+tr); nn=n
5、n+1;步数增加 if nn>200 迭代终止条件 break end end x0=x0+tt*h*dfx; 重新迭代 y0=y0+tt*h*dfy; err=sqrt(fx(x0,y0)2+fy(x0,y0)2); mm=mm+1;步数增加 if mm>700 迭代步数超过700,终止 break endendres=x0,y0;输出最后的x,y。toc 计算运行时间拟牛顿法(DFP算法) 这是一个脚本文件可以直接运行syms x1 x2;定义变量eps=0.00001;x0=1,1'初始值h0=1,0;0,1;f=x12+4*x22;待求函数fx=diff(f,x1)
6、;对x求导fy=diff(f,x2);对y求导df=fx,fy;f的一阶梯度dfx0=subs(fx,x1,x2,x0),subs(fy,x1,x2,x0)'赋初值d0=-dfx0;搜索方向n=1;while 1syms t;s0=x0+t*d0;引入变量tff=subs(f,x1,x2,s0)给f赋值;t=solve(diff(ff);求ff的极小点xx1=x0+t*d0;更新初始值dfx1=subs(fx,x1,x2,xx1'),subs(fy,x1,x2,xx1')'赋值pp=sqrt(dfx1*dfx1');判断此时一阶梯度的值if(pp<
7、0.001)迭代终止条件 breakenda1=xx1-x0;r1=dfx1-dfx0;h1=h0+(a1*a1')/(a1'*r1)-(h0*r1*r1'*h0)/(r1'*h0*r1);h0的更新d1=-h1*dfx1;搜索方向的更新d0=d1;循环赋值x0=xx1;循环赋值h0=h1;二阶梯度的近似的更新n=n+1;计算迭代步数end共轭梯度法。这是一个脚本文件clc;clear all;syms x y t ; 定义变量x0=1,1;初始值n=1;初始迭代t=0;f1=x2+2*y2-4*x-2*x*y;待求函数dfx=diff(f1,x);求函数的对x
8、一阶梯度dfy=diff(f1,y);函数对y的一阶梯度df=dfx,dfy;函数一阶梯度以数组的形式while 1 syms kk;在循环里定义变量 g0=subs(dfx,x,y,x0),subs(dfy,x,y,x0);给一阶梯度赋值 s0=-g0;下降方向 m0=x0+kk*s0;引入变量kk f11=f(m0(1),m0(2);带入原函数,得到关于kk的函数 kk=solve(diff(f11);求f11的极小点 m1=x0+kk*s0;更新迭代初始值 g1=subs(dfx,x,y,m1),subs(dfy,x,y,m1);给一阶梯度赋值 s1=-g1;k=(s1*s1')/(g0*g0');s2=s1+k*s0; 更新梯度 s0=s2;重新迭代
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中级会计实务考试归纳总结试题及答案探讨
- 员工离店合同协议书
- 2025办公室租赁合同范本应该怎么写
- 卖车尾款合同协议书
- 2025贷款装修合同模板
- 劳动合同寄存协议书
- 2025年个人二手房买卖合同
- 中级会计实务考试实务试题及答案集
- 2025年医疗美容行业:医美消费趋势与市场潜力分析报告
- 中级会计实务考试2025年考生必读与试题答案
- 【语文】第18课《井冈翠竹》课件 2024-2025学年统编版语文七年级下册
- DBJ33T 1020-2022 建设工程地质钻探安全技术规程
- 房地产行业信访处理规范制度
- 绿色施工知识培训课件
- 幼儿园伙食费管理制度
- 【MOOC】学术英语写作-东南大学 中国大学慕课MOOC答案
- 应激性心肌病指南解读
- 【水利水电】李想 案例专项班教案 02-案例专项班(二)
- 教室租赁合同范本教程
- 三管三必须-新安法宣贯课件
- 山东长山列岛国家地质公园规划编制说明(2020-2030年)
评论
0/150
提交评论