I have got a problem like A*x=lambda*x
, where A
is of order d*d
, x
is of order d*c
and lambda is a constant. A
and lambda
are known and the matrix x
is unknown.
Is there any way to solve this problem in matlab?? (Like eigen values but x
is a d*c
matrix instead of being a vector).
相关问题
- Extract matrix elements using a vector of column i
- Reshape matrix by rows
- Non-Conformable Arrays when Doing Matrix Multiplic
- How to perform element-wise custom function with t
- How do you get R's null and residual deviance
相关文章
- Numpy matrix of coordinates
- Which is the best way to multiply a large and spar
- How do I append metadata to an image in Matlab?
- C++: How to use unnamed template parameters in cla
- How to compute the power of a matrix in R [duplica
- How can I write-protect the Matlab language?
- Create n by n matrix with unique values from 1:n
- `std::sin` is wrong in the last bit
You can transform this problem. Write x as vector by by using x(:) (has size d*c x 1). Then A can be rewritten to a d*c x d*c matrix which has c versions of A along the diagonal.
Now it's a simple eigenvalue problem.
If I've understood you correctly, there will not necessarily be any solutions for
x
. IfA*x=lambda*x
, then any columny
ofx
satisfiesA*y=lambda*y
, so the columns ofx
are simply eigenvectors ofA
corresponding to the eigenvaluelambda
, and there will only be any solutions iflambda
is in fact an eigenvalue.From the documentation:
You can use this to check if
lambda
is an eigenvalue, and find any corresponding eigenvectors.Its actually trivial. Your requirement is that A*X = lambda*X, where X is an array. Effectively, look at what happens for a single column of X. If An array X exists, then it is true that
A*X(:,i) = lambda*X(:,i)
And this must be true for the SAME value of lambda for all columns of X. Essentially, this means that X(:,i) is an eigenvector of A, with corresponding eigenvalue lambda. More importantly, it means that EVERY column of X has the same eigenvalue as every other column.
So a trivial solution to this problem is to simply have a matrix X with identical columns, as long as that column is an eigenvector of A. If an eigenvalue has multiplicity greater than one (therefore there are multiple eigenvectors with the same eigenvalue) then the columns of X may be any linear combination of those eigenvectors.
Try it in practice. I'll pick some simple matrix A.
The second column of V is an eigenvector, with eigenvalue of 5. We can arbitrarily scale an eigenvector by any constant. So now pick the vector vec, and create a matrix with replicated columns.
This should surprise nobody.