【拟合圆的梯度下降法例子】

文章目录


梯度下降法(英语:Gradient descent)是一个一阶最优化算法。 要使用梯度下降法找到一个函数的局部极小值,必须向函数上当前点对应梯度(或者是近似梯度)的反方向的规定步长距离点进行迭代搜索。如果相反地向梯度正方向迭代进行搜索,则会接近函数的局部极大值点;这个过程则被称为梯度上升法。

最小二乘法 通过最小化实际观测值与模型预测值之间的残差平方和来确定最佳参数。
核心思想:求解未知参数,使得理论值与观测值之差(即误差,或者说残差)的平方和达到最小。

梯度下降法 梯度下降法是一种优化算法,常用于机器学习和深度学习中,用于最小化一个损失函数。
核心思想:是通过迭代调整模型参数,以使损失函数达到最小值。 参数更新:新参数 = 旧参数 - 学习率 × 梯度

高斯迭代法,也称为高斯-赛德尔迭代法,是一种用于求解线性方程组的迭代方法。它基于矩阵分解原理,通过迭代逐步逼近线性方程组的解。该方法以德国数学家卡尔·弗里德里希·高斯和路德维希·赛德尔命名,与雅可比法相似,但高斯-赛德尔法在计算每个分量时,不仅利用了前一个迭代向量的信息,还利用了当前迭代向量已经计算出的其他分量,这使得它在某些情况下比雅可比法更有效。

高斯-赛德尔迭代法的基本步骤是:首先,将线性方程组分解为一系列的子问题,然后对每个子问题求解,最后将每个子问题的解组合起来,得到线性方程组的解。这种方法适用于对角线上具有非零元素的任何矩阵,但在矩阵是对角线主导的或对称的和正定的情况下,能保证收敛。

在实际应用中,高斯-赛德尔迭代法的一个主要缺点是其收敛性不够好。如果系数矩阵的特征值较大,则迭代法的收敛速度会变慢,甚至可能无法收敛。因此,在使用该方法时需要格外注意其收敛性。

此外,高斯-赛德尔迭代法可以有效地处理稀疏矩阵,即矩阵中大部分元素都是零,只有少数元素不为零的情况。由于稀疏矩阵中的元素数量较少,因此可以有效地减少计算量,提高计算效率。

最近研究了一下梯度下降法,所以写了个拟合圆的方法。拟合圆属于非线性拟合。网上的最小二乘法拟合圆公式并不是误差的平方,而是4次方(为了去掉公式里的开方)。一般可以先用网上的公式得到一个初始解,然后再用梯度下降法继续求精。梯度下降法的公式推导如下。定义误差函数:

在这里插入图片描述

下述代码基于VS2017、Qt5.9和OpenCV430,通过了验证。代码中为了加速收敛限制了迭代的最小步长为0.005。如果步长小于它则会放大步长,因此该程序的求解精度约为5‰。代码如下:

void main()
{
   
    vector<Point2f> points = {
    {
    -1, -
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

【网络星空】

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

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

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

打赏作者

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

抵扣说明:

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

余额充值