迭代法

转载 2008年09月28日 08:59:00

迭代法是用于求方程或方程组近似根的一种常用的算法设计方法。设方程为f(x)=0,用某种数学方法导出等价的形式x=g(x),然后按以下步骤执行:

(1)       选一个方程的近似根,赋给变量x0

(2)       x0的值保存于变量x1,然后计算g(x1),并将结果存于变量x0

(3)       x0x1的差的绝对值还小于指定的精度要求时,重复步骤(2)的计算。

若方程有根,并且用上述方法计算出来的近似根序列收敛,则按上述方法求得的x0就认为是方程的根。上述算法用C程序的形式表示为:

【算法】迭代法求方程的根

{     x0=初始近似根;

       do {

              x1=x0

              x0=g(x1)    /*按特定的方程计算新的近似根*/

              } while ( fabs(x0-x1)>Epsilon)

       printf(“方程的近似根是%f/n”x0)

}

迭代算法也常用于求方程组的根,令

              X=x0x1,…,xn-1

设方程组为:

              xi=gi(X)         (I=01,…,n-1)

则求方程组根的迭代算法可描述如下:

【算法】迭代法求方程组的根

       {     for (i=0;i<n;i++)

                     x[i]=初始近似根;

              do {

                     for (i=0;i<n;i++)

                            y[i]=x[i];

                     for (i=0;i<n;i++)

                            x[i]=gi(X);

                     for (delta=0.0,i=0;i<n;i++)

                            if (fabs(y[i]-x[i])>delta)        delta=fabs(y[i]-x[i])

                     } while (delta>Epsilon)

              for (i=0;i<n;i++)

                     printf(“变量x[%d]的近似根是 %f”Ix[i])

              printf(“/n”)

       }

       具体使用迭代法求根时应注意以下两种可能发生的情况:

(1)       如果方程无解,算法求出的近似根序列就不会收敛,迭代过程会变成死循环,因此在使用迭代算法前应先考察方程是否有解,并在程序中对迭代的次数给予限制;

(2)       方程虽然有解,但迭代公式选择不当,或迭代的初始近似根选择不合理,也会导致迭代失败。

迭代法图像二值化

1摘要 图像二值化是指用灰度变换来研究灰度图像的一种常用方法,即设定某一阈值将灰度图像的像素分成大于阈值的像素群和小于阈值的像素群两部分。例如输人灰度图像函数为f (x,y),输出二值图像函数为...
  • u012045426
  • u012045426
  • 2016年08月28日 08:58
  • 2278

图像的二值化之大津法和迭代法

using System; using System.Drawing; using System.Drawing.Imaging; using System.Runtime.InteropServic...
  • gtosky4u
  • gtosky4u
  • 2015年07月30日 15:31
  • 928

Jacobi迭代法解线性方程组(C语言)

/*-------------Jacobi迭代法解线性方程组--------- 参考教材:《数值分析》李乃成,梅立泉,科学出版社     《计算方法教程》第二版 凌永祥,陈明逵*/ #inclu...
  • zhangchao3322218
  • zhangchao3322218
  • 2012年03月30日 18:44
  • 6873

简单迭代法求解方程举例

迭代法是方程及方程组求解的重要方法。关于其原理可另行查询。这里附上一篇简单的迭代法小程序。 用于解方程:x+e^x=0 #include #include #define fnx(x) -exp(x)...
  • Aguangg_6655_la
  • Aguangg_6655_la
  • 2017年03月14日 16:05
  • 1362

基于matlab的Guass-Seidel(高斯--赛德尔) 迭代法求解线性方程组

Guass-Seidel(高斯–赛德尔) 迭代法(简称 G−S 迭代)是对 Jacobi 迭代的一种改进. 了解G-S迭代法之前先了解什么是Jacobi迭代?链接如下: http://blog.c...
  • zengxyuyu
  • zengxyuyu
  • 2016年11月06日 20:49
  • 5544

迭代法01--定常迭代法

本文主要介绍定常迭代法,给出迭代公式,分析其收敛性,包括: - Jacobi 迭代 - Gauss-Seidel 迭代 - Successive Over-Relaxation...
  • wu_nan_nan
  • wu_nan_nan
  • 2017年01月07日 00:01
  • 512

《C语言及程序设计》实践项目——迭代法解题

返回:贺老师课程教学链接 【项目1:另类求和】求 Sn=a+aa+aaa+...+aa...a之值,其中 a是一个数字。例如2+22+222+2222( 此时a=2,n=4),a和n均由键盘输入。请在...
  • sxhelijian
  • sxhelijian
  • 2015年03月09日 19:26
  • 2201

#公式与实现# Jacobi迭代 Gauss-Seidel迭代

程序实现: double MaxOfList(vectordouble>x){ double max=x[0]; int n=x.size(); for(int i...
  • DaI253
  • DaI253
  • 2015年12月08日 14:55
  • 1081

Jacobi迭代法与Gauss-Seidel迭代法

今天刚好有朋友和我讨论泊松图像融合算法,我说我过去文章里给出的是最原始、最直观的实现算法。对于理解泊松融合的原理比较有帮助,但是效率可能并不理想。印象中,泊松融合是有一个以矩阵为基础的快速算法的。但是...
  • baimafujinji
  • baimafujinji
  • 2016年01月25日 19:29
  • 17371

使用python实现高斯-赛德尔迭代法的简单运算

今天传热学老师说到高斯-赛德尔迭代法,我就想拿python写一个小程序来计算。 在网上找例子,发现居然没有人拿python写,都是C / C++ / Matlab的。没有参考答案,真是写得我焦头烂额...
  • tooktang
  • tooktang
  • 2011年09月22日 03:00
  • 3644
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:迭代法
举报原因:
原因补充:

(最多只允许输入30个字)