ceres库 拟合曲线 (含高斯牛顿法)

本文介绍了Ceres库用于解决最小二乘问题,展示了其在曲线拟合问题上的应用。通过对比高斯牛顿法的解题过程,解释了Ceres如何简化优化步骤并利用自动求导功能。示例中,使用Ceres和高斯牛顿法分别求解曲线拟合问题,最终得出相同的结果,强调了Ceres在实际问题中的高效性和易用性。

Ceres是一个广泛使用的最小二乘问题求解库。
Ceres求解的最小二乘问题最一般的形式如下
min ⁡ x 1 2 ∑ i ρ i ( ∣ ∣ f i ( x i 1 , . . . , x i n ∣ ∣ 2 ) \min_{x}\frac{1}{2}\sum_{i}\rho_{i}(||f_{i}(x_{i1}, ... , x_{in}||^{2}) xmin21iρi(fi(xi1,...,xin2)

其中 f i f_{i} fi为代价函数,在ceres中为残差块, ρ i \rho_{i} ρi为核函数,如果不用的话,那么目标函数仍然是许多平方项的和。

Ceres求解步骤:

  1. 定义每个参数块,可以是向量,也可以是四元数,李代数。
    如果是向量,需要为每个参数块分配double数组来储存变量的值。
  2. 定义残差块的计算公式。
  3. 残差块需要定义雅可比的计算方式,也可以采用Ceres的自动求导功能。如果用自动求导,需要重载一个()操作符。
  4. 把参数块和残差块加入Ceres的problem对象中,调用Solve函数求解。

示例:
假设要拟合一个曲线 y = e x p ( a x 2 + b x + c ) + w y=exp(ax^{2}+bx+c)+w y=exp(ax2+bx+c)+w
其中w是高斯噪声,现有N个数据(x, y)
那么最小二乘问题如下,这里不用核函数
min ⁡ a , b , c 1 2 ∑ i = 1 N ( ∣ ∣ y i − e x p ( a x i 2 + b x i + c ) ∣ ∣ 2 ) \min_{a,b,c}\frac{1}{2}\sum_{i=1}^{N}(||y_{i}-exp(ax_{i}^{2}+bx_{i}+c)||^{2}) a,b,cmin2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝羽飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值