迭代法究竟是怎么回事

发布网友 发布时间:2022-04-24 16:17

我来回答

1个回答

热心网友 时间:2023-10-22 02:20

迭代法是用于求方程或方程组近似根的一种常用的算法设计方法。设方程为f(x)=0, 用某种数学方法导出等价的形式x=g(x),然后按以下步骤执行:
(1)选一个方程的近似根,付给变量x。;
(2)将x。得值保存于变量x1,然后计算g(x1),并将结果存于变量x。;
(3)当x。与x1差的绝对值还不小于指定的精度要求时,重复步骤(2);
若方程有根,并且用上述方法计算出来的近似根序列收敛,则按上述方法求得x。就认为是方程的根。 上述算法用C程序形式书写有:

{x。=初始近似根;
do{/* */
x1=x。;
x。=g(x1);/*按特定的方程计算新的近似根*/
}
while(fabs(x。-x1)>Epsilon);
}

迭代算法也常用于求方程组的根,令X=(x。,x1,x2,……,xn-1),设方程组为 xi=gi(X),(i=0,1,……,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",i,x[i]);
printf("\n");
}

具体使用迭代法求根时应注意以下两种可能发生的情况:
(1)如方程无解,算法求出的近似根序列就会不收敛,迭代过程会变成“死循环” ,因此在使用迭代算法前应考察方程是否有解,并在程序中对迭代的次数给予*。
(2)方程虽有解,但迭代公式选择不当,或迭代的初始近似值选择不合理,也会导致迭代失败。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com