立方根的求解

#include<iostream>

using namespace std;

void cube_root(float x, float x_cube_root,float max_res)

{

      float residual,left,right;

    if( x>=1)

{    left =1;  

     right =x;

}

   else if(x>=0 && x<1)

{

    left = x;

   right =1;

}

  else if( x>-1 && x<0)

{

  left = -1;

  right =x;

}

else 

{

    left =x;

    right = -1;

}

     do

{     

      x_cube_root =(left + right)/2;

      residual = x -  x_cube_root * x_cube_root * x_cube_root;

    if  (residual >0)

        left = x_cube_root;

     else 

       right =x_cube_root;

  } while (abs(residual)> max_res);

}

int  main()

{

      float  x,cube_root_x,res;

     for(int i=0;i<100;i++)

{

       srand(i);

      x =  rand() %100 * pow(-1,rand()) + float(rand()%1000)/1000 ;

      cube_root(x, cube_root_x,0.001);

       res= abs( x- cube_root_x * cube_root_x * cube_root_x);

      cout<< x <<"cube_root----->"<<cube_root_x<<"residual :"<<res<<endl;

}

return 0;

}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值