Một ma trận tương quan là đối xứng, bán chính xác dương và có 'trên đường chéo chính của nó. Người ta có thể tìm thấy ma trận tương quan bằng cách giải chương trình semidefinite (SDP) sau đây trong đó hàm mục tiêu là tùy ý, giả sử, hàm zeron × n1n×n
minimizesubject to⟨On,X⟩x11=x22=⋯=xnn=1X⪰On
Nếu một có các ràng buộc bổ sung, chẳng hạn như các ràng buộc thưa thớt
xij=0 for all (i,j)∈Z⊂[n]×[n]
và các ràng buộc không phủ định, , sau đó người ta giải quyết SDP sauX≥On
minimizesubject to⟨On,X⟩x11=x22=⋯=xnn=1xij=0 for all (i,j)∈Z⊂[n]×[n]X≥OnX⪰On
Một ví dụ3×3
Giả sử chúng ta muốn có và . Đây là tập lệnh MATLAB + CVX ,x 12 , x 23 ≥ 0x13=0x12,x23≥0
cvx_begin sdp
variable X(3,3) symmetric
minimize( trace(zeros(3,3)*X) )
subject to
% put ones on the main diagonal
X(1,1)==1
X(2,2)==1
X(3,3)==1
% put a zero in the northeast and southwest corners
X(1,3)==0
% impose nonnegativity
X(1,2)>=0
X(2,3)>=0
% impose positive semidefiniteness
X >= 0
cvx_end
Chạy kịch bản,
Calling sedumi: 8 variables, 6 equality constraints
------------------------------------------------------------
SeDuMi 1.21 by AdvOL, 2005-2008 and Jos F. Sturm, 1998-2003.
Alg = 2: xz-corrector, Adaptive Step-Differentiation, theta = 0.250, beta = 0.500
eqs m = 6, order n = 6, dim = 12, blocks = 2
nnz(A) = 8 + 0, nnz(ADA) = 36, nnz(L) = 21
it : b*y gap delta rate t/tP* t/tD* feas cg cg prec
0 : 3.00E+000 0.000
1 : -1.18E-001 6.45E-001 0.000 0.2150 0.9000 0.9000 1.86 1 1 1.2E+000
2 : -6.89E-004 2.25E-002 0.000 0.0349 0.9900 0.9900 1.52 1 1 3.5E-001
3 : -6.48E-009 9.72E-007 0.097 0.0000 1.0000 1.0000 1.01 1 1 3.8E-006
4 : -3.05E-010 2.15E-009 0.000 0.0022 0.9990 0.9990 1.00 1 1 1.5E-007
5 : -2.93E-016 5.06E-015 0.000 0.0000 1.0000 1.0000 1.00 1 1 3.2E-013
iter seconds digits c*x b*y
5 0.3 5.8 0.0000000000e+000 -2.9302886987e-016
|Ax-b| = 1.7e-015, [Ay-c]_+ = 6.1E-016, |x|= 2.0e+000, |y|= 1.5e-015
Detailed timing (sec)
Pre IPM Post
1.563E-001 2.500E-001 1.094E-001
Max-norms: ||b||=1, ||c|| = 0,
Cholesky |add|=0, |skip| = 0, ||L.L|| = 1.
------------------------------------------------------------
Status: Solved
Optimal value (cvx_optval): +0
Hãy xem CVX tìm thấy giải pháp nào,
>> X
X =
1.0000 0.4143 0
0.4143 1.0000 0.4143
0 0.4143 1.0000
Là ma trận này semidefinite tích cực? Tích cực nhất định?
>> rank(X)
ans =
3
>> eigs(X)
ans =
1.5860
1.0000
0.4140
Đó là xác định tích cực, như mong đợi. Chúng ta có thể tìm thấy các ma trận tương quan nửa cực dương bằng cách chọn một hàm mục tiêu không khác (tuyến tính).