Eigenvalues and eigenvectors (eig) in MATLAB - Time & Space Complexity
When we find eigenvalues and eigenvectors of a matrix, we want to know how long it takes as the matrix gets bigger.
We ask: How does the work grow when the matrix size increases?
Analyze the time complexity of the following code snippet.
A = rand(n); % Create an n-by-n random matrix
[V, D] = eig(A); % Compute eigenvectors and eigenvalues
This code creates a square matrix and finds its eigenvalues and eigenvectors.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: The algorithm internally performs matrix factorizations and iterative procedures.
- How many times: These operations depend on the matrix size n, often involving nested loops over n.
As the matrix size n grows, the number of calculations grows quickly because the algorithm works with all rows and columns together.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | About 1,000 operations |
| 100 | About 1,000,000 operations |
| 1000 | About 1,000,000,000 operations |
Pattern observation: The work grows roughly by the cube of n, so doubling n makes the work about eight times bigger.
Time Complexity: O(n^3)
This means if the matrix size doubles, the time to find eigenvalues and eigenvectors increases about eight times.
[X] Wrong: "Finding eigenvalues is as fast as just scanning the matrix once."
[OK] Correct: The process involves complex calculations that look at all parts of the matrix many times, so it takes much longer than a simple scan.
Understanding how eigenvalue computations scale helps you explain performance in real projects and shows you know how algorithms behave with bigger data.
"What if we only want eigenvalues but not eigenvectors? How would the time complexity change?"
Practice
eig return when applied to a square matrix?Solution
Step 1: Understand the purpose of
Theeigeigfunction in MATLAB is designed to compute eigenvalues and eigenvectors of a square matrix.Step 2: Recall the output of
When called with two output arguments,eig[V,D] = eig(A), it returns eigenvectors inVand eigenvalues in diagonal matrixD.Final Answer:
Eigenvalues and eigenvectors of the matrix -> Option AQuick Check:
eigreturns eigenvalues and eigenvectors [OK]
- Thinking eig returns only eigenvalues
- Confusing eig with inverse function
- Assuming eig returns a scalar
A in MATLAB?Solution
Step 1: Recall MATLAB function call syntax
In MATLAB, functions return outputs using square brackets for multiple outputs, e.g.,[out1, out2] = function(input);.Step 2: Match correct syntax for
The correct way to get eigenvectorseigVand eigenvaluesDis[V,D] = eig(A);.Final Answer:
[V,D] = eig(A); -> Option AQuick Check:
Use square brackets for multiple outputs [OK]
- Using commas instead of brackets for outputs
- Assigning outputs incorrectly
- Using arrow notation which is invalid in MATLAB
A = [2 0; 0 3];, what is the output of [V,D] = eig(A); D?Solution
Step 1: Identify eigenvalues of matrix A
MatrixAis diagonal with entries 2 and 3, so eigenvalues are 2 and 3.Step 2: Understand output of
DfromeigDis a diagonal matrix with eigenvalues on the diagonal, soD = [2 0; 0 3].Final Answer:
[[2 0]; [0 3]] -> Option CQuick Check:
Diagonal matrix D has eigenvalues 2 and 3 [OK]
- Mixing order of eigenvalues
- Confusing eigenvalues with eigenvectors
- Expecting eigenvalues as a vector instead of diagonal matrix
A?
eigenvalues = eig(A, 'vector');
Solution
Step 1: Check
The MATLABeigfunction argumentseigfunction does not take a second argument like 'vector'. It only takes the matrix as input.Step 2: Identify correct usage to get eigenvalues as vector
To get eigenvalues as a vector, simply calleig(A)without extra arguments.Final Answer:
Theeigfunction does not accept 'vector' as a second argument -> Option DQuick Check:
Check function syntax carefully [OK]
- Adding unsupported arguments to eig
- Assuming eig returns vector by default without output assignment
- Confusing eig with other functions
A = [4 1 0; 1 4 1; 0 1 4];. How can you find the eigenvector corresponding to the largest eigenvalue using MATLAB?Solution
Step 1: Compute eigenvalues and eigenvectors
Use[V,D] = eig(A);to get eigenvectorsVand eigenvalues in diagonal matrixD.Step 2: Find index of largest eigenvalue
Extract eigenvalues withdiag(D), then find index of max eigenvalue with[~, idx] = max(diag(D));.Step 3: Select eigenvector corresponding to largest eigenvalue
Use index to get eigenvector:largestVec = V(:, idx);.Final Answer:
[V,D] = eig(A); [~, idx] = max(diag(D)); largestVec = V(:, idx); -> Option BQuick Check:
Index max eigenvalue, select eigenvector column [OK]
- Using eigenvalues matrix D as vector directly
- Selecting wrong column of eigenvectors
- Confusing eigenvalues with eigenvectors
Ready to prove it?
Pass the test and this pattern moves unknown
