Bird
Raised Fist0
SciPydata~20 mins

QR decomposition in SciPy - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
QR Decomposition Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of QR decomposition matrices shapes
Given the following code using scipy.linalg.qr, what are the shapes of matrices Q and R?
SciPy
import numpy as np
from scipy.linalg import qr

A = np.array([[1, 2], [3, 4], [5, 6]])
Q, R = qr(A, mode='economic')
print(Q.shape, R.shape)
A(2, 2) (2, 2)
B(3, 3) (3, 2)
C(3, 2) (3, 3)
D(3, 2) (2, 2)
Attempts:
2 left
💡 Hint
The 'economic' mode returns reduced shapes for Q and R.
❓ data_output
intermediate
2:00remaining
Result of reconstructing matrix from QR factors
What is the output of the following code that reconstructs matrix A from its QR decomposition?
SciPy
import numpy as np
from scipy.linalg import qr

A = np.array([[2, 0], [1, 3]])
Q, R = qr(A)
reconstructed = np.dot(Q, R)
print(np.round(reconstructed, decimals=5))
A
[[2. 0.]
 [1. 3.]]
B
[[2. 0.]
 [0. 3.]]
C
[[2. 1.]
 [0. 3.]]
D
[[1. 0.]
 [1. 3.]]
Attempts:
2 left
💡 Hint
Multiplying Q and R should give back the original matrix A.
🔧 Debug
advanced
2:00remaining
Identify the error in QR decomposition code
What error will this code raise when executed?
SciPy
import numpy as np
from scipy.linalg import qr

A = np.array([[1, 2], [3, 4]])
Q, R = qr(A, mode='invalid_mode')
AAttributeError: module 'scipy.linalg' has no attribute 'qr'
BTypeError: qr() missing required positional argument
CValueError: Unknown mode 'invalid_mode'
DNo error, code runs successfully
Attempts:
2 left
💡 Hint
Check the valid modes for the qr function.
🧠 Conceptual
advanced
1:30remaining
Properties of Q matrix from QR decomposition
Which statement about the Q matrix from QR decomposition is true?
AQ is always a diagonal matrix
BQ is an orthogonal matrix with Q.T @ Q = I
CQ is a lower triangular matrix
DQ is the inverse of R
Attempts:
2 left
💡 Hint
Think about what orthogonal means for matrices.
🚀 Application
expert
3:00remaining
Using QR decomposition to solve linear system
Given matrix A and vector b, which code correctly solves Ax = b using QR decomposition?
SciPy
import numpy as np
from scipy.linalg import qr

A = np.array([[1, 2], [3, 4]])
b = np.array([5, 11])
A
Q, R = qr(A)
x = np.linalg.solve(R, Q.T @ b)
print(x)
B
Q, R = qr(A)
x = np.linalg.solve(Q, R @ b)
print(x)
C
Q, R = qr(A)
x = np.dot(R, np.linalg.inv(Q)) @ b
print(x)
D
Q, R = qr(A)
x = np.dot(np.linalg.inv(R), np.dot(Q, b))
print(x)
Attempts:
2 left
💡 Hint
Recall that A = QR and solve Rx = Q^T b for x.

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

  1. Step 1: Understand QR decomposition definition

    QR decomposition splits a matrix into two parts: an orthogonal matrix Q and an upper triangular matrix R.
  2. 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.
  3. Final Answer:

    Splits A into an orthogonal matrix Q and an upper triangular matrix R -> Option C
  4. 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

  1. Step 1: Recall scipy QR import syntax

    The correct import is from scipy.linalg import qr.
  2. Step 2: Check usage correctness

    Calling qr(A) returns Q and R. from scipy.linalg import qr Q, R = qr(A) matches this exactly.
  3. Final Answer:

    from scipy.linalg import qr Q, R = qr(A) -> Option A
  4. 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

  1. Step 1: Check input matrix shape

    Matrix A has shape (2, 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).
  3. Final Answer:

    Q is (2, 2) and R is (2, 2) -> Option D
  4. 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

  1. Step 1: Verify import statement

    The import from scipy.linalg import qr is correct.
  2. Step 2: Check qr function returns

    qr(A) returns two values Q and R.
  3. Step 3: Validate input type

    List of lists for A works as qr accepts array-like inputs and converts internally.
  4. Step 4: Check print statement

    print(Q) correctly outputs the Q matrix.
  5. Final Answer:

    Nothing is wrong with this code snippet -> Option A
  6. 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

  1. Step 1: Use QR decomposition to rewrite Ax = b

    Since A = QR, rewrite as QRx = b.
  2. Step 2: Multiply both sides by Q.T

    Multiply by Q.T to get Rx = Q.T b. Define y = Q.T b.
  3. Step 3: Solve upper triangular system

    Now solve Rx = y using back substitution to find x.
  4. Final Answer:

    Compute y = Q.T @ b then solve Rx = y using back substitution -> Option B
  5. 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 unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard