📖 Scenario: You work as a data analyst and need to break down a matrix into simpler parts to understand its structure better. QR decomposition is a method that helps split a matrix into two parts: one with orthogonal columns and one upper triangular matrix. This is useful in solving systems of equations and data fitting.
🎯 Goal: Build a Python program that uses SciPy to perform QR decomposition on a given matrix and display the resulting matrices.
📋 What You'll Learn
Create a 3x3 matrix using NumPy with exact values
Set up a configuration variable to choose the mode of QR decomposition
Use SciPy's qr function to decompose the matrix
Print the Q and R matrices as output
💡 Why This Matters
🌍 Real World
QR decomposition is used in data fitting, solving linear systems, and simplifying matrix computations in engineering and science.
💼 Career
Understanding QR decomposition helps in roles like data analyst, data scientist, and engineer where matrix operations and numerical methods are common.
Progress0 / 4 steps
1
Create the matrix
Import NumPy as np and create a 3x3 matrix called A with these exact values: [[1, 2, 3], [4, 5, 6], [7, 8, 9]].
SciPy
Hint
Use np.array to create the matrix with the exact values.
2
Set QR decomposition mode
Create a variable called mode and set it to the string 'reduced' to specify the QR decomposition mode.
SciPy
Hint
Assign the string 'reduced' to the variable mode.
3
Perform QR decomposition
Import the qr function from scipy.linalg and use it to decompose matrix A with the mode set by mode. Store the results in variables Q and R.
SciPy
Hint
Use from scipy.linalg import qr and call qr(A, mode=mode).
4
Display the results
Print the matrices Q and R on separate lines using print statements.
SciPy
Hint
Use two print statements: one for Q and one for R.
Practice
(1/5)
1. What does QR decomposition do to a matrix A?
easy
A. Converts A into a lower triangular matrix only
B. Splits A into two diagonal matrices
C. Splits A into an orthogonal matrix Q and an upper triangular matrix R
D. Finds the inverse of A directly
Solution
Step 1: Understand QR decomposition definition
QR decomposition splits a matrix into two parts: an orthogonal matrix Q and an upper triangular matrix R.
Step 2: Compare options with definition
Only Splits A into an orthogonal matrix Q and an upper triangular matrix R correctly describes this split. Others describe different matrix operations.
Final Answer:
Splits A into an orthogonal matrix Q and an upper triangular matrix R -> Option C
Quick Check:
QR decomposition = Q and R matrices [OK]
Hint: QR always produces Q (orthogonal) and R (upper triangular) [OK]
Common Mistakes:
Confusing QR with LU decomposition
Thinking QR produces diagonal matrices
Assuming QR finds matrix inverse
2. Which of the following is the correct way to import and use QR decomposition from scipy?
easy
A. from scipy.linalg import qr
Q, R = qr(A)
B. import scipy.qr
Q, R = scipy.qr(A)
C. from scipy import qr
Q, R = qr(A)
D. import qr from scipy.linalg
Q, R = qr(A)
Solution
Step 1: Recall scipy QR import syntax
The correct import is from scipy.linalg import qr.
Step 2: Check usage correctness
Calling qr(A) returns Q and R. from scipy.linalg import qr
Q, R = qr(A) matches this exactly.
Final Answer:
from scipy.linalg import qr
Q, R = qr(A) -> Option A
Quick Check:
Correct import and call = from scipy.linalg import qr
Q, R = qr(A) [OK]
Hint: Use 'from scipy.linalg import qr' to access QR function [OK]
Common Mistakes:
Trying to import qr directly from scipy
Using incorrect import syntax
Calling qr without importing
3. Given the matrix A = [[1, 2], [3, 4]], what is the shape of Q and R after Q, R = qr(A)?
medium
A. Q is (2, 2) and R is (2, 1)
B. Q is (1, 2) and R is (2, 2)
C. Q is (2, 1) and R is (1, 2)
D. Q is (2, 2) and R is (2, 2)
Solution
Step 1: Check input matrix shape
Matrix A has shape (2, 2).
Step 2: Understand QR output shapes
For a square matrix, Q and R both have the same shape as A, which is (2, 2).
Final Answer:
Q is (2, 2) and R is (2, 2) -> Option D
Quick Check:
Square matrix QR outputs same shape matrices [OK]
Hint: Q and R shapes match input matrix shape for square matrices [OK]
Common Mistakes:
Assuming R has fewer columns
Confusing Q shape with R shape
Thinking Q or R is 1D
4. What is wrong with this code snippet for QR decomposition?
from scipy.linalg import qr
A = [[1, 2], [3, 4]]
Q, R = qr(A)
print(Q)
medium
A. Nothing is wrong with this code snippet
B. The qr function does not return two values
C. Matrix A should be a numpy array, not a list of lists
D. Import statement is incorrect
Solution
Step 1: Verify import statement
The import from scipy.linalg import qr is correct.
Step 2: Check qr function returns
qr(A) returns two values Q and R.
Step 3: Validate input type
List of lists for A works as qr accepts array-like inputs and converts internally.
Step 4: Check print statement
print(Q) correctly outputs the Q matrix.
Final Answer:
Nothing is wrong with this code snippet -> Option A
Quick Check:
Code runs successfully, produces correct Q and R [OK]
Hint: scipy.linalg.qr accepts lists of lists as array-like input [OK]
Common Mistakes:
Thinking Python lists cannot be passed to qr
Misunderstanding qr return values
Incorrect import statements
5. You want to solve the system Ax = b using QR decomposition where A is a 3x3 matrix and b is a vector. Which step correctly describes how to find x after computing Q, R = qr(A)?
hard
A. Compute x = Q @ b then solve Ry = x
B. Compute y = Q.T @ b then solve Rx = y using back substitution
C. Compute y = R @ b then solve Qx = y
D. Compute x = R.T @ Q @ b
Solution
Step 1: Use QR decomposition to rewrite Ax = b
Since A = QR, rewrite as QRx = b.
Step 2: Multiply both sides by Q.T
Multiply by Q.T to get Rx = Q.T b. Define y = Q.T b.
Step 3: Solve upper triangular system
Now solve Rx = y using back substitution to find x.
Final Answer:
Compute y = Q.T @ b then solve Rx = y using back substitution -> Option B
Quick Check:
Use Q.T b and solve Rx = y [OK]
Hint: Multiply b by Q.T, then solve Rx = y [OK]
Common Mistakes:
Multiplying b by Q instead of Q.T
Trying to solve Qx = y instead of Rx = y
Ignoring that R is upper triangular
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.