1、实 验 报 告实验名称: 梯度法 院 (系): 机电学院 专业班级: 机械制造及其自动化 姓 名: 学 号: 2013 年 5 月 13 日实验一: 梯度法 实验日期:2013 年 5 月 13 日一、 实验目的了解 MATLAB 的基本运用了解 MATLB 在优化中的使用二、 实验原理优化设计的目标是使函数值 f(x)最小,函数在某点的梯度方向是函数在该点增长最快的方向,反之,其负梯度方向及为函数在该点附近趋于下降最快的方向。因此,可以利用函数在该点的负梯度方向作为迭代搜索方向寻找下一点,并按此规律不断进行搜索,寻找函数的最小值。三、 实验内容梯度法程序:x0=3;3;xk=x0;ie=10
2、(-7);ae=1;k=0;MLN=2;%迭代求解while(kie)syms x1syms x2xk1=xk;%求函数梯度fun=fun(x1,x2);fx1=diff(fun,x1);fx2=diff(fun,x2);%计算函数值及梯度值fun=inline(fun);fx1=inline(fx1);fx2=inline(fx2);funval=feval(fun,xk1(1),xk1(2);gradx1=feval(fx1,xk1(1);gradx2=feval(fx2,xk1(2);grad=zeros(2,1);grad(1)=gradx1;grad(2)=gradx2;%最速下降发
3、迭代,求下一步syms a;syms x1;syms x2;x=xk1-a*grad;x1=x(1);x2=x(2);%确定一位搜索最佳步长fun1=fun(x1,x2);fxa=diff(fun1,a);a=solve(fxa);x=inline(x);x=feval(x,a);ae=eval(sqrt(xk1-x)*(xk1-x) ; %计算实际误差%更新迭代点,继续下次迭代xk(1)=eval(x(1);xk(2)=eval(x(2);k=k+1;endx=xk函数程序:function f=fun(x1,x2)f=2*x12+3*x22执行结果:x =0.10290.1029四、 实验小结通过本实验了解了了 matlab 的基本操作方法,了解梯度法的原理与基本运用