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.



Become a Patron!

Follow us on Facebook and Twitter for latest update.

It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.

https://www.w3resource.com/python-exercises/numpy/linear-algebra/numpy-linear-algebra-exercise-13.php