C# 中未知数的迭代

本文关键字:迭代 未知数 | 更新日期: 2023-09-27 18:24:27

假设我有一个公式,其中包含一个用户必须猜测的变量。但是在公式结束时,再次计算该变量,如果第一个和第二个不匹配,则必须使用新值再次求解公式。很快假设我有一个这样的公式(我的公式比这个复杂得多,更长(;

        double y1 = Convert.ToDouble(txtboxPredefinedY.Text);
        double x, z, Ort;
        double y2 = 0;
        while (y1 != y2)
        {
            x = (Math.Pow(y1, 2)) + 10;
            z = (y1 - 2) / 3;
            y2 = (x / z);
            Ort = (y2 + y1)/2;
            y1 = Ort;
            if (y1 == y2)
                break;
        }
        txtboxResult.Text = r.ToString();

所以我首先定义的y1变量必须与最后一个变量y2匹配。为了实现这一点,我计算了整个公式并找到一个新的y1,重新计算公式。

我想定义一个y1值,让应用程序纠正我。例如,这段代码应该给我一个值 3.3158 .如果第一个输入3.3158y1等于y2

我无法正确使用while迭代。我该如何解决这个问题?或者,我应该如何构建我的while块来给出精确的方程?

C# 中未知数的迭代

使用 Double 时,应与公差进行比较:

  double y1 = Convert.ToDouble(txtboxPredefinedY.Text);
  double x, z, Ort;
  double y2 = 0;
  double tolerance = 0.001;
  while (Math.Abs(y1 - y2) >= tolerance)  {
    x = (Math.Pow(y1, 2)) + 10;
    z = (y1 - 2) / 3;
    y2 = (x / z);
    Ort = (y2 + y1)/2;
    y1 = Ort;
  }

y1 != y2y1 == y2这样的比较可能会因为舍入错误而失败。