45 lines
1.0 KiB
C++
45 lines
1.0 KiB
C++
|
#include <iostream>
|
|||
|
#include <iomanip>
|
|||
|
#include <cmath>
|
|||
|
#define f(x) ((x) * (x) - a) // <20>w<EFBFBD>q<EFBFBD><71><EFBFBD>{<7B><> f(x)
|
|||
|
|
|||
|
using namespace std;
|
|||
|
|
|||
|
int main() {
|
|||
|
|
|||
|
double a;
|
|||
|
cout << "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڪ<EFBFBD><EFBFBD>ƭ<EFBFBD> a= ";
|
|||
|
cin >> a;
|
|||
|
cout << "----------------------------------------"<< endl;
|
|||
|
double c=sqrt(a);
|
|||
|
double left = 0, right = 20; // <20>]<5D>w<EFBFBD>d<EFBFBD><64>
|
|||
|
double b = 1e-10;
|
|||
|
double mid;
|
|||
|
int i = 0;
|
|||
|
|
|||
|
while ((right - left) > b) {
|
|||
|
mid = (left + right) / 2.0;
|
|||
|
i++;
|
|||
|
printf("#%d [%f %f ]\n", i, left, right);
|
|||
|
|
|||
|
if (f(mid) == 0.0) {
|
|||
|
cout << "<EFBFBD>ڪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȭ<EFBFBD>: " << mid << " <20>B f(x)= " << f(mid) << endl;
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
if (f(left) * f(mid) < 0) {
|
|||
|
right = mid; // <20><><EFBFBD><EFBFBD>
|
|||
|
} else {
|
|||
|
left = mid; // <20>k<EFBFBD><6B>
|
|||
|
}
|
|||
|
}
|
|||
|
cout << "-----------------------------------------"<< endl;
|
|||
|
int d=((mid - c) / (c)) * 100 ;
|
|||
|
if(d>0)
|
|||
|
d=d;
|
|||
|
else
|
|||
|
d=-d;
|
|||
|
cout << "sqrt("<< a <<"): " << sqrt(a) << " <20>~<7E>t<EFBFBD>Ȭ<EFBFBD>(%)" << d << endl;
|
|||
|
return 0;
|
|||
|
}
|