【问题标题】:write code to find square-root using bisection method in c++? [closed]在 C++ 中使用二分法编写代码以求平方根? [关闭]
【发布时间】:2013-11-07 19:17:13
【问题描述】:

据我所知,二分法缩小了您的搜索范围并达到了区间内的特定值。请给我一个示例,说明如何制作通用代码来查找平方根。我认为的方式是采用三个变量低,中,高。 high = userinput, low = 0, mid (low + high) /2,问题是如何改变数值。

【问题讨论】:

  • 我们不是来帮你做功课的。 写一些代码。那么我们也许会尝试帮助修复它。
  • 如果您没有尝试我们无法帮助您,我们不会为您做作业。
  • 如果你打算继续学习编码,我希望你真的花时间去学习和理解它。

标签: c++ square-root bisection


【解决方案1】:
#include <iostream>
using namespace std;

int main() {
   int val;
   cout << "Enter the number: ";
   cin >> val;

   if( val< 0) {
      cout<< "According to my maths its not possible." << endl;
   } else {
      float low = 0, high = val;
      float mid = (low  + high)/2;
      int c = 0;

      while (c != 1) {
         if(mid * mid = val) {
            cout << "Square root is: " << mid <<endl;
            c = 1;
         } else {
            if(mid * mid > val) {
               high = mid;
               mid = (low + high)/2;
            } else {
               low = mid;
               mid = (low + high)/2;
            }
         }
      }
   }
   return 0;
}

【讨论】:

  • @user2966111 请努力真正理解为什么会这样。如果您只是复制粘贴解决方案,您将永远不会在课堂上取得成功。
  • “c=0”和“while (c != 1)”背后的解释是什么?
  • c=0 为初始条件,c!=1 为检查条件,为真则退出循环(c=1)
  • 对于不完美的平方根,循环将永远运行!
【解决方案2】:

假设我们正在寻找sqrt(N)

here的描述,你必须找到LOW和HIGH的平均值,如果平均值的平方大于N,我们用我们刚刚找到的平均值改变高值,如果它小于@987654324 @,我们用平均值改变低值。我们重复这些步骤多次以满足所需的精度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多