Метод Ньютона: поиск корня куба, каждый раз ответом будет 0

Я использую программу с C ++, которая будет вычислять корень куба заданного числа с плавающей точкой, используя методы Ньютона. Моя программа компилируется, но ответ всегда выходит на ноль. Вот программа:

#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;

int main()
{
const double epsilon = 0.00000001;
double A = 0;
double x1 = A / 10;
double x2 = 0;
int iter = 0;

cout << "Please enter a number to square. " << endl;
cin >> A;

while ((fabs(x1 - x2) > epsilon) && (iter < 100)) {
x1 = x2;
x2 = ((2 / 3 * x1) + (A / (3 * x1 * x1)));
++iter;
}

cout << "The answer is : " << x2 << endl;
}

1

Решение

Вы назначали переменные равными нулю, поэтому вы не входили в цикл, а делили на ноль, потому что вы установили x1=x2 и вместе с тем, что было сказано в комментариях к вашему посту. Поэтому я перенес некоторые назначения и объявления, и все работало нормально

#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;

int main()
{
const double epsilon = 0.00000001;
double A = 0;
double x1 = 0;
double x2 = 1;
int iter = 0;

cout << "Please enter a number to square. " << endl;
cin >> A;
x1 = A / 10.0;
while ((fabs(x1 - x2) > epsilon) && (iter < 100)) {
x1 = x2;
x2 = ((2.0 / 3.0 * x1) + (A / (3.0 * x1 * x1)));
++iter;
}

cout << "The answer is : " << x2 << endl;
}
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]