C语言 迭代法求一个数的平方根

用迭代法求。求平方根的迭代公式为:Xn+1=(Xn+a/Xn)/2要求前后两次求出的得差的绝对值少于0.00001。#include<stdio.h>#include<m... 用迭代法求 。求平方根的迭代公式为:Xn+1=(Xn+a/Xn)/2

要求前后两次求出的得差的绝对值少于0.00001。
#include<stdio.h>
#include<math.h>
void main()
{
float x0,x1,a;
scanf("%f",&a);
x1=a/2;
do
{
x0=x1;x1=(x0+a/x0)/2; }
while(fabs(x0-x1)>=0.00001); printf("%.3f",x1);}这个程序中为什么把x1的初值赋值为a/2 还有什么别的方法能编写出这个问题 请提供谢谢
展开
 我来答
匿名用户
2013-11-23
展开全部
因为上面的算法使用的是函数f(x)=x^2-c,求根;所以要想使牛顿迭代的序列收敛于c,则,必须满足f(x0)=x0^2-c>0;所以一般情况下,取x0大于等于根号c都可以。这个是逼近理论的内容了。具体证明你查资料吧。求根好的算法很多的·给你一个快速算法:#include<stdio.h>
#include<math.h>
float SquareRootFloat(float number) {
long i;
float x, y;
const float f = 1.5F;

x = number * 0.5F;
y = number;
i = * ( long * ) &y;
i = 0x5f3759df - ( i >> 1 );
y = * ( float * ) &i;
y = y * ( f - ( x * y * y ) );
y = y * ( f - ( x * y * y ) );
return number * y;
}void main()
{
float x0,x1,a;
scanf("%f",&a);
printf("%.8f",SquareRootFloat(a));}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式