Skip to main content
deleted 28 characters in body; edited tags; edited title
Source Link
Anton Menshov
  • 8.7k
  • 7
  • 41
  • 94

rank Rank of a double-precision augmented matrix

Let $A$ be a matrix with real entries, and let $A_+$ be $A$ augmented by a single column. From linear algebra we know \begin{equation} \operatorname{rank}(A_+) = \operatorname{rank}(A) \hspace{10pt} or \hspace{10pt} \operatorname{rank}(A_+) = \operatorname{rank}(A)+1 \end{equation} But what if $A$ has double-precision entries and $\operatorname{rank}()$ is a commonly used function in a numerical library ?

The most popular rank function seems to be the one in MATLAB, which computes the rank as the number of singular values that are larger than a specific tolerance ${\tt tol}$. The default ${\tt tol = max(size(A))*eps(norm(A))}$ seems to be carefully chosen.

Q1: Does MATLAB's ${\tt rank()}$ satisfy the above  ?

Q2: If not, then is there a more clever choice of ${\tt tol}$ that does  ?

Thanks, Glenn

rank of a double-precision augmented matrix

Let $A$ be a matrix with real entries, and let $A_+$ be $A$ augmented by a single column. From linear algebra we know \begin{equation} \operatorname{rank}(A_+) = \operatorname{rank}(A) \hspace{10pt} or \hspace{10pt} \operatorname{rank}(A_+) = \operatorname{rank}(A)+1 \end{equation} But what if $A$ has double-precision entries and $\operatorname{rank}()$ is a commonly used function in a numerical library ?

The most popular rank function seems to be the one in MATLAB, which computes the rank as the number of singular values that are larger than a specific tolerance ${\tt tol}$. The default ${\tt tol = max(size(A))*eps(norm(A))}$ seems to be carefully chosen.

Q1: Does MATLAB's ${\tt rank()}$ satisfy the above  ?

Q2: If not, then is there a more clever choice of ${\tt tol}$ that does  ?

Thanks, Glenn

Rank of a double-precision augmented matrix

Let $A$ be a matrix with real entries, and let $A_+$ be $A$ augmented by a single column. From linear algebra we know \begin{equation} \operatorname{rank}(A_+) = \operatorname{rank}(A) \hspace{10pt} or \hspace{10pt} \operatorname{rank}(A_+) = \operatorname{rank}(A)+1 \end{equation} But what if $A$ has double-precision entries and $\operatorname{rank}()$ is a commonly used function in a numerical library ?

The most popular rank function seems to be the one in MATLAB, which computes the rank as the number of singular values that are larger than a specific tolerance ${\tt tol}$. The default ${\tt tol = max(size(A))*eps(norm(A))}$ seems to be carefully chosen.

Q1: Does MATLAB's ${\tt rank()}$ satisfy the above?

Q2: If not, then is there a more clever choice of ${\tt tol}$ that does?

Source Link

rank of a double-precision augmented matrix

Let $A$ be a matrix with real entries, and let $A_+$ be $A$ augmented by a single column. From linear algebra we know \begin{equation} \operatorname{rank}(A_+) = \operatorname{rank}(A) \hspace{10pt} or \hspace{10pt} \operatorname{rank}(A_+) = \operatorname{rank}(A)+1 \end{equation} But what if $A$ has double-precision entries and $\operatorname{rank}()$ is a commonly used function in a numerical library ?

The most popular rank function seems to be the one in MATLAB, which computes the rank as the number of singular values that are larger than a specific tolerance ${\tt tol}$. The default ${\tt tol = max(size(A))*eps(norm(A))}$ seems to be carefully chosen.

Q1: Does MATLAB's ${\tt rank()}$ satisfy the above ?

Q2: If not, then is there a more clever choice of ${\tt tol}$ that does ?

Thanks, Glenn