Vectors.norm(v); Vectors.norm(v,p=2); // 1 ≤ p ≤ ∞
The function call "Vectors.norm(v)
" returns the
Euclidean norm "sqrt(v*v)
" of vector v.
With the optional
second argument "p", any other p-norm can be computed:
Besides the Euclidean norm (p=2), also the 1-norm and the infinity-norm are sometimes used:
1-norm | = sum(abs(v)) | norm(v,1) |
2-norm | = sqrt(v*v) | norm(v) or norm(v,2) |
infinity-norm | = max(abs(v)) | norm(v,Modelica.Constants.inf) |
Note, for any vector norm the following inequality holds:
norm(v1+v2,p) ≤ norm(v1,p) + norm(v2,p)
v = {2, -4, -2, -1}; norm(v,1); // = 9 norm(v,2); // = 5 norm(v); // = 5 norm(v,10.5); // = 4.00052597412635 norm(v,Modelica.Constants.inf); // = 4
function norm extends Modelica.Icons.Function; input Real v[:] "Real vector"; input Real p(min = 1) = 2 "Type of p-norm (often used: 1, 2, or Modelica.Constants.inf)"; output Real result = 0.0 "p-norm of vector v"; end norm;