美文网首页
2020-07-21 迭代法(From GitChat)

2020-07-21 迭代法(From GitChat)

作者: 我的的昵称已被使用换一个吧 | 来源:发表于2020-07-21 11:35 被阅读0次

迭代法的实现,一般需要确定以下三个要点。

确定迭代变量:

迭代变量一般就是要求解的问题的解,利用迭代递推公式可以不断地由旧值递推出新值。根据问题的不同,迭代变量可以是一个,也可以是多个确定迭代变量,通常还要根据迭代递推关系给出迭代变量的初始值,这一点也很重要。

确定迭代递推关系:

迭代递推关系是根据旧值计算新值的关系或公式,这是迭代法实现的关键,如果不能确定迭代关系,则无法用迭代法实现算法。

确定迭代终止条件:

迭代终止条件是控制迭代过程退出的关键条件。迭代不可能无休止地进行,必须设置迭代终止条件,在适当的时候退出迭代。
迭代终止条件一般有三种假设:
-其一是迭代变量已经求得问题的精确值;
-其二是迭代变量无法得到精确值,但是某个迭代的值的精度已经满足要求;
-其三是指定明确的迭代计算次数。迭代算法的具体实现,可根据问题的类型选择迭代终止条件。
一般情况下,为了防止迭代关系在某个区间上发散(不收敛)使得算法进入死循环,都会把第三个条件作为异常退出条件和其他迭代终止条件配合使用,也就是说,即使无法得到符合条件的解,只要迭代计算次数达到某个限制值,也退出迭代过程。

迭代法的例子

计算一个数的平方根,数学上一般用迭代法,常用的迭代递推公式是:


图片.png

迭代法的三个要素都有体现。迭代递推关系就是上面的递推公式,迭代变量就是要计算的平方根 x{i}。 当某次迭代计算后得到的x{i}符合精度要求,则迭代计算终止,除此之外,为了防止在给出的初始值附近无法收敛,还要给出一个控制迭代计算次数的控制条件。

std::pair<bool, double> cl_root(double a, double eps)
{
    double xi = a / 2.0; //初始值用 a 的一半,很多人的选择
    double xt;
    int count = 0;
    do
    {
        xt = xi;
        xi = (xt + (a / xt)) / 2.0;
        count++; //用于检查是否收敛的计数器
        if (count >= LOOP_LIMIT)
        {
            return {false, 0.0}; //不收敛,返回失败 
        }
    } while (std::fabs(xi - xt) > eps);

    return { true, xi };
}

相关文章

  • 2020-07-21 迭代法(From GitChat)

    迭代法的实现,一般需要确定以下三个要点。 确定迭代变量: 迭代变量一般就是要求解的问题的解,利用迭代递推公式可以不...

  • 使用 Node.js 爬取 GitChat 全站课程

    GitChat 课程页面分析 课程列表页 GitChat 课程页面链接为:https://gitbook.cn/g...

  • 解线性方程组的迭代法:Jacobi迭代法与Gauss-Seide

    Jacobi迭代法: import numpy as np # Jacobi 迭代法计算线性方程 # Ax = b...

  • 2020-07-26 动态规划法(From GitChat)

    动态规划 动态规划(Dynamic Programming)是解决多阶段决策问题常用的最优化理论,动态规划和分治法...

  • 解线性方程组的迭代法

    Jacobi迭代法 迭代公式 代码 Gauss-Seidel迭代法 迭代公式 代码 SOR 迭代公式 其中. 代码

  • 前序遍历

    迭代法 递归法

  • 迭代思想

    求解一元高次方程的时候 ,用迭代法近似求解这类问题,梯度法,最小二乘法,牛顿迭代法。迭代法 用于 线性非线形方程组...

  • 迭代法

    什么是迭代法 迭代法,其实就是不断的用旧的变量值,递推计算新的变量值。通常是用循环语句控制 迭代法的基本步骤是什么...

  • LeetCode 206——反转链表

    对单链表进行反转有迭代法和递归法两种。 1. 迭代法 迭代法从前往后遍历链表,定义三个指针分别指向相邻的三个结点,...

  • SQR逐次超松弛迭代法

    SQR迭代法是对GS迭代法的又一改进,在每一解向量分量处取其先前分量与GS迭代法算出的分量值的加权平均。其中w松弛...

网友评论

      本文标题:2020-07-21 迭代法(From GitChat)

      本文链接:https://www.haomeiwen.com/subject/iifikktx.html