필터 지우기
필터 지우기

random generation of a matrix subject to a certain constraint

조회 수: 1 (최근 30일)
Mnr
Mnr 2016년 3월 6일
댓글: Mnr 2016년 3월 7일
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
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.
Mnr
Mnr 2016년 3월 7일
편집: Mnr 2016년 3월 7일
B is a real valued positive semi definite matrix.

댓글을 달려면 로그인하십시오.

답변 (1개)

John D'Errico
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 CenterFile Exchange에서 Random Number Generation에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by