math - Dart - 查找函数中的所有根

标签 math dart equation

我正在尝试在函数中找到所有根 [f(x) = 0]。我目前的解决方案只有在它们间隔足够大并且不相互干扰时才有效。 (例如它适用于 x^2 - 2)

bool numberIsCloseToZero(num number){
  return (num.parse(number.abs().toStringAsFixed(1)) == 0.0) ? true : false;
}

List<num> calculateRoots(String function){

  num eval = 0.0;
  List<num> roots = [];

  for (num x = -10; x < 10; x += 0.1){
    eval = calculateYOfX(function, x);
    if (numberIsCloseToZero(num.parse(eval.toStringAsFixed(2)))){
      roots.add(x);
    }
  }
  return roots;
}

显然,这是由于我的四舍五入。 (例如,x^2 的根的周围值太接近于零,因此假设它们也是根)。你认为我应该通过实际求解方程而不是“蛮力”求根吗?

谢谢

最佳答案

如果你能找到分析解决方案 - 使用它。低阶多项式方程是可能的(如提到的 x^2 - 2 )。

在一般情况下 - 你肯定必须学习数值方法 - 在这种情况下,root finding .

bisection 开始方法或Newthon's方法。它们允许在每一步都获得越来越精确的根位置。

关于math - Dart - 查找函数中的所有根,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43717553/

相关文章:

c++ - 使用 SVD 计算最佳拟合平面方程时出错

没有 SciPy 的 Python 数值积分?

service - Flutter - Dart 中的后台服务(仅当应用程序可见时)

flutter - 导航到其他屏幕时路由抛出异常 "There are multiple heroes that share the same tag within a subtree"

latex - 在方程中将 LaTeX 分数项排版得更大

python - 是否可以使用 Python 中的 sympy 求解偏微分方程组?

math - 这两个等式有什么区别?谷歌计算困惑

c# - 如何从相对方向确定 360° 角?

math - 求因子总和

firebase - 一次性验证后Flutter Android App崩溃