1. 程式人生 > >牛頓迭代法求平方根、立方根

牛頓迭代法求平方根、立方根

牛頓迭代公式

平方根迭代公式:a(n+1)=( a(n) + num/a(n) )/2,a(0) 初始化為1;

立方根迭代公式:a(n+1)=( 2a(n) + num/( (a(n))^2 ) )/3,a(0) 初始化為1;

程式計算過程

#include<iostream>
#include<iomanip>
#define E 0.0001
using namespace std;

double getSqrtRoot(double num) //平方根計算函式
{
    double x0=1, x1;
    x1 = (x0 + num / x0) / 2.0;
    while
(fabs(x1 - x0) >= E) { x0 = x1; x1 = (x0 + num / x0) / 2.0; } return x1; } double getCubeRoot(double num) //立方根計算函式 { double x0, x1; x0 = num; x1 = (2 * x0 / 3) + (num / (3 * x0*x0)); while ((x1 - x0>E) || (x1 - x0<-E)) { x0 = x1; x1 = (2 * x0 / 3
) + (num / (3 * x0*x0)); } return x1; } int main() { double in; while (cin >> in) { cout << fixed << showpoint << setprecision(1) << getCubeRoot(in) << endl; cout << fixed << showpoint << setprecision(1) << getSqrtRoot(in) << endl; } return
0; }