random generation of a matrix subject to a certain constraint
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
John D'Errico
le 6 Mar 2016
Modifié(e) : John D'Errico
le 6 Mar 2016
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.
Réponses (1)
John D'Errico
le 7 Mar 2016
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.
Voir également
Catégories
En savoir plus sur Random Number Generation dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!