雅可比矩阵
数学基础
理解它是描述变化率的量
我们先从我们熟悉的导数开始:
导数:在一元微积分中,函数
y = f(x)的导数df/dx描述了当输入x发生微小变化dx时,输出y会如何变化:dy = (df/dx) dx。导数就是一个数,代表了该点的变化率梯度:现在,考虑一个多元函数,比如
f(x, y, z)。它的输入是向量[x,y,z],输出是一个标量。我们想知道输入在每个方向上变化时,输出会怎样。这时,导数就扩展为梯度——一个偏导数组成的向量:雅可比矩阵:
更近一步,雅可比矩阵就是“多变量函数的导数”,它将导数的概念,推广到输入和输出都是向量的情况。
雅可比矩阵描述当输入向量发生微小变化时,输出向量在每个维度的变化
定义
设有一个函数 F,它将 n 维输入向量 x = (x₁, x₂, …, xₙ) 映射为 m 维输出向量 y = (y₁, y₂, …, yₘ),即 F: ℝⁿ → ℝᵐ。那么 F 的雅可比矩阵 J 是一个 m × n 的矩阵,定义为:
聪明的同学可能已经发现,高等数学里二重积分从直角坐标形式和极坐标形式的相互转换就是
应用
机器人
在机器人学中,雅可比矩阵是连接关节空间(电机角度、速度)和操作空间(机械臂末端的位姿、速度、力)的核心桥梁
由于篇幅有限,这里只举简单的例子:
平面二连杆机械臂运动
考虑一个在二维平面上运动的二连杆机械臂,其末端位置 (x, y) 由关节角 (θ₁, θ₂) 及连杆长度 L₁, L₂ 决定。
这个图就不放了,根据文字和公式自己都能画出来
这个关系 (x, y) = f(θ₁, θ₂) 也是一个从 ℝ² 到 ℝ² 的映射。
给定关节速度 (θ̇₁, θ̇₂),则末端速度 (v_x, v_y) 为:
其中,雅可比矩阵 J(θ₁, θ₂) 为:
假设关节速度为 θ̇₁ = 0.2 rad/s,θ̇₂ = 0.1 rad/s。 末端速度为:
因此,末端执行器的线速度为 v_x = -0.4 m/s(向左),v_y ≈ 0.1732 m/s(向上)。
SLAM
SLAM中的BA优化:BA优化的目标是最小化重投影误差,这是一个非线性最小二乘问题。高斯-牛顿等优化算法需要计算误差函数关于相机位姿和地图点的雅可比矩阵,以指导迭代方向。
深度学习反向传播:反向传播算法的核心就是计算损失函数关于网络各层参数的梯度(雅可比矩阵),并利用链式法则将这些梯度反向传播。
数值优化(牛顿法):牛顿法同时利用了一阶导(雅可比矩阵)和二阶导(海森矩阵)的信息。对向量值函数 F(x) = 0 求根,其牛顿迭代公式为:
