牛顿迭代法求一个数开方

牛顿迭代法。用牛顿迭代法求x=a√, 令x初始值为a,迭代公式为Xn+1=12(Xn+aXn),要求迭代的精度满足∣∣Xn+1−Xn∣∣<0.00001。如果迭代20次之后仍未能达到精度要求,也停止计算,然后正常输出程序此时的结果。
**输入格式要求:"%f" 提示信息:"Input a=? "
**输出格式要求:"\na=%.6f,x=%.6f,i=%d" (i表示迭代次数)

#include
int main()
{float a = .0;printf("Input a=? ");scanf("%f", &a);float x = a,x1=0;int i = 0;float n = 0;//保存x的值,因为x会被x1替代do{x1 = 1.0 / 2.0 * (x + a / x);n = x;x = x1;i++;//条件判断这里要注意哪个是大数,哪个是小数} while (x1 - n < -1e-5|| n - x1>1e-5&&i<20);printf("\na=%.6f,x=%.6f,i=%d", a,x,i);return 0;
}

条件判断还可以写成fabs(x1-x)>1e-5,fabs函数用于求浮点数的绝对值,包含在math.h头文件中

大于1e-5精度不足,继续执行,小于1e-5即停止


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部