2009-03-06 17 views

Odpowiedz

35
  1. generowania losowych macierz
  2. pomnożyć przez jego własnym transpozycji
  3. uzyskaniu pozytywnego pół określony matrycy.

Przykładowy kod (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

Czy jesteś pewien? Według Wikipedii można wytworzyć macierz dodatnią, pewną (nie na wpół określoną, ale wciąż) przez pomnożenie macierzy L przez jej transpozycję, gdzie L jest niższą trójkątną macierzą, która ma wszystkie przekątne elementy + ve. Sugeruje to, że losowa macierz nie będzie działać w ogóle. –

+2

Z Wikipedii: "Dla każdej matrycy A, macierz A * A jest dodatnia pół-finalna," Link: http://en.wikipedia.org/wiki/Positive-definite_matrix#Negative-definite.2C_semidefinite_and_indefinite_matrices – chillysapien

+1

Ach, jesteś całkiem racja, dzięki za chillysapien. Musiałem źle zinterpretować kwantyfikatory. +1. –

8

Jeśli można wygenerować losowy matrycy w twoim języku, a następnie za pomocą właściwości, że macierz pomnożona przez jej transponowania jest pozytywny naczepa definte, ty może wygenerować losowy dodatnią pół-definitywna Matix

W Matlab byłoby tak proste, jak

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

trzeba być jasne w swojej definicji "losowy". Jakie są twoje ograniczenia na wynikowej macierzy? Czy chcesz, aby współczynniki były równomiernie lub normalnie dystrybuowane? Czy chcesz, aby wartości własne miały konkretną dystrybucję? (Itd.)

Istnieje szereg sposobów generowania dodatnich półokreśloną macierzy M ', w tym:

  1. przypisano arbitralną macierzy A, obliczyć K = a T A (budowy Cholesky decomposition)
  2. względu dowolną macierzą diagonalną S z nieujemne ukośnych pozycji, oraz Q matrycy ortonormalną o tej samej wielkości, obliczyć K = QSQ T (budowy singular value decomposition)

Ze względów numerycznych prawdopodobnie wybrałbym drugie podejście, generując macierz diagonalną o pożądanych właściwościach, a następnie generując Q jako kompozycję o numerze Householder reflections (generuję losowy wektor v, skalę do długości jednostki, H = I - 2vv T); Podejrzewam, że chciałbyś użyć K * N, gdzie N jest rozmiarem macierzy M, a K to liczba pomiędzy 1,5-3 (zgaduję na tym), która zapewnia, że ​​ma wystarczającą stopnie swobody.

Można również wygenerować ortonormalną macierz Q przy użyciu Givens rotations: wybrać 2 różne wartości od 1 do N i wygenerować obrót Dając o tej parze osi, z kątem równomiernie rozłożonym od 0 do 2 * pi. Następnie wziąć k * N z nich (tak samo rozumowanie jak powyżej ust) oraz ich kompozycja daje Q.

edit: ja bym odgadnąć (nie jestem pewien), że jeśli mają współczynniki, które są generowane niezależnie i rozkład normalny, wtedy matryca jako całość byłaby "normalnie rozprowadzana" (cokolwiek to znaczy). Dotyczy to przynajmniej wektorów. (N niezależnie wygenerowanych zmiennych losowych Gaussa, po jednym dla każdego komponentu, daje losowy wektor Gaussa). Nie jest to prawdą dla jednorodnie rozproszonych komponentów.

+0

Metoda oparta na dekompozycji Cholesky działa tylko dla _dense_ matryc. To prawda, że ​​losowa matryca dla posiadaczy Domowników będzie na ogół również gęsta, więc to samo można powiedzieć o metodzie opartej na SVD. – ocramz

2

A '* A da dodatnią matrycę półpokrytową iff i tylko jeśli A ma niedobór rang.Tak więc powyższe odpowiedzi i skopiowane z wikipedii nie są ogólnie prawdziwe. Aby obliczyć dodatnią macierz pół -kończoną, po prostu weźmy dowolną prostokątną m przez n macierz (m < n) i pomnóżmy ją przez jej transpozycję. To znaczy. jeśli B jest macierzą m na n, z m < n, wówczas B '* B jest macierzą pół -kończoną. Mam nadzieję, że to pomoże.

+1

Jeśli A ma pełną rangę, AA 'jest nadal seminefinite positive. Jeśli A ma m wierszy i n kolumn, to AA 'ma rangę * najwyżej * m. –

+0

Cóż, twoje oświadczenie nie jest prawdziwe Alex. Wartości eignevalues ​​A'A są zawsze takie same jak w AA '. Więc jeśli A jest macierzą kwadratową o pełnej randze, to zarówno A'A, jak i AA 'są zarówno kwadratowe symetryczne jak i pełne. Mówiąc najprościej: jeśli A ma pełną rangę, to AA 'NIE MOŻE być seminefinite. Musi być określona pozytywnie. –

+1

Dodatnia macierz określona jest w szczególności seminefinite pozytywna. –