迭代法是用于求方程或方程组近似根的一种常用的算法设计方法。设方程为f(x)=0,用某种数学方法导出等价的形式x=g(x),然后按以下步骤执行:
(1)选一个方程的近似根,赋给变量x0。
(2)将x0的值保存于变量x1,然后计算g(x1),并将结果存于变量x0。
(3)当x0与x1的差的绝对值还小于指定的精度要求时,重复步骤(2)的计算。
若方程有根,并且用上述方法计算出来的近似根序列收敛,则按上述方法求得的x0就认为是方程的根。上述算法用C++程序的形式表示为:
x0=初始近似根;
do {
x1=x0;
x0=g(x1); // 按特定的方程计算新的近似根
} while ( fabs(x0-x1)>Epsilon);
cout<<“方程的近似根是”<<x0;
例如,采用迭代法求方程x=cos(x)一个根的源程序为:
#include <iostream>
#include <cmath>
using namespace std;
int main() {
float x0,x1=0.0;
while(1)
{
x0=x1;
x1=cos(x0);
if (fabs(x0-x1)<1e-6)
break;
}
cout<<"The real root is "<<x1<<endl;
return 0;
}
【例3】编写一个程序,用迭代法求方程x3-x-1=0在区间[0,2]中的根。
(1)编程思路1。
用二分迭代法求解。
二分迭代法的原理:先取方程f(x)=0的两个粗