random generation of a matrix subject to a certain constraint
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
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 comentarios
John D'Errico
el 6 de Mzo. de 2016
Editada: John D'Errico
el 6 de Mzo. de 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.
Respuestas (1)
John D'Errico
el 7 de Mzo. de 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.
Ver también
Categorías
Más información sobre Random Number Generation en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!