Vectors.normalize(v); Vectors.normalize(v,eps=100*Modelica.Constants.eps);
The function call
"Vectors.normalize(v)
" returns the
unit vector "v/length(v)
" of vector
v. If length(v) is close to zero (more precisely, if length(v) <
eps), v is returned in order to avoid a division by zero. For many
applications this is useful, because often the unit vector
e = v/length(v)
is used to compute a vector x*e, where the scalar
x is in the order of length(v), i.e.,
x*e is small, when length(v) is
small and then it is fine to replace e by
v to avoid a division by zero.
Since the function is implemented in one statement, it is usually inlined and therefore symbolic processing is possible.
normalize({1,2,3}); // = {0.267, 0.534, 0.802} normalize({0,0,0}); // = {0,0,0}
function normalize extends Modelica.Icons.Function; input Complex v[:] "Vector"; input Real eps = 100 * Modelica.Constants.eps "if |v| < eps then result = v"; output Complex result[size(v, 1)] "Input vector v normalized to length=1"; end normalize;