方程:
#include<iostream>
#include<math.h>
using namespace std;
struct Binary {
public:
double Result(double a) {
double result = 0.0000000;
result += a * a * a - 2 * a - 5;
return result;
}
double resultBinary() {
int c=0;
double a = 2.000000, b = 3.000000;
double middle = (a + b) / 2.000000;
while (Result(middle) != 0) {
if (Result(middle) > 0)
b = middle;
else if (Result(middle) < 0) {
a = middle;
}
middle = (a + b) / 2.000000;
c++;
if (abs(Result(a) - Result(middle)) < 0.001)
break;
}
cout << "总共迭代了:" << c << " ";
return middle;
}
};
struct Newton {
public:
double Result(double x) {
double result = 0.000000;
result += (x * x * x - 2 * x - 5) / (3 * x*x - 2);
return result;
}
double resultNewton() {
int c=0;
double result = 0.000000;
double x1 = 3.000000, x2 = 0.000000;
while (true) {
c++;
double b;
x2 = x1 - Result(x1);
b = x1;
x1 = x2;
result = x2;
if (abs(x2 - b) < 0.001)
break;
}
cout << "总共迭代了:"<<c<<" ";
return result;
}
};
int main() {
Binary binary;
cout <<"结果为:"<< binary.resultBinary()<< endl;
Newton newton;
cout <<"结果为:"<< newton.resultNewton() << endl;
system("pause");
return 0;
}