c++,用递推方法编程求a≥0的平方根,要求前后两次求出的x的差的绝对值小于10-7。

来源:百度知道 编辑:UC知道 时间:2024/09/22 10:31:51

#include <stdio.h>
#include <math.h>

double mysqrt(double x0) //牛顿法
{
double a = x0, x1 = (x0 + a / x0) * 0.5;
while(fabs(x0 - x1) > 1e-12)
{
x0 = x1;
x1 = (x0 + a / x0) * 0.5;
}
return x1;
}

int main(void)
{
double x;
scanf("%lf", &x);
printf("%.10f\n", mysqrt(x));
return 0;
}

//diguilei.h
#ifndef as
#define as

class digui
{
private:
double a;
public:
digui();
~digui();
void seta(double );
double fx(double );
};
#endif

//digui_lei.cpp
#include "diguilei.h"
#include <math.h>

digui::digui(){}

digui::~digui(){}

void digui::seta(double a)
{ this->a=a;}

double digui::fx(double x)
{
double y;
y=(x+a/x)/2;
if(fabs(y-x)>=1e-7)
return f