weixin_40467959 2017-10-07 15:51 采纳率: 0%
浏览 1585
已结题

惩罚函数内点法算法索引超出矩阵维度为什么呀 求求求急急急!!!

这个代码我运行后总显示索引超出矩阵维度是为什么呀 求求求急急急!!!

function f=fun(x,r)
f=x(1,1)^2+x(2,2)^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)

function h=fsearchh(x0,r,s)%利用进退法确定高低高区间,利用黄金分割法进行求解
h1=0;%步长的初始点
st=0.001;%步长的步长
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=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+0.382*(b-a);
h2=1+0.618*(b-a);
f1=fh(x0,h1,s,r);
f2=fh(x0,h2,s,r);
while abs(a-b)>0.0001
if f1>f2
a=h1;h1=h2;
f1=f2;
h2=a+0.618*(b-a);
f2=fh(x0,f2,s,r);
else b=h2;
h2=h1;
f2=f1;
h1=a+0.382*(b-a);
f1=fh(x0,h1,s,r);
end
end
h=0.5*(a+b)

function f=fsearchx(x0,r,epson)
x00=x0;
m=length(x0);
s=zeros(m,1);
for i=1:m
s(i)=1;
h=fsearchh(x0,r,s);
x1=x0+h*s;
s(i)=0;
x0=x1;
end
while norm(x1-x00)>epson
x00=x1;
for i=1:m
s(i)=1;
h=fsearchh(x0,r,s);
x1=x0+h*s;
s(i)=0;
x0=x1;
end
end
f=x1;

clear
clc
x0=[2;2];%给定初始点
r=1;
c=0.1;
epson=0.001;
x1=fsearchx(x0,0.1,epson);
while norm(x0-x1)>epson
x0=x1;
r=r*c
x1=fsearchx(x0,r,epson)
end
disp
x1

  • 写回答

2条回答 默认 最新

  • devmiao 2017-10-08 04:40
    关注
    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?