最优化方法实验.docx
《最优化方法实验.docx》由会员分享,可在线阅读,更多相关《最优化方法实验.docx(11页珍藏版)》请在冰豆网上搜索。
最优化方法实验
《最优化方法》实验报告
实验序号:
01 实验项目名称:
线性规划及MATLAB应用
学 号
姓 名
专业、班级
实验地点
计算机楼1402
指导教师
时间
2016.9.21
一、实验目的
1.了解Matlab,学会创建Matlab的M文件。
2.学会利用matlab解决数学模型求得最优解;
3.学会利用matlab求解线性方程组问题。
二、实验环境
使用电脑硬件设备,在matlab工作环境。
三、实验内容及步骤
第一题:
P2例1.1
程序:
f=[8400;7500;6700];
A=[60,65,80;-3800,-3500,-2500];
b=[70;-2900];
Aeq=[1,1,1];
beq=[1];
VLB=[0;0;0];
VUB=[Inf;Inf;Inf];
[x,fval]=linprog(f,A,b,Aeq,beq,VLB,VUB)
实验结果:
Optimizationterminated.
x=
0.0000
0.6667
0.3333
fval=
7.2333e+003
第二题:
P41T4
(1)程序:
f=[-2;-1;1];
A=[1,1,2;1,4,-1];
b=[6;4];
Aeq=[];
beq=[];
VLB=[0;0;0];
VUB=[Inf;Inf;Inf];
[x,fval]=linprog(f,A,b,Aeq,beq,VLB,VUB)
程序结果:
Optimizationterminated.
x=
4.6667
0.0000
0.6667
fval=
-8.6667
则
Max=8.667
(2)程序:
f=[-1;1;-1];
A=[-1,2,-1];
b=[-1];
Aeq=[-1,1,1];
beq=[2];
VLB=[-1;0;0];
VUB=[Inf;Inf;Inf];
[x,fval]=linprog(f,A,b,Aeq,beq,VLB,VUB)
实验结果:
x=
1.0e+014*
4.0005
0.0000
4.0005
fval=
-8.0011e+014
第三题:
求解:
取
程序:
model:
min=1.5*x1*x1+0.5*x2*x2-x1*x2-2*x1;
init:
x1=-2;
x2=4;
endinit
@free(x1);
@free(x2);
end
结果:
min=-1
x1=x2=1
第四题:
解方程组:
matlab程序:
[x1,x2]=solve('(x1)^2-x2=1','(x1-2)^2+(x2-0.5)^2=1')
实验结果:
x=
1.5463428833199450050728889725194
1.067346085806689713408597312807
-1.2136904451605911320167045558746*i-1.3068444845633173592407431426632
1.2136904451605911320167045558746*i-1.3068444845633173592407431426632
y=
1.3911763127942410521940863240803114729679579201533260544281675522440233186660598457116942191248575338181509569760819712993230793
0.13922766688686144048362498805141087933357298414914486351532392237011544190365728451529715182980975642655455229498393680361776014
3.1722093284506318231178646481142869096328621010406471307419312878787791623708452886545479195649687661220331009729607188767691491*i-0.76520198984055124633885565606586
-3.1722093284506318231178646481143*i-0.76520198984055124633885565606586
最优解:
x1=1.546x2=1.391
四.实验小结:
通过本次的实验,我已了解了matlab的一些求解数学方法,如调用linprog求得函数的最小值,知道如何应用lingo软件求的方程的最优解,也可以熟练的利用solve函数解决方程组问题,实验过程基本正常。
教师评语:
签名:
日期:
成绩
《最优化方法》实验报告
实验序号:
02 实验项目名称:
0.618黄金分割法的应用
学 号
姓 名
专业、班级
实验地点
计算机楼1402
指导教师
时间
2016.10.16
一、实验目的
1.熟悉Matlab上机环境,了解Matlab的相关知识;
2.通过本次实验了解线性搜索,加深对0.618分割法的理解;
3.根据0.618分割法的算法步骤编写相应的Matlab程序,并利用matlab程序计算求解;
4.通过本次实验提高编程能力。
二、实验环境
使用电脑硬件设备,在matlab工作环境。
三、实验内容及步骤
第一题内容:
用黄金分割法计算
,初始区间为[0,3],收敛精度为0.5.
程序:
function[t,f]=golden1(a,b)
m=1-(sqrt(5)-1)/2;
t2=a+m*(b-a);
f2=g(t2);
t1=a+b-t2;
f1=g(t1);
whileabs(t1-t2)>0.5
iff1a=t2;
t2=t1;
f2=f1;
t1=a+b-t2;
f1=g(t1);
else
b=t1;
t1=t2;
f1=f2;
t2=a+m*(b-a);
f2=g(t2);
end
end
t=(t1+t2)/2;
f=g(t);
functiony=g(t)
y=t^3-2*t+1;
实验数据和分析:
分析:
打开matlab软件,新建m文件,将函数式写入程序,在matlab中输入:
结果分析:
根据以上结果可知,
在区间[0,3]上,函数g(x)=x^3-2*x+1的最小值点在x=0.9271处,此时最小值为0。
第二题:
P50例题3.1
程序:
function[t,f]=golden3(a,b)%黄金分割函数的m文件
t2=a+0.382*(b-a);
f2=2*(t2)^2-(t2)-1;
t1=a+0.618*(b-a);%按照黄金分割点赋值,更准确可直接算
f1=2*(t1)^2-(t1)-1;
whileabs(t1-t2)>0.16;%判定是否满足精度
iff1a=t2;
t2=t1;
f2=f1;
t1=a+0.618*(b-a);
f1=2*(t1)^2-(t1)-1;
else
b=t1;
t1=t2;
f1=f2;
t2=a+0.382*(b-a);
f2=2*(t2)^2-(t2)-1;
end
end
t=(t1+t2)/2;%满足条件取区间中间值输出
实验数据和分析:
分析:
打开matlab软件,新建m文件,将函数式写入程序,在matlab中输入:
>>golden3(-1,1)
ans=
0.2918
结果分析:
根据以上结果可知,在区间[-1,1]上,函数g(x)=2*x^2-x-1的最小值点在x=0.2918处,此时最小值为0。
第三题:
用牛顿法计算
,初始迭代点为
,要求精确到小数点后第5位。
程序:
function[t,d]=newtow1(t0)
t0=0.4;
t=t0-(18*(t0)-cos(t0))/(18+sin(t0));
k=1;
T
(1)=t;
whileabs(t-t0)>0.000005
t0=t;
t=t0-(18*(t0)-cos(t0))/(18+sin(t0));
k=k+1;
T(k)=t;
end
t1=t0;
d=9*(t1)^2-sin(t1)-1;
k
T
end
运行结果:
第四题:
P64T3
程序:
function[t,d]=newtow2(t0)
t0=2.5;
t=t0-(4*(t0)^3-12*(t0)^2-12*(t0)-16)/(12*(t0)^2-24*(t0)-12);
k=1;
T
(1)=t;
whileabs(t-t0)>0.000005
t0=t;
t=t0-(4*(t0)^3-12*(t0)^2-12*(t0)-16)/(12*(t0)^2-24*(t0)-12);
k=k+1;
T(k)=t;
end
t1=t0;
d=(t1)^4-4*(t1)^3-6*(t1)^2-16*(t1)+4;
k
T
end
运行结果:
当x(0)=2.5
当x(0)=3
四.实验小结:
1.通过这次实验,加深了对0.618法的理解。
2.在学习0.618法的过程中,又巩固了倒数、求解函数值等相关知识。
3.利用Matlab的巨大功能来帮助我们学习,进一步提高我们的学习效率。
教师评语:
签名:
日期:
成绩