linalg::normalize -- normalize
a vector
Introductionlinalg::normalize(v) normalizes the vector
v with respect to the 2-norm (|v|=sqrt( v*v
)).
Call(s)linalg::normalize(v)
Parametersv |
- | a vector, i.e., an n x 1 or 1 x
n matrix of a domain of category Cat::Matrix |
Returnsa vector of the same domain type as v.
Related
Functions
Detailslinalg::normalize(v) is a
vector that has norm 1 and the same direction as v.linalg::scalarProduct.norm, which is overloaded for vectors.
See the method "norm" of the domain constructor Dom::Matrix for details.v, then an error occurs (see
example 2).
Example
1We define the following vector:
>> u := matrix([[1, 2]])
+- -+
| 1, 2 |
+- -+
Then the vector of norm 1 with the same direction as
u is given by:
>> linalg::normalize(u)
+- -+
| 1/2 1/2 |
| 5 2 5 |
| ----, ------ |
| 5 5 |
+- -+
Example
2The following computation fails because the vector [1,2] cannot be normalized over the rationals:
>> v := Dom::Matrix(Dom::Rational)([[1, 2]]): linalg::normalize(v)
Error: can't normalize given vector over its component ring [l\
inalg::normalize]
If we define v over the real numbers, then
we get the normalized vector of v as follows:
>> w := Dom::Matrix(Dom::Real)(v): linalg::normalize(w)
+- -+
| 1/2 1/2 |
| 5 2 5 |
| ----, ------ |
| 5 5 |
+- -+