迭代法的简单应用

例1.
求平方根

/* 迭代法求一个数的平方根 */
#define Epsilon 1.0E-6
/*控制解的精度 10的-6次方 */
#include<stdio.h>
#include <math.h>
int main()
    {
        double a,x0,x1;
        scanf("%lf",&a);
        x0=a/2;
        x1=(x0+a/x0)/2;      /*算法*/
        while(fabs(x1-x0)>=Epsilon)
        {
            x0=x1;
            x1=(x0+a/x0)/2;
        }
        printf("%f的平方根:%.5f\n",a,x1);
    }

例2.
编写一个程序,用迭代法求方程x3-x-1=0在区间[0,2]中的根。
二分迭代法的原理:先取方程f(x)=0的两个粗略解 x1和x2,若f(x1)与f(x2)的正负符号相反,则表明区间(x1,x2)中至少有方程的一个解。
如果f(x)在区间(x1,x2)内单调递增或单调递减,则(x1,x2)内只有方程的一个解。
具体做法:取x1,x2的中点x3,计算f(x3)的值。
在x1,x2中去掉函数值与f(x3)同号者(假设f(x2)和f(x3)同号),得到一个由x1和x3构成的区间,这个区间是原来的一半,并且包含精确解。
不断重复(不是无穷多次)上述步骤,可以得到一个序列:x1,x2,x3,…,xn+1,xn,…这个序列的极限便是方程的精确值。

#include <stdio.h>
#include <math.h>
int main()
{
    double x1,x2,x3 ;
    x1 = 0; x2 = 2 ;       // 初始区间
    do
     {
          x3 = (x1 + x2) / 2;
       if ((x1 * x1 * x1 - x1 - 1) * (x3 * x3*x3 - x3 - 1) > 0 )
            x1 = x3 ;     // 改变区间
       else
            x2 = x3 ;     // 改变区间
    }
     while (fabs(x2-x1)>1e-6);  // 判断是否满足精度要求
    printf("%.6f",x1);      // 输出结果
    return 0 ;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_小树

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值