random generation of a matrix subject to a certain constraint
조회 수: 1 (최근 30일)
이전 댓글 표시
Hello there,
Is there a way to randomly generate a mx1 matrix A, such that transpose(A)*B*A>=1? where B is an mxm matrix?
Thank you!
댓글 수: 3
John D'Errico
2016년 3월 6일
편집: John D'Errico
2016년 3월 6일
Anyway, this question is poorly posed, in the same sense that it makes no sense to ask to choose a random positive integer. Without any definition of the distribution of those numbers, it is impossible to generate such a solution.
답변 (1개)
John D'Errico
2016년 3월 7일
B is real, semi-positive definite (or non-negative definite) with a complete set of eigenvectors/values.
Ws can always write A as a linear combination of the eigenvectors.
A = sum(c_i*V_i)
Here V_i is the i'th eigenvector, and c_i is the coefficient in the linear combination. I've used sum sloppily here, as a summation over i, not as the MATLAB function sum.
Then what is A'*B*A?
B*A = sum(c_i*lambda_i*V_i)
If we then take the dot product with the vector A, we need to recognize that the vectors V_i are orthogonal, with unit norm. So dot(V_i,V_i) == 1, and dot(V_i*V_j)=0 for i~=j. Therefore we can write
A'*B*A = sum(c_i^2*lambda_i)
Since the matrix is non-negative definite, all of the lambda_i are real, and non-negative. Therefore, if you will choose a vector A such that A'*B*A>=1, all you need do is choose the c_i such that
sum(c_i*lambda_i) >= 1
As I said, this problem is not well-posed, since without definition of a distribution for the c_i, we cannot choose such a random vector. Regardless, this is a sufficient result for you to do as you wish.
참고 항목
카테고리
Help Center 및 File Exchange에서 Random Number Generation에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!