梯度下降法.doc_第1页
梯度下降法.doc_第2页
梯度下降法.doc_第3页
梯度下降法.doc_第4页
梯度下降法.doc_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

西安电子科技大学电子工程学院 最优化方法及应用(1)上机报告题 目: 最速下降法求最优解 任课老师:_ _xxxxxx_ _姓 名:_ xxxxxx_ _学 号:_ _xxxxxxxx_ _班 级:_ 02951_ _ _一、问题叙述:编程求解函数:的最小值点及最小值。二、问题分析实现方法:最速下降法(C语言)其中一维线性搜索用黄金分割法。三、代码/ 1_Steep.cpp : Defines the entry point for the console application./用最速下降法求解minf(X)=minf(x)=(x1+10*x2)2+5(x3-x4)2+(x2-2*x3)4+10(x1-x4)4,e=0.001。#include stdafx.h#include#includeusing namespace std;#define _accuracy 0.001/plusx()/*void plusx(float x4,float g4,float t)x0 += t*g0;x1 += t*g1;x2 += t*g2;x3 += t*g3;*/* f() */float f(float x4)float sum = 0.0;sum += (x0+10*x1)*(x0+10*x1);sum += 5*(x2-x3)*(x2-x3);sum += (x1-2*x2)*(x1-2*x2)*(x1-2*x2)*(x1-2*x2);sum += 10*(x0-x3)*(x0-x3)*(x0-x3)*(x0-x3);return sum;/void plusx(float x14,float x04,float g4,float t)x10 = x00+t*g0;x11 = x01+t*g1;x12 = x02+t*g2;x13 = x03+t*g3;/searchRange()void searchRange(float &a,float &b,float x4,float g4)float t0=10,t1=10,t2=2;float h=1;float xi=2;float f0,f1;float x14;int k=0;while (1)f0 = f(x);t2 = t1+h;plusx(x1,x,g,t2);f1 = f(x1);if (f1f0)h = xi*h;t0 = t1;t1 = t2;f0 = f1;k+;continue;else if(0=k)h = -h;t0 = t2;continue;else a=(t0=t2?t0:t2);b=(t0=t2?t2:t0);break;/gold()void gold(float &a,float &b,float x4,float g4)float t1,t2;float x14,x24;t2=a+0.382*(b-a);plusx(x2,x,g,t2);t1=a+b-t2;plusx(x1,x,g,t1);float f1,f2;f1=f(x1);f2=f(x2);if(f1f2) b=t1;else a=t2;b=t1; /* grad() */int grad(float X4,float g4)g0=2*(X0+10*X1)+40*(X0-X3)*(X0-X3)*(X0-X3);g1=20*(X0+10*X1)+4*(X1-2*X2)*(X1-2*X2)*(X1-2*X2);g2=10*(X2-X3)-8*(X1-2*X2)*(X1-2*X2)*(X1-2*X2);g3=0-10*(X2-X3)-40*(X0-X3)*(X0-X3)*(X0-X3);/*float sum = g0+g1+g2+g3;g0 = g0/sum;g1 = g1/sum;g2 = g2/sum;g3 = g3/sum;*/return 0;/* linesearch() */int linesearch(float Xk14,float Xk04,float g4)float mina,maxb,Lanbuda;/*searchRange(mina,maxb,Xk0,g);*/mina = -100;maxb =100;while (maxb-mina_accuracy) gold(mina,maxb,Xk0,g);Lanbuda = (mina+maxb)/2;plusx(Xk1,Xk0,g,Lanbuda);return 0;/*main()*/int main(int argc, char* argv)float X04=10,10,10,10,X14=10,10,10,10;float f0,f1,g4;f0=f(X0);grad(X0,g);int k=0;while(1)if(0=g0*g0+g1*g1+g2*g2+g3*g3) break;linesearch(X1,X0,g);f1=f(X1);grad(X1,g);if (_accuracy=g0*g0+g1*g1+g2*g2+g3*g3) break;X00 = X10;X01 = X11;X02 = X12;X03 = X13;/*if(k20)printf(迭代次数%d:tX=%.3f,%.3f,%.3f,%.3ft,+k,X00,X01,X02,X03);printf(minf(X)=%.3fn,f1);*/printf(迭代次数%d:tX=%.3f,%.3f,%.3f,%.3ft,+k,X00,X01,X02,X03);printf(minf(X)=%.3fn,f1);f0=f1;printf(target:X=%.3f,%.3f,%.3f,%.3fn,X00,X01,X02,X03);printf(minf(X)=%.3fn,f1);/cout.unsetf(ios:scientific);/coutX=setprecision(1)X10,setprecisio

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论