Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说简单迭代法求解方程举例说明_方程迭代法,希望能够帮助你!!!。
迭代法是方程及方程组求解的重要方法。关于其原理可另行查询。这里附上一篇简单的迭代法小程序。
用于解方程:x+e^x=0,求解精度0.00001.
#include<stdio.h>
#include<math.h>
#define fnx(x) -exp(x)
void main()
{
float x0,x1;
x0=0;
x1=fnx(x0);
while(fabs(x1-x0)>0.00001)
{
x0=x1;
x1=fnx(x1);
}
printf("x=%f\n",x1);
}
编程思考:用一元方程的基本迭代法求根,所构造的迭代函数必须是收敛的,也就是说经过一系列的迭代后,计算结果应该趋近于一个定值。若经过许多次迭代后仍然不收敛,就可能是发散的,为防止无限制地循环下去,可以设定最多循环次数,例如循环50次仍不收敛就不再迭代,终止程序。下面附上自己修改过的程序(愿指正):
#include<stdio.h>
#include<math.h>
#define fnx(x) -exp(x)
void main()
{
float x0,x1,x2,x3;
unsigned int count=0,number=0; //count 用于统计连续收敛值的个数,number用于限制不收敛情况下最多的迭代次数。
x0=0;
x1=fnx(x0);
x2=fabs(x1-x0);
while(x2>0.00001)
{
number++;
x3=x2;
x0=x1;
x1=fnx(x1);
x2=fabs(x1-x0);
if(x3>=x2)
count++;
else
count=0;
if(number>=50 && count==0)
{
printf("不收敛,exit!!\n");
break;
}
}
if(count!=0)
{
printf("x=%f\n",x1);
}
}
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
上一篇
已是最后文章
下一篇
已是最新文章