文档介绍:运筹与优化
实验报告
姓名:
学号:
学院:
专业:
指导老师:
实验一
实验名称:MATLAB实现黄金分割法
实验要求:用MATLAB实现黄金分割法()
试验程序:
function [x,minf]=minHJ(f,a,b,eps)
format long;
eps=;
syms x;
f=2*x^2-x-1;
a=-1;
b=1;
l=a+*(b-a);
u=a+*(b-a);
k=1;
tol=b-a;
while tol>eps
f1=2*l^2-l-1;
fu=2*u^2-u-1;
if f1>fu
a=1;
l=u;
u=a+*(b-a);
else b=u;
u=l;
l=a+*(b-a);
end
k=k+1;
tol=abs(b-a);
end
k
if k==10000
disp('找不到最小值!');
x=NuN;
minf =NuN;
return
end
x=(a+b)/2;
min=subs(f,findsym(f),x);
format short;
运行结果:
黄金分割法的结果: K=7,ans=-
实验二
实验名称:MATLAB实现共轭梯度法
实验要求:用MATLAB实现共轭梯度法求解实例()
试验程序:
function f=conjugate(x0,t)
x=x0;
syms xi,yi,a;
f=xi^2-xi*yi+yi^2+2*xi-4*yi;
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=-fi;
if count<=0
s=-fi
else
x=x+a*s;
f=subs(f,{xi,yi},x);
f1=diff(f);
f1=solve(f);
if f1~=0
ai=double(f1);
else
break
=subs(f,{xi,yi},x),count
end
x=subs(x,a,ai);
f=xi^2-xi*yi+yi^2+2*xi-4*yi;
fxi=diff(f,xi);
fyi=diff(f,yi);
fxi=subs(fxi,{xi,yi},x);
fyi=subs(fyi,{xi,yi},x);
fii=[fxi,fyi];
运行结果:
共轭梯度法:conjugate([0,0],)
,f=-4,count=2,ans=-4
实验三
实验名称:MATLAB实现外点法
实验要求:用MATLAB实现外点法和内点法求解实例:
min
.,
实验程序:
m=zeros(1,50);a=zeros(1,50);b=zeros(1,50);f0=zeros(1,50);
syms d x1 x2 e;
m(1