/usr/share/doc/octave/octave.html/Expressions-Involving-Diagonal-Matrices.html is in octave-doc 4.2.2-1ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Expressions Involving Diagonal Matrices (GNU Octave)</title>
<meta name="description" content="Expressions Involving Diagonal Matrices (GNU Octave)">
<meta name="keywords" content="Expressions Involving Diagonal Matrices (GNU Octave)">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<link href="index.html#Top" rel="start" title="Top">
<link href="Concept-Index.html#Concept-Index" rel="index" title="Concept Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Matrix-Algebra.html#Matrix-Algebra" rel="up" title="Matrix Algebra">
<link href="Expressions-Involving-Permutation-Matrices.html#Expressions-Involving-Permutation-Matrices" rel="next" title="Expressions Involving Permutation Matrices">
<link href="Matrix-Algebra.html#Matrix-Algebra" rel="prev" title="Matrix Algebra">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
ul.no-bullet {list-style: none}
-->
</style>
<link rel="stylesheet" type="text/css" href="octave.css">
</head>
<body lang="en">
<a name="Expressions-Involving-Diagonal-Matrices"></a>
<div class="header">
<p>
Next: <a href="Expressions-Involving-Permutation-Matrices.html#Expressions-Involving-Permutation-Matrices" accesskey="n" rel="next">Expressions Involving Permutation Matrices</a>, Up: <a href="Matrix-Algebra.html#Matrix-Algebra" accesskey="u" rel="up">Matrix Algebra</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="Expressions-Involving-Diagonal-Matrices-1"></a>
<h4 class="subsection">21.2.1 Expressions Involving Diagonal Matrices</h4>
<a name="index-diagonal-matrix-expressions"></a>
<p>Assume <var>D</var> is a diagonal matrix. If <var>M</var> is a full matrix,
then <code>D*M</code> will scale the rows of <var>M</var>. That means,
if <code>S = D*M</code>, then for each pair of indices
i,j it holds
</p>
<div class="example">
<pre class="example">S(i,j) = D(i,i) * M(i,j).
</pre></div>
<p>Similarly, <code>M*D</code> will do a column scaling.
</p>
<p>The matrix <var>D</var> may also be rectangular, m-by-n where <code>m != n</code>.
If <code>m < n</code>, then the expression <code>D*M</code> is equivalent to
</p>
<div class="example">
<pre class="example">D(:,1:m) * M(1:m,:),
</pre></div>
<p>i.e., trailing <code>n-m</code> rows of <var>M</var> are ignored. If <code>m > n</code>,
then <code>D*M</code> is equivalent to
</p>
<div class="example">
<pre class="example">[D(1:n,:) * M; zeros(m-n, columns (M))],
</pre></div>
<p>i.e., null rows are appended to the result.
The situation for right-multiplication <code>M*D</code> is analogous.
</p>
<a name="index-pseudoinverse-1"></a>
<p>The expressions <code>D \ M</code> and <code>M / D</code> perform inverse scaling.
They are equivalent to solving a diagonal (or rectangular diagonal)
in a least-squares minimum-norm sense. In exact arithmetic, this is
equivalent to multiplying by a pseudoinverse. The pseudoinverse of
a rectangular diagonal matrix is again a rectangular diagonal matrix
with swapped dimensions, where each nonzero diagonal element is replaced
by its reciprocal.
The matrix division algorithms do, in fact, use division rather than
multiplication by reciprocals for better numerical accuracy; otherwise, they
honor the above definition. Note that a diagonal matrix is never truncated due
to ill-conditioning; otherwise, it would not be of much use for scaling. This
is typically consistent with linear algebra needs. A full matrix that only
happens to be diagonal (and is thus not a special object) is of course treated
normally.
</p>
<p>Multiplication and division by diagonal matrices work efficiently also when
combined with sparse matrices, i.e., <code>D*S</code>, where <var>D</var> is a diagonal
matrix and <var>S</var> is a sparse matrix scales the rows of the sparse matrix and
returns a sparse matrix. The expressions <code>S*D</code>, <code>D\S</code>, <code>S/D</code>
work analogically.
</p>
<p>If <var>D1</var> and <var>D2</var> are both diagonal matrices, then the expressions
</p>
<div class="example">
<pre class="example">D1 + D2
D1 - D2
D1 * D2
D1 / D2
D1 \ D2
</pre></div>
<p>again produce diagonal matrices, provided that normal
dimension matching rules are obeyed. The relations used are same as described
above.
</p>
<p>Also, a diagonal matrix <var>D</var> can be multiplied or divided by a scalar, or
raised to a scalar power if it is square, producing diagonal matrix result in
all cases.
</p>
<p>A diagonal matrix can also be transposed or conjugate-transposed, giving the
expected result. Extracting a leading submatrix of a diagonal matrix, i.e.,
<code>D(1:m,1:n)</code>, will produce a diagonal matrix, other indexing expressions
will implicitly convert to full matrix.
</p>
<p>Adding a diagonal matrix to a full matrix only operates on the diagonal
elements. Thus,
</p>
<div class="example">
<pre class="example">A = A + eps * eye (n)
</pre></div>
<p>is an efficient method of augmenting the diagonal of a matrix. Subtraction
works analogically.
</p>
<p>When involved in expressions with other element-by-element operators,
<code>.*</code>, <code>./</code>, <code>.\</code> or <code>.^</code>, an implicit conversion to full
matrix will take place. This is not always strictly necessary but chosen to
facilitate better consistency with <small>MATLAB</small>.
</p>
<hr>
<div class="header">
<p>
Next: <a href="Expressions-Involving-Permutation-Matrices.html#Expressions-Involving-Permutation-Matrices" accesskey="n" rel="next">Expressions Involving Permutation Matrices</a>, Up: <a href="Matrix-Algebra.html#Matrix-Algebra" accesskey="u" rel="up">Matrix Algebra</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p>
</div>
</body>
</html>
|