(1)迭代法:迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法,即一次性解决问题。迭代法又分为精确迭代和近似迭代。“二分法”和“牛顿迭代法”属于近似迭代法。迭代算法是用计算机解决问题的一种基本方法。它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。

   其中牛顿迭代法:

       C语言笔记(3)

       C语言笔记(3)

      C语言笔记(3)

      C语言笔记(3)

      C语言笔记(3)

       

      C语言笔记(3)

     C语言笔记(3)

     C语言笔记(3)

     C语言笔记(3)

    C语言笔记(3)

    C语言笔记(3)

    C语言笔记(3)

    C语言笔记(3)

    C语言笔记(3)

例子:

 //牛顿迭代法求根问题 

//a*x*x*x+b*x*x+c*x+d=0
 
#include<stdio.h>
#include<math.h>
int main()
{
 double Handler(double ,double,double,double); //函数声明
 double a,b,c,d,x;
 printf("请输入a,b,c,d的值:\n");
 scanf("%lf %lf %lf %lf",&a,&b,&c,&d);
 
 printf("%10.7f\n",Handler(a,b,c,d));
 
 return 0; 

}
double Handler(double a,double b,double c,double d)
{
double x0,x=1.5,f,f1;

do{
x0=x;
f=a*x*x*x+b*x*x+c*x+d;
f1=3*a*x*x+b*2*x+c;
x=x0-f/f1;


}while(fabs(x-x0)>1e-6);  //精度为1e-6 

return x;

}


(2)二分法求根

      <1>如果要求已知函数 f(x) = 0 的根 (x 的解),那么先要找出一个区间 [a, b],使得f(a)与f(b)异号。根据介值定理,这个区间内一定包含着方程式的根。

      <2>求该区间的中点m=(a+b)/2,并找出 f(m) 的值。

      <3>若f(m)与 f(a) 正负号相同,则取 [m, b] 为新的区间, 否则取 [a, m]。重复第3步和第4步,直到得到理想的精确度为止。

//a*x*x*x+b*x*x+c*x+d=0


 
#include<stdio.h>
#include<math.h>


double a,b,c,d;
double fun(double);
int main()
{

   
    double m,n,i;
    int flag=0;                   //零值标志位 
    printf("请输入a,b,c,d的值:\n");
    scanf("%lf %lf %lf %lf",&a,&b,&c,&d);
   
    printf("请输入m,n的值:\n");
    scanf("%lf %lf",&m,&n);       //区间[m,n] 
if(fun(m)*fun(n)<0)
{

while(fabs(n-m)>1e-6)
{
i=(n+m)/2.0;
printf("[%lf,%lf]\n",m,n);
if(fabs(fun(i))<=1e-6)  //如果取值的函数可以认为是零点,跳出 
{
 flag=1;
 break;
}
 else if(fun(i)*fun(m)<0)
n=i;
 else if(fun(i)*fun(n)<0)
m=i;
    else
printf("此函数不是单调函数,无法进行二分法求解\n"); 
 
}
}    
else
printf("此函数在[m,n]区间内不是单调函数,无法进行二分法求解\n");

   if(flag==1)
    i=i;
   else
i=(m+n)/2.0;
printf("%lf,%lf\n",m,n);
printf("函数近似值为:%10.7f\n",i);
return 0;
}


double fun(double x)
{
    double value;
    value=a*x*x*x+b*x*x+c*x+d;

   return value;
}

相关文章:

  • 2021-10-01
猜你喜欢
  • 2021-07-25
  • 2021-09-12
  • 2022-01-07
  • 2021-12-16
  • 2021-12-13
相关资源
相似解决方案