Developer Reference for Intel® oneAPI Math Kernel Library for C

ID 766684
Date 11/07/2023
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

Error Analysis

In practice, most computations are performed with rounding errors. Besides, you often need to solve a system Ax = b, where the data (the elements of A and b) are not known exactly. Therefore, it is important to understand how the data errors and rounding errors can affect the solution x.

Data perturbations. If x is the exact solution of Ax = b, and x + δx is the exact solution of a perturbed problem (A + δA)(x + δx) = (b + δb), then this estimate, given up to linear terms of perturbations, holds:


Equation

where A + δA is nonsingular and

Equation

In other words, relative errors in A or b may be amplified in the solution vector x by a factor κ(A) = ||A|| ||A-1|| called the condition number of A.

Rounding errors have the same effect as relative perturbations c(n)ε in the original data. Here ε is the machine precision, defined as the smallest positive number x such that 1 + x > 1; and c(n) is a modest function of the matrix order n. The corresponding solution error is

||δx||/||x||c(n)κ(A)ε. (The value of c(n) is seldom greater than 10n.)

NOTE:

Machine precision depends on the data type used. For example, it is usually defined in the float.h file as FLT_EPSILON the float datatype and DBL_EPSILON for the double datatype.

Thus, if your matrix A is ill-conditioned (that is, its condition number κ(A) is very large), then the error in the solution x can also be large; you might even encounter a complete loss of precision. LAPACK provides routines that allow you to estimate κ(A) (see Routines for Estimating the Condition Number) and also give you a more precise estimate for the actual solution error (see Refining the Solution and Estimating Its Error).