1 / 3
文档名称:

内点法matlab仿真.docx

格式:docx   大小:14KB   页数:3
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

内点法matlab仿真.docx

上传人:毛毛虫 2021/10/7 文件大小:14 KB

下载得到文件列表

内点法matlab仿真.docx

文档介绍

文档介绍:编程方式实现:
惩罚函数
function f=fun(x,r)
f=x(1,1)^2+x(2,1)^2-r*log(x(1,1)-1);
步长的函数
function f=fh(x0,h,s,r)
%h为步长
%s为方向
%r为惩罚因子
x1=x0+h*s;
f=fun(x1,r);
3. 步长寻优函数
function h=fsearchh(x0,r,s)
%利用进退法确定高低高区间,利用黄金分割法进行求解
h1=0;%步长的初始点
st=; %步长的步长
h2=h1+st;
f1=fh(x0,h1,s,r);
f2=fh(x0,h2,s,r);
if f1>f2
h3=h2+st;
f3=fh(x0,h3,s,r);
while f2>f3
h1=h2;
h2=h3;
h3=h3+st;
f2=f3;
f3=fh(x0,h3,s,r);
end
else
st=-st;
v=h1;
h1=h2;
h2=v;
v=f1;
f1=f2;
f2=v;
h3=h2+st;
f3=fh(x0,h3,s,r);
while f2>f3
h1=h2;
h2=h3;
h3=h3+st;
f2=f3;
f3=fh(x0,h3,s,r);
end
end
%得到高低高的区间
a=min(h1,h3);
b=max(h1,h3);
%利用黄金分割点法进行求解
h1=1+*(b-a);
h2=1+*(b-a);
f1=fh(x0,h1,s,r);
f2=fh(x0,h2,s,r);
while abs(a-b)>
if f1>f2
a=h1;
h1=h2;
f1=f2;
h2=a+*(b-a);
f2=fh(x0,h2,s,r);
else
b=h2;
h2=h1;
f2=f1;
h1=a+*(b-a);
f1=fh(x0,h1,s,r);
end
end
h=*(a+b);
4. 迭代点的寻优函数
function f=fsearchx(x0,r,epson)
x00=x0;
m=length(x0);
s=z