《最优化理论与算法》实验报告.doc
文本预览下载声明
《最优化理论与算法》实验报告
2010年6月30日
一、??????????
1、用最速下降法解问题
初始点 二、问题的分析(涉及的理论知识、数学建模与求解的方法等)
本问题是无约束的非线性规划问题,要求的是函数的极小点,我们可以通过调用MATLAB这个数学软件的求极小点的函数,取不同的初值,即可以得到相应的函数的极小点。其具体的求解过程如下。该问题是多元无约束非线性规划问题,要求函数的极小点。根据题目要求,通过分析可知,我们需要搞清楚最速下降算法的思想,从而进一步编写MATLAB程序去实现。通过调用该算法程序,易求得该函数的近似极小点。 三、计算过程
求解该问题的M文件如下:
%求计算函数梯度g的程序gr.m;
function [f,g]=gr(x);
f=2*x(1)^2+x(2)^2;
g(1)=4*x(1);
g(2)=2*x(2);
%求多元无约束规划极小点的最速下降算法程序zsxj.m;
function [x,n]=zsxj(x0,e)
%x0为初始迭代点,e为迭代精度,默认值为10^(-7);
clc
if(nargin2)
e=1e-6;
end
x=x0;
n=1;
[f0,g]=gr(x);
while(norm(g)en1000)
d=-g/norm(g);
t=1;
f=gr(x+t*d);
while(ff0)
t=t/2;
f=gr(x+t*d);
end
x=x+t*d;
[f0,g]=gr(x);
n=n+1;
end
if(n==1000)
warning(已到迭代次数上限!最终结果如下:)
end
x;
n;
%调用zsxj.m程序计算如下;
x0=[1;1];
e=1/10;
[x,n]=zsxj(x0,e)
结果如下:
x =
-0.0009
-0.0023
n =
7
%调用zsxj.m程序计算如下;
x0=[1;1];
[x,n]=zsxj(x0)
结果如下:
x =
1.0e-007 *
-0.7902
0.0174
n =
15
四、问题求解结果的分析与结论
由以上的计算可以知道,当取不同的初值时,函数的极小点也不相同,取不同是初值时得到的结果。
问题的求解结果和实际的结果并不完全相同,原因是多方面的。通过对问题求解过程的分析可以发现,造成误差的原因在于:
1、求解过程中所取的步长;
2、编写的程序有一定的局限性。
由以上的计算可以知道,当取不同的初值时,函数的极小点也不相同,取不同是初值时会得到的结果。 五、实验的总结与体会
通过本次实验,使自己对老师所讲的理论知识有了更进一步的掌握,加深了对极小化问题的理解。提高了自己理论联系实际的能力,同时增强了运用数学软件来解决实际问题的能力,也使自己明白了,用MATLAB这个数学软件来求解数学问题,可以减少很多计算。基本上达到了实验的目的。
显示全部