Data_Structure/作業/unit1/binary-search-solves-equation/test_3.cpp

45 lines
1.0 KiB
C++
Raw Permalink Normal View History

2025-01-20 21:30:53 +08:00
#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;
}