向量的范数是一个将向量映射到非负实数的函数,通常表示为 ||x||。它是向量空间中的一种度量,用来衡量向量的大小或长度。范数满足以下性质:
- 非负性:对于任意向量 x,范数 ||x|| 大于等于零,且当且仅当 x 是零向量时等于零。
- 齐次性:对于任意标量 α,范数 ||αx|| 等于 α 与 ||x|| 的乘积。
- 三角不等式:对于任意两个向量 x 和 y,有 ||x + y|| ≤ ||x|| + ||y||。
在数学上,常见的向量范数有多种,如欧几里得范数(也称为 L2 范数)、L1 范数、无穷范数等。这些范数在定义上略有不同,但都是用来衡量向量大小的一种方式。
- 欧几里得范数(L2 范数):||x||₂ = √(Σ|xᵢ|²),表示向量各个元素平方和的平方根。
- L1 范数:||x||₁ = Σ|xᵢ|,表示向量各个元素绝对值的和。
- 无穷范数:||x||ᵢ = max(|x₁|, |x₂|, …, |xᵢ|),表示向量中绝对值最大的元素。
范数的选择取决于具体的应用场景和需要解决的问题,根据需要选择相应的范数进行计算。
Eigen::Vector3d::norm()
函数是 Eigen 库中用于计算向量的范数(模长)的方法,返回一个 double
类型的值,表示向量的长度。
用法示例:
#include <iostream>
#include <Eigen/Dense>
int main() {
Eigen::Vector3d v(1.0, 2.0, 3.0);
double vector_norm = v.norm(); // 计算向量 v 的范数
std::cout << "Norm of vector v: " << vector_norm << std::endl;
return 0;
}
在上面的示例中,我们首先创建了一个三维向量 v
,然后调用 v.norm()
计算了向量 v
的范数,并将结果打印输出。