function LinearCofficientMethod
X0=[-1;-1;-1];
format long;
M0=1;
C=8;
e1=0.001;
e2=0.001;
k=0;
t=0;
kk=0;
k1=0;
N=100;
N1=50;
n=length(X0);
while t<N1
syms X1 X2 X3 real;
gux1=X1;
gux2=X2;
gux3=X3;
gux4=X1+X2+X3-6;
gux1_func=inline(vectorize(gux1),'X1','X2','X3');
gux2_func=inline(vectorize(gux2),'X1','X2','X3');
gux3_func=inline(vectorize(gux3),'X1','X2','X3');
if gux1_func(X0(1),X0(2),X0(3))>=0
gux1=0;
end
if gux2_func(X0(1),X0(2),X0(3))>=0
gux2=0;
end
if gux3_func(X0(1),X0(2),X0(3))>=0
gux3=0;
end
fx=0.36*((X1-1)^2+(X2-2)^2+(X3-3)^2)+0.64*(X1^2+2*X2^2+3*X3^2)+M0*(gux1^2+gux2^2+gux3^2+gux4^2);
fx_func=inline(vectorize(fx),'X1','X2','X3');
Xr=X0;
t=t+1;
while kk<N
kk=kk+1;
if k==0
H0=eye(3);
g0_1=diff(fx,'X1',1);
g0_2=diff(fx,'X2',1);
g0_3=diff(fx,'X3',1);
g0_1_func=inline(vectorize(g0_1),'X1','X2','X3');
g0_2_func=inline(vectorize(g0_2),'X1','X2','X3');
g0_3_func=inline(vectorize(g0_3),'X1','X2','X3');
g0=[g0_1_func(X0(1),X0(2),X0(3));g0_2_func(X0(1),X0(2),X0(3));g0_3_func(X0(1),X0(2),X0(3))];
end
Xi=X0;
Sk=H0*g0;
syms r real;
X0=X0+r*Sk;
fx_r=vpa(fx_func(X0(1),X0(2),X0(3)),5);
fx_r_func=diff(fx_r,r,1);
fx_r_func_func=inline(vectorize(fx_r_func),'r');
options=optimset('Display','off');
r=fzero(fx_r_func_func,1,options);
X0=Xi+r*Sk;
g0_1=diff(fx,'X1',1);
g0_2=diff(fx,'X2',1);
g0_3=diff(fx,'X3',1);
g0_1_func=inline(vectorize(g0_1),'X1','X2','X3');
g0_2_func=inline(vectorize(g0_2),'X1','X2','X3');
g0_3_func=inline(vectorize(g0_3),'X1','X2','X3');
g0=[g0_1_func(X0(1),X0(2),X0(3));g0_2_func(X0(1),X0(2),X0(3));g0_3_func(X0(1),X0(2),X0(3))];
if sqrt(sum(g0.^2))<=e1
break;
end
if k==n
k=0;
else
g1=[g0_1_func(Xi(1),Xi(2),Xi(3));g0_2_func(Xi(1),Xi(2),Xi(3));g0_3_func(Xi(1),Xi(2),Xi(3))];
delta_g=g0-g1;
delta_x=X0-Xi;
Ak=delta_x*(delta_x')/(delta_x'*delta_g);
Bk=H0*delta_g*(H0*delta_g)'*inv(delta_g'*H0*delta_g);
H0=H0+Ak-Bk;
k=k+1;
end
end
if sqrt(sum((Xi-X0).^2))<e1&abs((fx_func(Xi(1),Xi(2),Xi(3))-fx_func(X0(1),X0(2),X0(3)))/fx_func(Xi(1),Xi(2),Xi(3)))<e2
break;
else
M0=M0*C;
end
end
disp(t);
disp(X0);
没有合适的资源?快使用搜索试试~ 我知道了~
MATLAB的梯度法,内点法,外点法,罚函数,惩罚函数
共6个文件
m:6个
3星 · 超过75%的资源 需积分: 38 227 下载量 190 浏览量
2018-01-30
11:18:31
上传
评论 11
收藏 3KB RAR 举报
温馨提示
MATLAB的梯度法,内点法,外点法,罚函数,惩罚函数,线性梯度法,源程序,按照提示输入,可直接运行-MATLAB' s gradient method, interior point method, outside the point of law, penalty function, penalty function, the linear gradient method, source code, follow the prompts to input, can be directly run
资源推荐
资源详情
资源评论
收起资源包目录
MATLAB的梯度法,内点法,外点法,罚函数,惩罚函数.rar (6个子文件)
Jacobi_iterative_method.m 1KB
LinearCofficientMethod.m 3KB
ExteriorPenaltyFunctionMethod.m 2KB
Conjugate_grad_2d.m 701B
InteriorPenaltyFunctionMethod.m 959B
Conjugate_grads_method.m 1KB
共 6 条
- 1
资源评论
- yyyiiiu2021-10-31好几个函数混在一起了,没有注释,也没有说明,不太容易看懂
- weixin_436247112020-09-07无注释,有点看不懂
普通网友
- 粉丝: 1
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功