Documentation |
Compute the norm of a matrix, a vector, or a polynomial
This functionality does not run in MATLAB.
norm(M, <1 | 2 | Frobenius | Infinity | Spectral>) norm(v, <Frobenius | Infinity | kv>) norm(p, <kp>) norm(f, <vars>, <kp>)
norm(M, kM) computes the norm of index kM of the matrix M.
norm(v, kv) computes the norm of index kv of the vector v.
norm(p, kp) computes the norm of index kp of the polynomial p.
In MuPAD^{®}, there is no difference between matrices and vectors: a vector is a matrix of dimension 1×n or n×1, respectively.
For an m×n matrix M = (M_{ij}) with min(m, n) > 1, only the 1-norm (maximum column sum)
,
the Frobenius norm
,
the spectral norm
,
where ϕ is the largest eigenvalue of A^{H} A and the infinity-norm (maximum row sum)
can be computed. The 1-norm and the Infinity-norm are operator norms with respect to the corresponding norms on the vector spaces the matrix is acting upon.
For vectors v = (v_{i}), represented by matrices of dimension 1×n or n×1, norms with arbitrary positive integer indices k as well as Infinity can be computed. For integers k > 1, the vector norms are given by
for column vectors as well as for row vectors.
For indices 1, Infinity, and Frobenius, the vector norms are given by the corresponding matrix norms. For column vectors, the 1-norm is the sum norm
,
the Infinity-norm is the maximum norm
(this is the limit of the k-norms as k tends to infinity).
The Frobenius norm coincides with norm(v, 2) for both column and row vectors.
Cf. Example 2.
Matrices and vectors may contain symbolic entries. No internal float conversion is applied.
For matrix and vector norms, also refer to the help page of Dom::Matrix (note that the function matrix generates matrices of type Dom::Matrix()).
For polynomials p with coefficients c_{i}, the norms are given by
.
Also multivariate polynomials are accepted by norm. The coefficients with respect to all indeterminates are taken into account.
For polynomials, only numerical norms can be computed. The coefficients of the polynomial must not contain symbolic parameters that cannot be converted to floating-point numbers. Coefficients containing symbolic numerical expressions such as PI+1, sqrt(2) etc. are accepted. Internally, they are converted to floating-point numbers. Cf. Example 3.
For indices k> 1, norm(p, k) always returns a floating-point number. The 1-norm produces an exact result if all coefficients are integers or rational numbers. The infinity-norm norm(p) produces an exact result, if the coefficient of largest magnitude is an integer or a rational number. In all other cases, also the 1-norm and the infinity-norm produce floating-point numbers. Cf. Example 3.
For polynomials over the coefficient ring IntMod(m), norm produces an error.
If the coefficient ring of the polynomial is a domain, it must implement the method "norm". This method must return the norm of the coefficients as a number or as a numerical expression that can be converted to a floating-point number via float. With the coefficient norms , norm(p) computes the maximum norm ; norm(p, k) computes .
A polynomial expression f is internally converted to the polynomial poly(f). If a list of indeterminates is specified, the norm of the polynomial poly(f, vars) is computed.
For polynomials and polynomial expressions, the norms are computed by a function of the system kernel.
We compute various norms of a 2×3 matrix:
M := matrix([[2, 5, 8], [-2, 3, 5]]): norm(M) = norm(M, Infinity), norm(M, 1), norm(M, Frobenius), norm(M, Spectral)
For matrices, norm produces exact symbolic results:
M := matrix([[2/3, 63, PI],[x, y, z]]): norm(M)
norm(M, 1)
norm(M, Frobenius)
delete M:
A column vector col and a row vector row are considered:
col := matrix([x1, PI]): row := matrix([[x1, PI]]): col, row
norm(col, 2) = norm(row, 2)
norm(col, 3) = norm(row, 3)
Note that the norms of index 1 and Infinity have exchanged meanings for column and row vectors:
norm(col, 1) = norm(row, Infinity)
norm(col, Infinity) = norm(row, 1)
delete col, row:
The norms of some polynomials are computed:
p := poly(3*x^3 + 4*x, [x]): norm(p), norm(p, 1)
If the coefficients are not integers or rational numbers, automatic conversion to floating-point numbers occurs:
p := poly(3*x^3 + sqrt(2)*x + PI, [x]): norm(p), norm(p, 1)
Floating point numbers are always produced for indices greater than 1:
p := poly(3*x^3 + 4*x + 1, [x]): norm(p, 1), norm(p, 2), norm(p, 5), norm(p, 10), norm(p)
delete p:
The norms of some polynomial expressions are computed:
norm(x^3 + 1, 1), norm(x^3 + 1, 2), norm(x^3 + PI)
The following call yields an error, because the expression is regarded as a polynomial in x. Consequently, symbolic coefficients 6 y and 9 y^{2} are found which are not accepted:
f := 6*x*y + 9*y^2 + 2: norm(f, [x])
Error: The argument is invalid. [norm]
As a bivariate polynomial with the indeterminates x and y, the coefficients are 6, 9, and 2. Now, norms can be computed:
norm(f, [x, y], 1), norm(f, [x, y], 2), norm(f, [x, y])
delete f:
M |
A matrix of domain type Dom::Matrix(...) |
v |
A vector (a 1-dimensional matrix) |
kv |
A positive integer as index of the vector norm. |
p |
A polynomial generated by poly |
f | |
vars |
A list of identifiers or indexed identifiers, interpreted as the indeterminates of f |
kp |
The index of the norm of the polynomial: a real number greater or equal than 1. If no index is specified, the maximum norm (of index infinity) is computed. |