w3resource

NumPy: Calculate the QR decomposition of a given matrix

NumPy: Linear Algebra Exercise-13 with Solution

Write a NumPy program to calculate the QR decomposition of a given matrix.

From Wikipedia: In linear algebra, a QR decomposition (also called a QR factorization) of a matrix is a decomposition of a matrix A into a product A = QR of an orthogonal matrix Q and an upper triangular matrix R. QR decomposition is often used to solve the linear least squares problem and is the basis for a particular eigenvalue algorithm, the QR algorithm.

Square matrix
Any real square matrix A may be decomposed as

NumPy: Compute the condition number of a given matrix
where Q is an orthogonal matrix (its columns are orthogonal unit vectors meaning {\displaystyle Q^{\textsf {T}}Q=QQ^{\textsf {T}}=I} {\displaystyle Q^{\textsf {T}}Q=QQ^{\textsf {T}}=I}) and R is an upper triangular matrix (also called right triangular matrix). If A is invertible, then the factorization is unique if we require the diagonal elements of R to be positive.
If instead A is a complex square matrix, then there is a decomposition A = QR where Q is a unitary matrix (so {\displaystyle Q^{*}Q=QQ^{*}=I} {\displaystyle Q^{*}Q=QQ^{*}=I}).
If A has n linearly independent columns, then the first n columns of Q form an orthonormal basis for the column space of A. More generally, the first k columns of Q form an orthonormal basis for the span of the first k columns of A for any 1 ≤ k ≤ n.[1] The fact that any column k of A only depends on the first k columns of Q is responsible for the triangular form of R.[1]

Sample Solution :

Python Code :

# Importing the NumPy library
import numpy as np

# Create a 2x2 NumPy array 'm' containing specific values
m = np.array([[1, 2], [3, 4]])

# Display the original matrix 'm'
print("Original matrix:")
print(m)

# Perform QR decomposition on the matrix 'm' using np.linalg.qr() function
result = np.linalg.qr(m)

# Display the QR decomposition of the matrix 'm'
print("Decomposition of the said matrix:")
print(result) 

Sample Output:

Original matrix:
[[1 2]
 [3 4]]
Decomposition of the said matrix:
(array([[-0.31622777, -0.9486833 ],
       [-0.9486833 ,  0.31622777]]), array([[-3.16227766, -4.42718872],
       [ 0.        , -0.63245553]]))

Explanation:

In the above code –

m = np.array([[1,2],[3,4]]): This line creates a 2x2 NumPy array m with the specified elements.

result = np.linalg.qr(m): This line computes the QR decomposition of the matrix m. The QR decomposition is a technique in linear algebra used to decompose a matrix into an orthogonal matrix Q and an upper triangular matrix R, such that m = Q * R.

Note: The QR decomposition is widely used in numerical methods, especially for solving linear least squares problems.

Python-Numpy Code Editor:

Previous: Write a NumPy program to compute the inverse of a given matrix.
Next: Write a NumPy program to compute the condition number of a given matrix.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.