Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <iomanip>
- #include <cmath>
- #define ABS(x) ((x) < 0 ? -(x) : (x))
- int main() {
- // Input
- double a, p, epsilon;
- std::cout << "Enter root-value: ";
- std::cin >> a;
- std::cout << "Enter root-power: ";
- std::cin >> p;
- std::cout << "Enter epsilon: ";
- std::cin >> epsilon;
- // Variables init
- double prev = a;
- bool exit = false;
- unsigned long long iterations = 0;
- while (true) {
- // Count
- double v = 1 / p * ((p - 1)*prev + a / (pow(prev, p - 1)));
- iterations++;
- // Count delta, output
- double delta = ABS(v - prev);
- prev = v; // Save current value
- std::cout << "Iteration: " << std::setw(8) << iterations
- << "; Value: " << std::setw(8) << v
- << " ; Delta: " << std::setw(8) << delta
- << std::endl;
- if (delta <= epsilon)
- break;
- }
- // Output
- double accurate = pow(a, 1 / p);
- std::cout << "Accurate value: " << accurate << std::endl;
- if (accurate > prev) {
- std::cout << "Accurate bigger on: " << accurate - prev << std::endl;
- }
- else if (accurate < prev) {
- std::cout << "Accurate smaller on: " << prev - accurate << std::endl;
- }
- else {
- std::cout << "Accurate is equal to not accurate" << std::endl;
- }
- std::cout << "Not accurate value: " << prev << std::endl;
- std::cout << "Iterations: " << iterations << std::endl;
- return 0;
- }
Add Comment
Please, Sign In to add comment