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 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322
|
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<!--Converted with LaTeX2HTML 96.1-h (September 30, 1996) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds -->
<HTML>
<HEAD>
<TITLE>How to Measure Errors</TITLE>
<META NAME="description" CONTENT="How to Measure Errors">
<META NAME="keywords" CONTENT="slug">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<LINK REL=STYLESHEET HREF="slug.css">
</HEAD>
<BODY LANG="EN" >
<A NAME="tex2html3902" HREF="node136.html"><IMG WIDTH=37 HEIGHT=24 ALIGN=BOTTOM ALT="next" SRC="http://www.netlib.org/utk/icons/next_motif.gif"></A> <A NAME="tex2html3900" HREF="node132.html"><IMG WIDTH=26 HEIGHT=24 ALIGN=BOTTOM ALT="up" SRC="http://www.netlib.org/utk/icons/up_motif.gif"></A> <A NAME="tex2html3894" HREF="node134.html"><IMG WIDTH=63 HEIGHT=24 ALIGN=BOTTOM ALT="previous" SRC="http://www.netlib.org/utk/icons/previous_motif.gif"></A> <A NAME="tex2html3904" HREF="node1.html"><IMG WIDTH=65 HEIGHT=24 ALIGN=BOTTOM ALT="contents" SRC="http://www.netlib.org/utk/icons/contents_motif.gif"></A> <A NAME="tex2html3905" HREF="node190.html"><IMG WIDTH=43 HEIGHT=24 ALIGN=BOTTOM ALT="index" SRC="http://www.netlib.org/utk/icons/index_motif.gif"></A> <BR>
<B> Next:</B> <A NAME="tex2html3903" HREF="node136.html">Further Details: How Error </A>
<B>Up:</B> <A NAME="tex2html3901" HREF="node132.html">Accuracy and Stability</A>
<B> Previous:</B> <A NAME="tex2html3895" HREF="node134.html">New Sources of Error </A>
<BR> <P>
<H1><A NAME="SECTION04630000000000000000">How to Measure Errors</A></H1>
<A NAME="secnormnotation"> </A>
<P>
<A NAME="4588"> </A>
ScaLAPACK routines return four types of floating-point output arguments:
<UL><A NAME="4590"> </A>
<LI> <EM>Scalar</EM>, such as an eigenvalue of a matrix,
<A NAME="4592"> </A>
<LI> <EM>Vector</EM>, such as the solution <I>x</I> of a linear system <I>Ax</I>=<I>b</I>,
<A NAME="4594"> </A>
<LI> <EM>Matrix</EM>, such as a matrix inverse <IMG WIDTH=29 HEIGHT=15 ALIGN=BOTTOM ALT="tex2html_wrap_inline13063" SRC="img110.gif">, and
<A NAME="4597"> </A>
<LI> <EM>Subspace</EM>, such as the space spanned by one or more eigenvectors of a matrix.
</UL>
This section provides measures for errors in these quantities, which we
need in order to express error bounds.
<P>
<A NAME="4600"> </A>
First, consider <EM>scalars</EM>. Let the scalar <IMG WIDTH=10 HEIGHT=12 ALIGN=BOTTOM ALT="tex2html_wrap_inline17436" SRC="img441.gif"> be an approximation of
the true answer <IMG WIDTH=10 HEIGHT=8 ALIGN=BOTTOM ALT="tex2html_wrap_inline16235" SRC="img369.gif">. We can measure the difference between <IMG WIDTH=10 HEIGHT=8 ALIGN=BOTTOM ALT="tex2html_wrap_inline16235" SRC="img369.gif">
and <IMG WIDTH=10 HEIGHT=12 ALIGN=BOTTOM ALT="tex2html_wrap_inline17436" SRC="img441.gif"> either by the <B>absolute error</B>
<IMG WIDTH=49 HEIGHT=27 ALIGN=MIDDLE ALT="tex2html_wrap_inline17444" SRC="img442.gif">, or, if <IMG WIDTH=10 HEIGHT=8 ALIGN=BOTTOM ALT="tex2html_wrap_inline16235" SRC="img369.gif"> is nonzero, by the <B>relative error</B>
<IMG WIDTH=79 HEIGHT=27 ALIGN=MIDDLE ALT="tex2html_wrap_inline17448" SRC="img443.gif">. Alternatively, it is sometimes more convenient
to use <IMG WIDTH=79 HEIGHT=27 ALIGN=MIDDLE ALT="tex2html_wrap_inline17450" SRC="img444.gif"> instead of the standard expression
for relative error.
If the relative error of <IMG WIDTH=10 HEIGHT=12 ALIGN=BOTTOM ALT="tex2html_wrap_inline17436" SRC="img441.gif"> is, say, <IMG WIDTH=33 HEIGHT=16 ALIGN=BOTTOM ALT="tex2html_wrap_inline17454" SRC="img445.gif">, we say that
<IMG WIDTH=10 HEIGHT=12 ALIGN=BOTTOM ALT="tex2html_wrap_inline17436" SRC="img441.gif"> is <EM>accurate to 5 decimal digits</EM>.
<A NAME="4614"> </A><A NAME="4615"> </A>
<A NAME="4616"> </A><A NAME="4617"> </A>
<P>
<A NAME="4618"> </A>
To measure the error in <EM>vectors</EM>, we need to measure the <EM>size</EM>
or <EM>norm</EM> of a vector <I>x</I><A NAME="4622"> </A>. A popular norm
is the magnitude of the largest component, <IMG WIDTH=100 HEIGHT=28 ALIGN=MIDDLE ALT="tex2html_wrap_inline17460" SRC="img446.gif">,
which we denote by
<IMG WIDTH=38 HEIGHT=26 ALIGN=MIDDLE ALT="tex2html_wrap_inline17462" SRC="img447.gif">. This is read <EM>the infinity norm of</EM> <I>x</I>.
See Table <A HREF="node135.html#tabnorms">6.2</A> for a summary of norms.
<P>
<P><A NAME="4628"> </A><A NAME="tabnorms"> </A><IMG WIDTH=549 HEIGHT=113 ALIGN=BOTTOM ALT="table4627" SRC="img448.gif"><BR>
<STRONG>Table 6.2:</STRONG> Vector and matrix norms<BR>
<P>
<P>
If <IMG WIDTH=9 HEIGHT=12 ALIGN=BOTTOM ALT="tex2html_wrap_inline17482" SRC="img449.gif"> is an approximation to the
exact vector <I>x</I>, we will refer to <IMG WIDTH=63 HEIGHT=28 ALIGN=MIDDLE ALT="tex2html_wrap_inline17486" SRC="img450.gif"> as the
absolute error in <IMG WIDTH=9 HEIGHT=12 ALIGN=BOTTOM ALT="tex2html_wrap_inline17482" SRC="img449.gif"> (where <I>p</I> is one of the values in Table <A HREF="node135.html#tabnorms">6.2</A>)
<A NAME="4658"> </A><A NAME="4659"> </A>
<A NAME="4660"> </A><A NAME="4661"> </A>
and refer to <IMG WIDTH=107 HEIGHT=28 ALIGN=MIDDLE ALT="tex2html_wrap_inline17492" SRC="img451.gif"> as the relative error
in <IMG WIDTH=9 HEIGHT=12 ALIGN=BOTTOM ALT="tex2html_wrap_inline17482" SRC="img449.gif"> (assuming <IMG WIDTH=64 HEIGHT=28 ALIGN=MIDDLE ALT="tex2html_wrap_inline17496" SRC="img452.gif">). As with scalars,
we will sometimes use <IMG WIDTH=107 HEIGHT=28 ALIGN=MIDDLE ALT="tex2html_wrap_inline17498" SRC="img453.gif">
for the relative error.
As above, if the relative error of <IMG WIDTH=9 HEIGHT=12 ALIGN=BOTTOM ALT="tex2html_wrap_inline17482" SRC="img449.gif"> is, say <IMG WIDTH=33 HEIGHT=16 ALIGN=BOTTOM ALT="tex2html_wrap_inline17454" SRC="img445.gif">, we say
that <IMG WIDTH=9 HEIGHT=12 ALIGN=BOTTOM ALT="tex2html_wrap_inline17482" SRC="img449.gif"> is accurate to 5 decimal digits.
The following example illustrates these ideas.
<P>
<BR><IMG WIDTH=364 HEIGHT=67 ALIGN=BOTTOM ALT="displaymath17410" SRC="img454.gif"><BR>
<BR><IMG WIDTH=500 HEIGHT=136 ALIGN=BOTTOM ALT="eqnarray4677" SRC="img455.gif"><BR>
Thus, we would say that <IMG WIDTH=9 HEIGHT=12 ALIGN=BOTTOM ALT="tex2html_wrap_inline17482" SRC="img449.gif"> approximates <I>x</I> to 2
decimal digits.
<P>
<A NAME="4707"> </A>
Errors in <EM>matrices</EM> may also be measured with norms<A NAME="4709"> </A>.
The most obvious
generalization of <IMG WIDTH=38 HEIGHT=26 ALIGN=MIDDLE ALT="tex2html_wrap_inline17462" SRC="img447.gif"> to matrices would appear to be
<IMG WIDTH=131 HEIGHT=28 ALIGN=MIDDLE ALT="tex2html_wrap_inline17512" SRC="img456.gif">, but this does not have certain
important mathematical properties that make deriving error bounds
convenient.
Instead, we will use
<IMG WIDTH=219 HEIGHT=28 ALIGN=MIDDLE ALT="tex2html_wrap_inline17514" SRC="img457.gif">,
where <I>A</I> is an <I>m</I>-by-<I>n</I> matrix, or
<IMG WIDTH=208 HEIGHT=28 ALIGN=MIDDLE ALT="tex2html_wrap_inline17522" SRC="img458.gif">;
see Table <A HREF="node135.html#tabnorms">6.2</A> for other matrix norms.
As before, <IMG WIDTH=70 HEIGHT=34 ALIGN=MIDDLE ALT="tex2html_wrap_inline17524" SRC="img459.gif"> is the absolute
error<A NAME="4724"> </A><A NAME="4725"> </A>
in <IMG WIDTH=13 HEIGHT=16 ALIGN=BOTTOM ALT="tex2html_wrap_inline17526" SRC="img460.gif">, <IMG WIDTH=116 HEIGHT=34 ALIGN=MIDDLE ALT="tex2html_wrap_inline17528" SRC="img461.gif">
is the relative error<A NAME="4730"> </A><A NAME="4731"> </A>
in <IMG WIDTH=13 HEIGHT=16 ALIGN=BOTTOM ALT="tex2html_wrap_inline17526" SRC="img460.gif">, and a relative error in <IMG WIDTH=13 HEIGHT=16 ALIGN=BOTTOM ALT="tex2html_wrap_inline17526" SRC="img460.gif"> of
<IMG WIDTH=33 HEIGHT=16 ALIGN=BOTTOM ALT="tex2html_wrap_inline17454" SRC="img445.gif"> means <IMG WIDTH=13 HEIGHT=16 ALIGN=BOTTOM ALT="tex2html_wrap_inline17526" SRC="img460.gif"> is accurate to 5 decimal digits.
The following example illustrates these ideas.
<BR><IMG WIDTH=438 HEIGHT=67 ALIGN=BOTTOM ALT="displaymath17411" SRC="img462.gif"><BR>
<BR><IMG WIDTH=500 HEIGHT=206 ALIGN=BOTTOM ALT="eqnarray4739" SRC="img463.gif"><BR>
so <IMG WIDTH=13 HEIGHT=16 ALIGN=BOTTOM ALT="tex2html_wrap_inline17526" SRC="img460.gif"> is accurate to 1 decimal digit.
<P>
We now introduce some related notation we will use in our error bounds.
The <B>condition number of a matrix</B> <I>A</I> is defined as
<A NAME="4779"> </A>
<IMG WIDTH=172 HEIGHT=32 ALIGN=MIDDLE ALT="tex2html_wrap_inline17542" SRC="img464.gif">, where <I>A</I>
is square and invertible, and <I>p</I> is <IMG WIDTH=16 HEIGHT=8 ALIGN=BOTTOM ALT="tex2html_wrap_inline17548" SRC="img465.gif"> or one of the other
possibilities in Table <A HREF="node135.html#tabnorms">6.2</A>. The condition number
measures how sensitive <IMG WIDTH=29 HEIGHT=15 ALIGN=BOTTOM ALT="tex2html_wrap_inline13063" SRC="img110.gif"> is to changes in <I>A</I>; the larger
the condition number, the more sensitive is <IMG WIDTH=29 HEIGHT=15 ALIGN=BOTTOM ALT="tex2html_wrap_inline13063" SRC="img110.gif">. For example,
for the same <I>A</I> as in the last example,
<BR><IMG WIDTH=468 HEIGHT=67 ALIGN=BOTTOM ALT="displaymath17412" SRC="img466.gif"><BR>
ScaLAPACK
error estimation routines typically compute a variable called
<TT>RCOND</TT><A NAME="4789"> </A>, which is the reciprocal of the condition number (or an
approximation of the reciprocal). The reciprocal of the condition
number is used instead of the condition number itself in order
to avoid the possibility of overflow when the condition number is very large.
<A NAME="4790"> </A>
<A NAME="4791"> </A>
Also, some of our error bounds will use the vector of absolute values
of <I>x</I>, |<I>x</I>| (<IMG WIDTH=69 HEIGHT=27 ALIGN=MIDDLE ALT="tex2html_wrap_inline17562" SRC="img467.gif">), or similarly |<I>A</I>|
(<IMG WIDTH=84 HEIGHT=28 ALIGN=MIDDLE ALT="tex2html_wrap_inline17566" SRC="img468.gif">).
<P>
<A NAME="4794"> </A>
Now we consider errors in <EM>subspaces</EM>. Subspaces are the
outputs of routines that compute eigenvectors and invariant
subspaces of matrices. We need a careful definition
of error in these cases for the following reason. The nonzero vector <I>x</I> is called a
<EM>(right) eigenvector</EM> of the matrix <I>A</I> with <EM>eigenvalue</EM>
<IMG WIDTH=8 HEIGHT=12 ALIGN=BOTTOM ALT="tex2html_wrap_inline12778" SRC="img69.gif"> if <IMG WIDTH=65 HEIGHT=12 ALIGN=BOTTOM ALT="tex2html_wrap_inline17574" SRC="img469.gif">. From this definition, we see that
-<I>x</I>, 2<I>x</I>, or any other nonzero multiple <IMG WIDTH=19 HEIGHT=25 ALIGN=MIDDLE ALT="tex2html_wrap_inline17580" SRC="img470.gif"> of <I>x</I> is also an
eigenvector. In other words, eigenvectors are not unique. This
means we cannot measure the difference between two supposed eigenvectors
<IMG WIDTH=9 HEIGHT=12 ALIGN=BOTTOM ALT="tex2html_wrap_inline17482" SRC="img449.gif"> and <I>x</I> by computing <IMG WIDTH=62 HEIGHT=26 ALIGN=MIDDLE ALT="tex2html_wrap_inline17588" SRC="img471.gif">, because this may
be large while <IMG WIDTH=73 HEIGHT=26 ALIGN=MIDDLE ALT="tex2html_wrap_inline17590" SRC="img472.gif"> is small or even zero for
some <IMG WIDTH=41 HEIGHT=25 ALIGN=MIDDLE ALT="tex2html_wrap_inline17592" SRC="img473.gif">. This is true
even if we normalize <I>x</I> so that <IMG WIDTH=63 HEIGHT=26 ALIGN=MIDDLE ALT="tex2html_wrap_inline17596" SRC="img474.gif">, since both
<I>x</I> and -<I>x</I> can be normalized simultaneously. Hence, to define
error in a useful way, we need instead to consider the set <IMG WIDTH=11 HEIGHT=12 ALIGN=BOTTOM ALT="tex2html_wrap_inline17602" SRC="img475.gif"> of
all scalar multiples <IMG WIDTH=128 HEIGHT=27 ALIGN=MIDDLE ALT="tex2html_wrap_inline17604" SRC="img476.gif"> of
<I>x</I>. The set <IMG WIDTH=11 HEIGHT=12 ALIGN=BOTTOM ALT="tex2html_wrap_inline17602" SRC="img475.gif"> is
called the <EM>subspace spanned by <I>x</I></EM> and is uniquely determined
by any nonzero member of <IMG WIDTH=11 HEIGHT=12 ALIGN=BOTTOM ALT="tex2html_wrap_inline17602" SRC="img475.gif">. We will measure the difference
between two such sets by the <EM>acute angle</EM> between them.
Suppose <IMG WIDTH=11 HEIGHT=16 ALIGN=BOTTOM ALT="tex2html_wrap_inline17614" SRC="img477.gif"> is spanned by <IMG WIDTH=25 HEIGHT=27 ALIGN=MIDDLE ALT="tex2html_wrap_inline17616" SRC="img478.gif"> and
<IMG WIDTH=11 HEIGHT=12 ALIGN=BOTTOM ALT="tex2html_wrap_inline17602" SRC="img475.gif"> is spanned by <IMG WIDTH=25 HEIGHT=27 ALIGN=MIDDLE ALT="tex2html_wrap_inline17620" SRC="img479.gif">. Then the acute angle between
<IMG WIDTH=11 HEIGHT=16 ALIGN=BOTTOM ALT="tex2html_wrap_inline17614" SRC="img477.gif"> and <IMG WIDTH=11 HEIGHT=12 ALIGN=BOTTOM ALT="tex2html_wrap_inline17602" SRC="img475.gif"> is defined as
<A NAME="4806"> </A>
<A NAME="4807"> </A>
<BR><IMG WIDTH=399 HEIGHT=43 ALIGN=BOTTOM ALT="displaymath17413" SRC="img480.gif"><BR>
One can show that <IMG WIDTH=47 HEIGHT=26 ALIGN=MIDDLE ALT="tex2html_wrap_inline17626" SRC="img481.gif"> does not change when either
<IMG WIDTH=9 HEIGHT=12 ALIGN=BOTTOM ALT="tex2html_wrap_inline17482" SRC="img449.gif"> or <I>x</I> is multiplied by any nonzero scalar. For example, if
<BR><IMG WIDTH=374 HEIGHT=67 ALIGN=BOTTOM ALT="displaymath17414" SRC="img482.gif"><BR>
as above, then <IMG WIDTH=131 HEIGHT=26 ALIGN=MIDDLE ALT="tex2html_wrap_inline17632" SRC="img483.gif"> for any
nonzero scalars <IMG WIDTH=11 HEIGHT=25 ALIGN=MIDDLE ALT="tex2html_wrap_inline14473" SRC="img243.gif"> and <IMG WIDTH=9 HEIGHT=17 ALIGN=MIDDLE ALT="tex2html_wrap_inline17636" SRC="img484.gif">.
<P>
Let us consider another way to interpret the angle <IMG WIDTH=7 HEIGHT=12 ALIGN=BOTTOM ALT="tex2html_wrap_inline17638" SRC="img485.gif"> between <IMG WIDTH=11 HEIGHT=16 ALIGN=BOTTOM ALT="tex2html_wrap_inline17614" SRC="img477.gif"> and
<IMG WIDTH=11 HEIGHT=12 ALIGN=BOTTOM ALT="tex2html_wrap_inline17602" SRC="img475.gif">.
<A NAME="4821"> </A>
<A NAME="4822"> </A>
Suppose <IMG WIDTH=9 HEIGHT=12 ALIGN=BOTTOM ALT="tex2html_wrap_inline17482" SRC="img449.gif"> is a unit vector (<IMG WIDTH=63 HEIGHT=26 ALIGN=MIDDLE ALT="tex2html_wrap_inline17646" SRC="img486.gif">).
Then there is a scalar <IMG WIDTH=11 HEIGHT=25 ALIGN=MIDDLE ALT="tex2html_wrap_inline14473" SRC="img243.gif"> such that
<BR><IMG WIDTH=361 HEIGHT=43 ALIGN=BOTTOM ALT="displaymath17415" SRC="img487.gif"><BR>
The approximation <IMG WIDTH=25 HEIGHT=12 ALIGN=BOTTOM ALT="tex2html_wrap_inline17650" SRC="img488.gif"> holds when <IMG WIDTH=7 HEIGHT=12 ALIGN=BOTTOM ALT="tex2html_wrap_inline17638" SRC="img485.gif"> is much less than 1
(less than .1 will do nicely). If <IMG WIDTH=9 HEIGHT=12 ALIGN=BOTTOM ALT="tex2html_wrap_inline17482" SRC="img449.gif"> is an approximate
eigenvector with error bound <IMG WIDTH=115 HEIGHT=30 ALIGN=MIDDLE ALT="tex2html_wrap_inline17656" SRC="img489.gif">,
where <I>x</I> is a true eigenvector, there is another true eigenvector
<IMG WIDTH=19 HEIGHT=25 ALIGN=MIDDLE ALT="tex2html_wrap_inline17580" SRC="img470.gif"> satisfying <IMG WIDTH=107 HEIGHT=28 ALIGN=MIDDLE ALT="tex2html_wrap_inline17662" SRC="img490.gif">.
For example, if
<BR><IMG WIDTH=518 HEIGHT=67 ALIGN=BOTTOM ALT="displaymath17416" SRC="img491.gif"><BR>
then <IMG WIDTH=137 HEIGHT=26 ALIGN=MIDDLE ALT="tex2html_wrap_inline17664" SRC="img492.gif"> for
<IMG WIDTH=54 HEIGHT=25 ALIGN=MIDDLE ALT="tex2html_wrap_inline17666" SRC="img493.gif">.
<P>
Finally, many of our error bounds will contain a factor <I>p</I>(<I>n</I>) (or <I>p</I>(<I>m</I>,<I>n</I>)),
which grows as a function of matrix dimension <I>n</I> (or dimensions <I>m</I> and <I>n</I>).
It represents a potentially different function for each problem.
In practice, the true errors usually grow at most linearly; using
<I>p</I>(<I>n</I>)=1 in the error bound formulas will often give a
reasonable estimate; <I>p</I>(<I>n</I>)=<I>n</I> is more conservative.
Therefore, we will refer to <I>p</I>(<I>n</I>) as a ``modestly growing''
function of <I>n</I>;
however. it can occasionally be much larger.
For simplicity, the error bounds computed by the code fragments
in the following sections will use <I>p</I>(<I>n</I>)=1.
This means these computed error bounds may occasionally
slightly underestimate the true error. For this reason we refer
to these computed error bounds as ``approximate error bounds.''
<P>
<B>Further Details: How to Measure Errors</B><A NAME="secbackgroundnormnotation"> </A>
<P>
<A NAME="4843"> </A><A NAME="4844"> </A>
The relative error <IMG WIDTH=79 HEIGHT=27 ALIGN=MIDDLE ALT="tex2html_wrap_inline17448" SRC="img443.gif"> in the approximation
<IMG WIDTH=10 HEIGHT=12 ALIGN=BOTTOM ALT="tex2html_wrap_inline17436" SRC="img441.gif"> of the true solution <IMG WIDTH=10 HEIGHT=8 ALIGN=BOTTOM ALT="tex2html_wrap_inline16235" SRC="img369.gif"> has a drawback: it often cannot
be computed directly, because it depends on the unknown quantity
<IMG WIDTH=17 HEIGHT=27 ALIGN=MIDDLE ALT="tex2html_wrap_inline17694" SRC="img494.gif">. However, we can often instead estimate
<IMG WIDTH=79 HEIGHT=27 ALIGN=MIDDLE ALT="tex2html_wrap_inline17450" SRC="img444.gif">, since <IMG WIDTH=10 HEIGHT=12 ALIGN=BOTTOM ALT="tex2html_wrap_inline17436" SRC="img441.gif"> is
known (it is the output of our algorithm). Fortunately, these two
quantities are necessarily close together, provided either one is small,
which is the only time they provide a useful bound anyway. For example,
<IMG WIDTH=116 HEIGHT=27 ALIGN=MIDDLE ALT="tex2html_wrap_inline17700" SRC="img495.gif"> implies
<BR><IMG WIDTH=383 HEIGHT=42 ALIGN=BOTTOM ALT="displaymath17417" SRC="img496.gif"><BR>
so they can be used interchangeably.
<P>
Table <A HREF="node135.html#tabnorms">6.2</A> contains a variety of norms we will use to
measure errors.
These norms have the properties that
<IMG WIDTH=154 HEIGHT=28 ALIGN=MIDDLE ALT="tex2html_wrap_inline17702" SRC="img497.gif">, and
<IMG WIDTH=162 HEIGHT=28 ALIGN=MIDDLE ALT="tex2html_wrap_inline17704" SRC="img498.gif">, where <I>p</I> is one of
1, 2, <IMG WIDTH=16 HEIGHT=8 ALIGN=BOTTOM ALT="tex2html_wrap_inline17548" SRC="img465.gif">, and <I>F</I>. These properties are useful for deriving
error bounds.
<P>
An error bound that uses a given norm may be changed into an error bound
that uses another norm. This is accomplished by multiplying the first
error bound by an appropriate function of the problem dimension.
Table <A HREF="node135.html#tableVectorNormFpq">6.3</A> gives the
factors <IMG WIDTH=44 HEIGHT=28 ALIGN=MIDDLE ALT="tex2html_wrap_inline17716" SRC="img499.gif"> such that <IMG WIDTH=136 HEIGHT=28 ALIGN=MIDDLE ALT="tex2html_wrap_inline17718" SRC="img500.gif">, where
<I>n</I> is the dimension of <I>x</I>.
<P>
<P><A NAME="4863"> </A><A NAME="tableVectorNormFpq"> </A><IMG WIDTH=525 HEIGHT=130 ALIGN=BOTTOM ALT="table4862" SRC="img501.gif"><BR>
<STRONG>Table 6.3:</STRONG> Bounding one vector norm in terms of another<BR>
<P>
<P>
Table <A HREF="node135.html#tableMatrixNormFpq">6.4</A> gives the
factors <IMG WIDTH=67 HEIGHT=28 ALIGN=MIDDLE ALT="tex2html_wrap_inline17746" SRC="img502.gif"> such that <IMG WIDTH=165 HEIGHT=28 ALIGN=MIDDLE ALT="tex2html_wrap_inline17748" SRC="img503.gif">, where
<I>A</I> is <I>m</I>-by-<I>n</I>.
<P>
<P><A NAME="4893"> </A><A NAME="tableMatrixNormFpq"> </A><IMG WIDTH=549 HEIGHT=151 ALIGN=BOTTOM ALT="table4892" SRC="img504.gif"><BR>
<STRONG>Table 6.4:</STRONG> Bounding one matrix norm in terms of another<BR>
<P>
<P>
The two-norm of <I>A</I>, <IMG WIDTH=34 HEIGHT=26 ALIGN=MIDDLE ALT="tex2html_wrap_inline17802" SRC="img505.gif">, is also called the <B>spectral
norm</B> of <I>A</I> and is equal to the <B>largest singular value</B>
<IMG WIDTH=59 HEIGHT=26 ALIGN=MIDDLE ALT="tex2html_wrap_inline17806" SRC="img506.gif"> of <I>A</I>.
We shall also need to refer to the <B>smallest singular value</B>
<IMG WIDTH=57 HEIGHT=26 ALIGN=MIDDLE ALT="tex2html_wrap_inline17810" SRC="img507.gif"> of <I>A</I>; its value can be defined in a similar way to
the definition of the two-norm in Table <A HREF="node135.html#tabnorms">6.2</A>, namely, as
<IMG WIDTH=147 HEIGHT=28 ALIGN=MIDDLE ALT="tex2html_wrap_inline17814" SRC="img508.gif"> when <I>A</I>
has at least as many rows as columns, and defined as
<IMG WIDTH=158 HEIGHT=32 ALIGN=MIDDLE ALT="tex2html_wrap_inline17818" SRC="img509.gif"> when <I>A</I> has more
columns than rows. The two-norm,
Frobenius norm<A NAME="4938"> </A><A NAME="4939"> </A>,
and singular values of a matrix do not change
if the matrix is multiplied by a real orthogonal (or complex unitary) matrix.
<P>
Now we define <EM>subspaces</EM> spanned by more than one vector,
and <EM>angles between subspaces</EM>.
<A NAME="4942"> </A>
<A NAME="4943"> </A>
Given a set of <I>k</I>
<I>n</I>-dimensional vectors <IMG WIDTH=81 HEIGHT=27 ALIGN=MIDDLE ALT="tex2html_wrap_inline17826" SRC="img510.gif">, they determine
a subspace <IMG WIDTH=11 HEIGHT=12 ALIGN=BOTTOM ALT="tex2html_wrap_inline17602" SRC="img475.gif"> consisting of all their possible linear combinations
<IMG WIDTH=79 HEIGHT=33 ALIGN=MIDDLE ALT="tex2html_wrap_inline17830" SRC="img511.gif">, <IMG WIDTH=14 HEIGHT=25 ALIGN=MIDDLE ALT="tex2html_wrap_inline17832" SRC="img512.gif"> scalars <IMG WIDTH=7 HEIGHT=27 ALIGN=MIDDLE ALT="tex2html_wrap_inline17834" SRC="img513.gif">. We also
say that <IMG WIDTH=81 HEIGHT=27 ALIGN=MIDDLE ALT="tex2html_wrap_inline17826" SRC="img510.gif"> <EM>spans</EM> <IMG WIDTH=11 HEIGHT=12 ALIGN=BOTTOM ALT="tex2html_wrap_inline17602" SRC="img475.gif">.
The difficulty in measuring the difference between subspaces is that
the sets of vectors spanning them are not unique.
For example, <IMG WIDTH=25 HEIGHT=27 ALIGN=MIDDLE ALT="tex2html_wrap_inline17620" SRC="img479.gif">, <IMG WIDTH=39 HEIGHT=27 ALIGN=MIDDLE ALT="tex2html_wrap_inline17842" SRC="img514.gif"> and <IMG WIDTH=34 HEIGHT=27 ALIGN=MIDDLE ALT="tex2html_wrap_inline17844" SRC="img515.gif"> all determine the
same subspace.
Therefore, we cannot simply compare the subspaces spanned by
<IMG WIDTH=81 HEIGHT=27 ALIGN=MIDDLE ALT="tex2html_wrap_inline17846" SRC="img516.gif"> and <IMG WIDTH=81 HEIGHT=27 ALIGN=MIDDLE ALT="tex2html_wrap_inline17826" SRC="img510.gif"> by
comparing each <IMG WIDTH=14 HEIGHT=25 ALIGN=MIDDLE ALT="tex2html_wrap_inline17850" SRC="img517.gif"> to <IMG WIDTH=14 HEIGHT=17 ALIGN=MIDDLE ALT="tex2html_wrap_inline17852" SRC="img518.gif">. Instead, we will measure the <EM>angle</EM>
between the subspaces, which is independent of the spanning set
of vectors. Suppose subspace <IMG WIDTH=11 HEIGHT=16 ALIGN=BOTTOM ALT="tex2html_wrap_inline17614" SRC="img477.gif"> is spanned by
<IMG WIDTH=81 HEIGHT=27 ALIGN=MIDDLE ALT="tex2html_wrap_inline17846" SRC="img516.gif"> and that subspace <IMG WIDTH=11 HEIGHT=12 ALIGN=BOTTOM ALT="tex2html_wrap_inline17602" SRC="img475.gif">
is spanned by <IMG WIDTH=81 HEIGHT=27 ALIGN=MIDDLE ALT="tex2html_wrap_inline17826" SRC="img510.gif">. If <I>k</I>=1, we instead write more
simply <IMG WIDTH=25 HEIGHT=27 ALIGN=MIDDLE ALT="tex2html_wrap_inline17616" SRC="img478.gif"> and <IMG WIDTH=25 HEIGHT=27 ALIGN=MIDDLE ALT="tex2html_wrap_inline17620" SRC="img479.gif">.
When <I>k</I>=1, we define
the angle <IMG WIDTH=51 HEIGHT=32 ALIGN=MIDDLE ALT="tex2html_wrap_inline17870" SRC="img519.gif"> between
<IMG WIDTH=11 HEIGHT=16 ALIGN=BOTTOM ALT="tex2html_wrap_inline17614" SRC="img477.gif"> and <IMG WIDTH=11 HEIGHT=12 ALIGN=BOTTOM ALT="tex2html_wrap_inline17602" SRC="img475.gif"> as the acute angle
between <IMG WIDTH=9 HEIGHT=12 ALIGN=BOTTOM ALT="tex2html_wrap_inline17482" SRC="img449.gif"> and <I>x</I>.
When <I>k</I>>1, we define the acute angle between <IMG WIDTH=11 HEIGHT=16 ALIGN=BOTTOM ALT="tex2html_wrap_inline17614" SRC="img477.gif"> and
<IMG WIDTH=11 HEIGHT=12 ALIGN=BOTTOM ALT="tex2html_wrap_inline17602" SRC="img475.gif"> as the largest acute angle between any vector <IMG WIDTH=9 HEIGHT=12 ALIGN=BOTTOM ALT="tex2html_wrap_inline17482" SRC="img449.gif"> in
<IMG WIDTH=11 HEIGHT=16 ALIGN=BOTTOM ALT="tex2html_wrap_inline17614" SRC="img477.gif"> and the closest vector <I>x</I> in <IMG WIDTH=11 HEIGHT=12 ALIGN=BOTTOM ALT="tex2html_wrap_inline17602" SRC="img475.gif"> to <IMG WIDTH=9 HEIGHT=12 ALIGN=BOTTOM ALT="tex2html_wrap_inline17482" SRC="img449.gif">:
<P>
<BR><IMG WIDTH=500 HEIGHT=41 ALIGN=BOTTOM ALT="eqnarray4963" SRC="img520.gif"><BR>
ScaLAPACK routines that compute subspaces return
vectors <IMG WIDTH=81 HEIGHT=27 ALIGN=MIDDLE ALT="tex2html_wrap_inline17846" SRC="img516.gif"> spanning a subspace
<IMG WIDTH=11 HEIGHT=16 ALIGN=BOTTOM ALT="tex2html_wrap_inline17614" SRC="img477.gif"> that are <EM>orthonormal</EM>. This means the
<I>n</I>-by-<I>k</I> matrix <IMG WIDTH=112 HEIGHT=34 ALIGN=MIDDLE ALT="tex2html_wrap_inline17904" SRC="img521.gif">
satisfies <IMG WIDTH=76 HEIGHT=16 ALIGN=BOTTOM ALT="tex2html_wrap_inline17906" SRC="img522.gif">. Suppose also that
the vectors <IMG WIDTH=81 HEIGHT=27 ALIGN=MIDDLE ALT="tex2html_wrap_inline17826" SRC="img510.gif"> spanning <IMG WIDTH=11 HEIGHT=12 ALIGN=BOTTOM ALT="tex2html_wrap_inline17602" SRC="img475.gif">
are orthonormal, so <IMG WIDTH=112 HEIGHT=27 ALIGN=MIDDLE ALT="tex2html_wrap_inline17912" SRC="img523.gif"> also
satisfies <IMG WIDTH=76 HEIGHT=15 ALIGN=BOTTOM ALT="tex2html_wrap_inline17914" SRC="img524.gif">.
Then there is a simple expression for the angle between
<IMG WIDTH=11 HEIGHT=16 ALIGN=BOTTOM ALT="tex2html_wrap_inline17614" SRC="img477.gif"> and <IMG WIDTH=11 HEIGHT=12 ALIGN=BOTTOM ALT="tex2html_wrap_inline17602" SRC="img475.gif">:
<A NAME="4982"> </A>
<A NAME="4983"> </A>
<BR><IMG WIDTH=365 HEIGHT=21 ALIGN=BOTTOM ALT="displaymath17418" SRC="img525.gif"><BR>
For example, if
<BR><IMG WIDTH=442 HEIGHT=67 ALIGN=BOTTOM ALT="displaymath17419" SRC="img526.gif"><BR>
then <IMG WIDTH=123 HEIGHT=32 ALIGN=MIDDLE ALT="tex2html_wrap_inline17920" SRC="img527.gif">.
<P>
As stated above, all our bounds will contain a factor
<I>p</I>(<I>n</I>) (or <I>p</I>(<I>m</I>,<I>n</I>)), which measures how roundoff errors can grow
as a function of matrix dimension <I>n</I> (or <I>m</I> and <I>m</I>).
In practice, the true error usually grows just linearly with <I>n</I>,
or even slower,
but we can generally prove only much weaker bounds of the form <IMG WIDTH=100 HEIGHT=30 ALIGN=MIDDLE ALT="tex2html_wrap_inline17934" SRC="img528.gif">.
This is because we cannot rule out the extremely unlikely possibility of rounding
errors all adding together instead of canceling on average. Using
<IMG WIDTH=100 HEIGHT=30 ALIGN=MIDDLE ALT="tex2html_wrap_inline17934" SRC="img528.gif"> would give pessimistic and unrealistic bounds, especially
for large <I>n</I>, so we content ourselves with describing <I>p</I>(<I>n</I>) as a
``modestly growing'' polynomial function of <I>n</I>. Using <I>p</I>(<I>n</I>)=1 in
the error bound formulas will often give a reasonable error estimate.
For detailed derivations of various
<I>p</I>(<I>n</I>), see [<A HREF="node189.html#GVL2">71</A>, <A HREF="node189.html#wilkinson1">114</A>, <A HREF="node189.html#higham96">84</A>, <A HREF="node189.html#demmelMA221">38</A>].
<P>
There is also one situation where <I>p</I>(<I>n</I>) can grow as large as <IMG WIDTH=32 HEIGHT=15 ALIGN=BOTTOM ALT="tex2html_wrap_inline17950" SRC="img529.gif">:
Gaussian elimination. This typically occurs only on specially constructed
matrices presented in numerical analysis courses [<A HREF="node189.html#wilkinson1">114</A>, p. 212,].
However, the expert driver for solving linear systems, PxGESVX<A NAME="4997"> </A><A NAME="4998"> </A><A NAME="4999"> </A><A NAME="5000"> </A>,
provides error bounds incorporating <I>p</I>(<I>n</I>), and so this rare possibility
can be detected.
<P>
<HR><A NAME="tex2html3902" HREF="node136.html"><IMG WIDTH=37 HEIGHT=24 ALIGN=BOTTOM ALT="next" SRC="http://www.netlib.org/utk/icons/next_motif.gif"></A> <A NAME="tex2html3900" HREF="node132.html"><IMG WIDTH=26 HEIGHT=24 ALIGN=BOTTOM ALT="up" SRC="http://www.netlib.org/utk/icons/up_motif.gif"></A> <A NAME="tex2html3894" HREF="node134.html"><IMG WIDTH=63 HEIGHT=24 ALIGN=BOTTOM ALT="previous" SRC="http://www.netlib.org/utk/icons/previous_motif.gif"></A> <A NAME="tex2html3904" HREF="node1.html"><IMG WIDTH=65 HEIGHT=24 ALIGN=BOTTOM ALT="contents" SRC="http://www.netlib.org/utk/icons/contents_motif.gif"></A> <A NAME="tex2html3905" HREF="node190.html"><IMG WIDTH=43 HEIGHT=24 ALIGN=BOTTOM ALT="index" SRC="http://www.netlib.org/utk/icons/index_motif.gif"></A> <BR>
<B> Next:</B> <A NAME="tex2html3903" HREF="node136.html">Further Details: How Error </A>
<B>Up:</B> <A NAME="tex2html3901" HREF="node132.html">Accuracy and Stability</A>
<B> Previous:</B> <A NAME="tex2html3895" HREF="node134.html">New Sources of Error </A>
<P><ADDRESS>
<I>Susan Blackford <BR>
Tue May 13 09:21:01 EDT 1997</I>
</ADDRESS>
</BODY>
</HTML>
|