- 19
- 0
- 约1.41千字
- 约 4页
- 2017-09-02 发布于浙江
- 举报
等式约束极值问题外点罚函数法
重庆科技学院学生实验报告
课程名称 最优化方法与应用 实验项目名称 等式约束极值问题-外点罚函数法 开课学院及实验室 实验日期 学生姓名 学号 专业班级 指导教师 实验成绩 一、实验目的和要求
1.熟悉外点罚函数法的思想和步骤;
2.掌握外点罚函数法求解等式约束的多维极值问题。
二、实验内容和原理
1. 对所给等式约束的多维极值问题用matlab编程进行求解;
三、主要仪器设备
操作系统为Windows 2000及以上的电脑,并装有matlab软件
四、实验操作方法和步骤
根据外点罚函数法的步骤,读懂下列的程序,并用该程序求解所给多维函数极值。
五、实验记录与处理(数据、图表、计算等)
syms x y;
minGeneralPF(x^2+y^2,[1,1],y^2-1,1000,2,[x,y],0.0001)
ans =
0
0
Minf=0
六、实验结果及分析
运用所给程序能够求出最优解X=(0,0)最优值0,
附录function [x,minf] = minGeneralPF(f,x0,h,c1,p,var,eps)
format long;
if nargin == 6
eps = 1.0e-4;
end
k = 0;
FE = 0;
for i=1:length(h)
FE = FE + (h(i))^2;
end
x1 = transpose(x0);
x2 = inf;
while 1
M = c1*p;
FF = M*FE;
SumF = f + FF;
[x2,minf] = minNT(SumF,transpose(x1),var);
if norm(x2 - x1)=eps
x = x2;
break;
else
c1 = M;
x1 = x2;
end
end
minf = subs(f,var,x);
format short;
%牛顿法求解无约束最优化问题
function [x,minf] = minNT(f,x0,var,eps)
format long;
if nargin == 3
eps = 1.0e-6;
end
tol = 1;
x0 = transpose(x0);
gradf = jacobian(f,var);
jacf = jacobian(gradf,var);
while toleps
v = subs(gradf,var,x0);
tol = norm(v);
pv = subs(jacf,var,x0);
p = -inv(pv)*transpose(v);
p = double(p);
x1 = x0 + p;
x0 = x1;
end
x = x1;
minf = subs(f,var,x);
format short;
syms x y;
minGeneralPF(x^2+y^2,[1,1],y^2-1,1000,10,[x,y],0.0001)
ans =
0
1.0000
原创力文档

文档评论(0)