⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ellipsecg.m

📁 Mathematical Methods by Moor n Stiling.
💻 M
字号:
% Plot contours of an ellipse with large eigenvalue disparity
% and the results of conjugate gradient.
 
% Copyright 1999 by Todd K. Moon

v1 = [1;1];
v2 = [1; -1];
lambda1 = 100;
lambda2 = 5;
R = v1*v1'* lambda1 + v2*v2'*lambda2;
b = [200;200];
[Q,v] = eig(R);
Q1 = Q(:,1); q2 = Q(:,2);
xstar = R\b;
x1 = (-10+xstar(1):.1:10+xstar(1))';
x2 = (-10+xstar(2):.1:10+xstar(2))';
[X1,X2] = meshgrid(x1,x2);
Z = 0.5*(X1.^2 .* R(1,1) + X2.^2 .* R(2,2) + 2*X1.*X2.*R(1,2) - 2*b(1).*X1 - 2*b(2).*X2);
 
hold off
subplot(2,2,1)
contour(x1,x2,Z,50);
axis('equal');
axis('square');
hold on
axis([-10+xstar(1) 10+xstar(1) -10+xstar(2) 10+xstar(2)])
set(gca,'XTick',[-10+xstar(1) -5+xstar(1) 0+xstar(1) 5+xstar(1) 10+xstar(1)])
set(gca,'YTick',[-10+xstar(2) -5+xstar(2) 0+xstar(2) 5+xstar(2) 10+xstar(2)])

x = [1;-9];
y = x-xstar;
z = Q*y;
xn = zeros(2,1);
numiter = 2;
savez = zeros(2,numiter+1);
savez(:,1) = z;
g = R*x - b; 
d = -g;
for i = 1:numiter
  alpha = -g'*d/(d'*R*d)
  xn = x+alpha*d
  plot([x(1) xn(1)],[x(2) xn(2)]);
  plot(x(1),x(2),'o');
  x = xn;
  g = R*x - b;
  beta = g'*R*d/(d'*R*d);
  d = -g + beta *d
  savez(:,i+1) = Q*(x-xstar);
end
plot(x(1),x(2),'o');
xlabel('x_1')
ylabel('x_2')
print -dps ../pictures/conjgrad1.ps
print -deps ../pictures/conjgrad1.eps

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -