2009-03-06 57 views

Trả lời

35
  1. tạo ma trận ngẫu nhiên
  2. nhân nó bằng cách chuyển vị riêng của nó
  3. bạn đã có được một ma trận bán xác định dương.

Ví dụ mã (Python):

from scipy import random, linalg 
matrixSize = 10 
A = random.rand(matrixSize,matrixSize) 
B = numpy.dot(A,A.transpose()) 
print 'random positive semi-define matrix for today is', B 
+1

Bạn có chắc chắn không? Theo Wikipedia, bạn có thể tạo ra một ma trận xác định dương (không bán xác định, nhưng vẫn) bằng cách nhân một ma trận L với chuyển vị của nó, trong đó L là ma trận tam giác dưới có tất cả các phần tử đường chéo + ve. Điều này cho thấy rằng một ma trận ngẫu nhiên sẽ không hoạt động nói chung. –

+2

Từ Wikipedia: "Đối với bất kỳ ma trận A nào, ma trận A * A là semidefinite dương," Liên kết: http://en.wikipedia.org/wiki/Positive-definite_matrix#Negative-definite.2C_semidefinite_and_indefinite_matrices – chillysapien

+1

Ah, bạn khá đúng, cảm ơn cho chillysapien đó. Tôi phải giải thích sai số lượng. +1. –

8

Nếu bạn có thể tạo ra một ma trận ngẫu nhiên trong ngôn ngữ của bạn lựa chọn, sau đó bằng cách sử dụng các tài sản đó một ma trận nhân với chuyển vị của nó là tích cực bán definte, bạn có thể tạo ra một dương matix bán xác định ngẫu nhiên

Trong Matlab nó sẽ là đơn giản như

% Generate a random 3x3 matrix 
    A = rand(3,3) 
% Multiply by its tranpose 
    PosSemDef = A'*A 
15

Bạn cần phải rõ ràng về định nghĩa của bạn về "ngẫu nhiên". Các ràng buộc của bạn trên ma trận kết quả là gì? Bạn có muốn các hệ số được thống nhất hoặc phân phối bình thường không? Bạn có muốn các giá trị riêng có phân phối cụ thể không? (Vv)

Có một số cách để tạo ra tích cực semidefinite ma trận M, bao gồm:

  1. Cho một ma trận tùy ý A, tính M = A T A (xây dựng một Cholesky decomposition)
  2. Cho một ma trận S chéo tùy ý với mục chéo không âm, và một ma trận trực giao Q có cùng kích thước, tính M = QSQ T (xây dựng một singular value decomposition)

Vì lý do số tôi có thể chọn phương pháp thứ hai bằng cách tạo ma trận đường chéo với các thuộc tính mong muốn, sau đó tạo Q làm thành phần của một số Householder reflections (tạo một vectơ ngẫu nhiên v, tỷ lệ với chiều dài đơn vị, H = I - 2vv T); Tôi nghi ngờ bạn muốn sử dụng K * N trong đó N là kích thước của ma trận M, và K là một số từ 1,5-3 (tôi đoán về điều này) để đảm bảo rằng nó có đủ mức độ tự do.

Bạn cũng có thể tạo ma trận trực giao Q bằng cách sử dụng Givens rotations: chọn 2 giá trị khác biệt từ 1 đến N và tạo vòng xoay Givens về cặp trục đó, với góc được phân bố đồng đều từ 0 đến 2 * pi. Sau đó, lấy K * N trong số này (cùng một lý do như đoạn trên) và thành phần của chúng tạo ra Q.

chỉnh sửa: Tôi muốn đoán (không chắc chắn) nếu bạn có hệ số được tạo độc lập và được phân phối bình thường, sau đó ma trận như một toàn thể sẽ được "thường phân phối" (bất cứ điều gì có nghĩa là). Đó là sự thật cho vectơ, ít nhất. (N biến ngẫu nhiên Gaussian được tạo độc lập, một cho mỗi thành phần, cung cấp cho bạn một vector ngẫu nhiên Gaussian) Điều này không đúng đối với các thành phần phân bố đồng nhất.

+0

Phương pháp dựa trên phân tích Cholesky chỉ hoạt động với các ma trận _dense_. Cấp, một ma trận Householder ngẫu nhiên sẽ nói chung là dày đặc là tốt, do đó, điều tương tự có thể được nói cho phương pháp dựa trên SVD. – ocramz

2

A '* A sẽ cung cấp ma trận semidefite dương iff và chỉ khi A bị thiếu cấp.Vì vậy, các câu trả lời đã nêu ở trên và sao chép từ wikipedia không phải là sự thật. Để tính toán ma trận semidefinite dương đơn giản, hãy lấy bất kỳ m vuông chữ nhật nào bằng ma trận n (m < n) và nhân nó với vị trí của nó. I E. nếu B là m theo n ma trận, với m < n, thì B '* B là ma trận bán kết. Tôi hi vọng cái này giúp được.

+1

Nếu A có xếp hạng đầy đủ, AA 'vẫn còn dương tính nửa tích cực. Nếu A có m hàng và n cột, thì AA 'có thứ hạng * nhiều nhất * m. –

+0

Vâng, tuyên bố của bạn không đúng Alex. Các eignevalues ​​của A'A luôn giống như của AA '. Vì vậy, nếu A là ma trận vuông có xếp hạng đầy đủ, thì cả A'A và AA 'đều là đối xứng vuông và có xếp hạng đầy đủ. Đơn giản chỉ cần đặt: Nếu A có xếp hạng đầy đủ, thì AA 'KHÔNG THỂ là semidefinite. Nó phải là xác định dương. –

+1

Một ma trận xác định dương xác định là cực dương semidefinite. –

Các vấn đề liên quan