MATLAB Problem. How to design matrix from eigenvalues
10 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
This is a previously posted problem that I am working on but I can't find any solutions online. Here is the description:
Write a function that takes one input argument n and outputs a (n x n) square matrix A with the following properties:
- A has an eigenvalue of 3
- all elements of A differ more than .5 from each other
Here is what I have tried so far. I am having difficulty with setting up the specific eigenvalue.
function A = matrix_design(n)
A=randn(n); % set up the matrix
[V,D]=eig(A) % use built-in function for eigendecomposition
abs(A-A.')>0.5 % specify elements of A to differ by 0.5
end
disp(A)
2 commentaires
Walter Roberson
le 23 Jan 2023
Is it possible at all?
d = sym(2)/3
syms c
M = [c+0*d, c+1*d, c+2*d
c+3*d, c+4*d, c+5*d
c+7*d, c+9*d, c+8*d]
[V,D] = eig(M);
c0 = solve(D(1)==3, c)
Mnum = double(subs(M, c, c0))
eig(Mnum)
... I guess so, at least for the 3 x 3 case -- and assuming that "A has an eigenvalue of 3" means that at least one of the eigenvalues of the matrix is 3
Réponse acceptée
Matt J
le 23 Jan 2023
Modifié(e) : Matt J
le 24 Jan 2023
mindist=@(A) min(sqrt(pdist(real(A(:))).^2+pdist(imag(A(:))).^2));
n=5;
Q=rand(n); Q(1)=0;
Q=(1-eye(n)).*Q*0.5/mindist(Q);
r=max(min(sum(Q,2)),0.5);
Q=diag((1:n)*2*r)-Q;
emin=min(eig(Q));
A=Q+speye(n)*(3-emin);
%%CHECK%%%
min(eig(A))
mindist(A)
0 commentaires
Voir également
Catégories
En savoir plus sur Linear Algebra 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!