c++ - C++ 上的牛顿法

标签 c++

好的,我正在尝试将我的牛顿放入这个 C++ 中,这是我的代码:

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
  double x1, x0;
  int n,i;

  cin >> x0, n;

  for(i = 1; i <= n; i++)
  {
      x1 = x0 - ((4.0*pow(x0,3.0)-2.0*pow(x0,2.0)+3.0)/(12.0*pow(x0,2.0)-4.0*x0)); #problem
      x0 = x1;
  }

  cout << x1;
  return 0;
}

好吧,也许我的代码没有很好地描述给你,但问题是#problem部分,当我把它放在迭代方法上时,它编译得很好没有给出错误,但是当我运行时,它需要很长时间, 并且只是卡住在 x0, n 的输入上(参见迭代前的代码),即使我插入 n = 1,但删除迭代,它运行良好,并给出预期的答案(在这种情况下我不能进行迭代,类似于 n = 1)。这是什么原因呢?因为我想进行第 4 次迭代。

最佳答案

cin >> x0, n;

这只会读入 x0,留下包含垃圾值的 n。要阅读两者,您需要

cin >> x0 >> n;

记得启用编译器警告:大多数编译器会检测到这样的错误。

关于c++ - C++ 上的牛顿法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26562207/

相关文章:

c++ - 命名空间中 using 声明的范围

c++ - vector::push_back 和 std::move

c++ - new 和 make_shared 用于共享指针

c++ - C++ 中的默认结构初始化

c++ - 如何正确解除分配或删除 C++ vector ?

c++ - 使用 sleep() 以一秒为间隔打印数组元素

c++ - 使用 Google Test 和 CMake 在子文件夹中配置测试

c++ - 尝试在按下时消除此按钮的抖动

c++ - 多线程环境中的函数错误

c++ - addface::OpenMesh 中的复杂边错误