📄 int_mat.txt
字号:
clear all
clc
n=3;
delt=0.5316;
wucha=0.001;
A=[1 1 2;2 1 3];
c=[2;1;4];
x0=[1.5;0.5;0.5];
y0=[-4;2];
z0=[2;3;6];
k=1;
e=[1;1;1];
x(:,k)=x0; % 将x赋值给x的第k列;
y(:,k)=y0;
z(:,k)=z0;
d(:,k)=x(:,k)'*z(:,k);
u(k)=d/n;
while d>wucha
u(k+1)=u(k)*(1-delt/sqrt(n)); % 可以让u减少的更快,比如把n改为n-1,n-2等,这样运行效率则会更高;
X=diag(x(:,k));
Z=diag(z(:,k));
delt_y(:,k)=-inv(A*inv(Z)*X*A')*A*inv(Z)*(X*Z*e-u(k+1)*e);
delt_x(:,k)=inv(Z)*(X*Z*e-u(k+1)*e)+inv(Z)*X*A'*delt_y(:,k);
delt_z(:,k)=-A'*delt_y(:,k);
x(:,k+1)=x(:,k)-delt_x(:,k);
y(:,k+1)=y(:,k)-delt_y(:,k);
z(:,k+1)=z(:,k)-delt_z(:,k);
f(:,k)=c'*x(:,k+1);
d(:,k)=(x(:,k+1))'*z(:,k+1);
k=k+1;
end
subplot(2,2,1),plot(x(1,,'*')
subplot(2,2,2),plot(x(2,,'*')
subplot(2,2,3),plot(x(3,,'*')
subplot(2,2,4),plot(f,'rh') % 目标值
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -