【发布时间】:2013-04-01 16:34:55
【问题描述】:
我有一个二维椭圆,由正定矩阵 X 定义如下:如果 x'*X*x
实际上想出了答案:我会将此作为答案发布,但它不会让我(新用户):
经过一番修改后想通了。基本上,我们将椭圆边界上的点 (x'*X*x = 1) 表示为 X 的特征向量的加权组合,这使得一些数学运算更容易找到这些点。我们可以写成 (au+bv)'X(au+bv)=1 并计算出 a,b 之间的关系。 Matlab 代码如下(对不起,它很乱,只是使用了与笔/纸相同的符号):
function plot_ellipse(X, varargin)
% Plots an ellipse of the form x'*X*x <= 1
% plot vectors of the form a*u + b*v where u,v are eigenvectors of X
[V,D] = eig(X);
u = V(:,1);
v = V(:,2);
l1 = D(1,1);
l2 = D(2,2);
pts = [];
delta = .1;
for alpha = -1/sqrt(l1)-delta:delta:1/sqrt(l1)+delta
beta = sqrt((1 - alpha^2 * l1)/l2);
pts(:,end+1) = alpha*u + beta*v;
end
for alpha = 1/sqrt(l1)+delta:-delta:-1/sqrt(l1)-delta
beta = -sqrt((1 - alpha^2 * l1)/l2);
pts(:,end+1) = alpha*u + beta*v;
end
plot(pts(1,:), pts(2,:), varargin{:})
【问题讨论】:
-
我确实想通了,但它不会让我发布答案。如果我记得,我明天会发布它