用迭代法求x=sqrt(a)。求平方根的迭代公式为
要求前后两次求出的x的差的绝对值小于10^(-5)
int sqrt() { // 用迭代法求x=sqrt(a)。求平方根的迭代公式为 // x[n+1] = 1/2(x[n] + a/x[n]); // 要求前后两次求出的x的差的绝对值小于10^(-5) double a, x, prev_x; printf("请输入一个正数 a: "); scanf("%lf", &a); if (a < 0) { printf("输入错误,平方根不存在。\n"); return 1; } // 迭代初值 x0 x = a / 2.0; prev_x = 0.0; // 记录上一次的值 const double EPS = 1e-5; // 误差精度 while (fabs(x - prev_x) >= EPS) { // 判断前后两次计算结果是否足够接近 prev_x = x; // 记录上一次的值 x = 0.5 * (x + a / x); // 迭代公式 } printf("平方根的近似值: %.5lf\n", x); return 0; }
#include<stdio.h> int main() { float x1,x2,a;
scanf("%f",&a); x1=a; x2=(x1+a/x1)/2; while(fabs(x1-x2)>=1.e-5) { x1=x2; x2=(x2+a/x2)/2; } printf("%f",x2); }
。
#include <stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> int main(void) { float x_n,x1=0,a,t;//xn x(n+1) 第一次数字 t差值 puts("请输入要求平方根的数(正数)"); scanf("%f", &x_n); a = x_n; t = x_n; while (t>=0.00001) { x1 = (x_n + a / x_n) / 2; t = x_n - x1; x_n = x1; } printf("sqrt(%f)=%f", a,x_n); return 0; }
#include<stdio.h> #include<math.h> #include<string.h> #include<stdlib.h> int main() { double a; scanf("%lf",&a); double x=a; while(1) { double zancun=0.5*(x+a/x); if(fabs(zancun-x)<1e-5) break; else x=zancun; } printf("%f\n",x); }
#include &l...
用户登录可进行刷题及查看答案
#include <stdio.h> #include <math.h> int main() { float a, x0, x1; printf("请输入一个正数: "); scanf("%f", &a); x0 = a / 2; x1 = (x0 + a / x0) / 2; do { x0 = x1; x1 = (x0 + a / x0) / 2; } while (fabs(x0 - x1) >= 1e-5); printf("[%f] 的平方根为 [%f]\n", a, x1); return 0; }
登录后提交答案