【问题标题】:Trouble writing cube root function [closed]编写立方根函数时遇到问题[关闭]
【发布时间】:2014-01-31 21:18:47
【问题描述】:

我正在尝试使用以下伪代码编写一个名为 double my_cbrt_1(double n) 的立方根函数:

x = 1
repeat 10 times:  x = (2x + n / x2) / 3
return x

然后编写一个 main 打印 n、cbrt(n) 和 my_cbrt_1(n),对于 k = -100、-10、-1、0、1、10,n = 3.14159 乘以 10 的 k 次方,和 100. 使用这个 C++11 代码(仅适用于 linux2):

for(auto k : {-100, -10, -1, 0, 1, 10, 100}){
    n = 3.14159 * pow(10.0, k);
    //cout goes here
}

我在开始时遇到了麻烦。如果有人可以帮助我,那就太好了!

【问题讨论】:

  • 你走了多远?你在哪里卡住了?
  • SO 不是解释代码/伪代码如何工作或学习算法或语言的正确位置。是作业题吗?
  • 我还没有真正得到任何地方大声笑,需要帮助开始。我是 C++ 的菜鸟
  • 如果您是 C++ 新手,请从“hello world”教程开始,然后逐步提高。
  • 我想你的意思是x = (2x + n / x^2) / 3

标签: c++ root cube


【解决方案1】:

首先,您可能应该计算一次单个数字的立方根,然后您可以将相同的函数用于新数字

简单地实现你被赋予的功能

double my_cbrt_1(double n)
{
    double x = 1.0;
    for(int i=0; i<10; i++)
    {
        x = (2.0*x + n / (x*x)) / 3.0;
    }
    return x;
}

【讨论】:

  • 你应该用 x*x 替换 x2 ! OP的公式是错误的!
  • @hivert 可能是 OP 试图复制上标时的拼写错误
  • 您的公式中会出现运算顺序问题。应该是:x = ((2.0 * x) + (n / (x * x))) / 3.0;
  • 最好设置一个收敛标准。
  • 这就是我真正得到的!我对他们要求的主要内容有点困惑
猜你喜欢
  • 1970-01-01
  • 2023-01-04
  • 2014-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-24
相关资源
最近更新 更多