求平方根(三种方法)

用迭代法求a的平方根,要求前后两次求出的x的差的绝对值小于10的-5次方。输出平方根时保留2位小数。x与a用double类型数据。
例:
(1)输入:2 输出:1.41
(2)输入:4 输出:2.00
(3)输入:2020 输出:44.94

那么到底什么是迭代法呢,我们先给出下列定义:

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

下面我们就用精确迭代法和近似迭代法去求解一下咱们的题目。

1.迭代法:程序如下图所示:

我们需要用到一个循环结构来满足上述要求,我们需要不断给x0附上新的值来满足要求,依次循环得出结果,注意上述语句用到了fabs所以需要我们在源文件下加一个math.h下面是输出结果:

初步认识了迭代法后,我们可以细说一下牛顿迭代法,与迭代法不同,下面看题目:

2.用牛顿迭代法求方程在1.5附近的根:a*x*x*x+b*x*x+c*x+d=0.
从键盘上输入a,b,c,d,计算x的值。迭代公式如下图所示:

例:
(1)输入:2.0,-4,3,-6  输出:x=2.00
(2)输入:4.0,-1,3,-6.0  输出:x=1.00

既然有精度要求,大家注意不要看到符号就搞错判断,因为他的精度要求是结束循环的条件,故应该写成while(fabs(xn-x(n-1))>=1e-5),下面我们看程序:

输出结果如下:

与第一个程序除了公式其余均相同!

最后一个是二分法相对来说是有些难度的,大家看题:

3.用二分法求方程在(-10,10)之间的根:a*x*x*x+b*x*x+c*x+d=0.
从键盘上输入a,b,c,d,计算x,精度为10的-5次方,输出时保留2位小数。
例:
(1)输入:2,-4,3,-6  输出:x=2.00
(2)输入:4,-1,3,-6  输出:x=1.00
(3)输入:2.2,3.3,4.4,2.5 输出:x=-0.79

精度控制方式: f(c)的绝对值小于10的-5次方(c为中点)
给定精确度ξ,用二分法求函数f(x)零点近似值的步骤如下:
1、确定区间[a,b],验证f(a)·f(b)<0,给定精确度ξ.
2、求区间(a,b)的中点c.
3、计算f(c).
(1) 若f(c)=0(即|f(c)|<1e-5),则c就是函数的零点,程序结束;
(2) 若f(c)!=0 并且 f(a)·f(c)<0,则令b=c;
(3) 若f(c)!=0 并且 f(c)·f(b)<0,则令a=c.
(4) 重复2-3.

已经给出定义,分析其中的规律我们不难发现,是循环结构与条件语句的双重运用,在这里着重强调函数的运用,我们在写程序的时候需要明确一个函数定为F(x),首先赋值,我们定义两个量x0,x1分别等于-10和10,定义x2为中间量(x0+x1)/2,下面就按照上述程序输入和题目提示对应的语句即可,如下图所示:

如果F(x0)*F(x2)>0则说明F(x1)*F(x2)<0可直接运用if...else...解决问题。

输出结果如下图所示:

以上程序均演示了一个例子,其他不做演示。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值