繁体   English   中英

C#中未知数的迭代

[英]Iteration of an Unknown Number in C#

假设我有一个包含用户必须猜测的变量的公式。 但是在公式结束时,再次计算该变量,如果第一个和第二个不匹配,则必须使用新值再次求解公式。 简单地假设我有一个像这样的公式(我的复杂程度要长得多);

        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.3158 ,则y1变为等于y2

我不能使用while迭代正确。 我怎样才能解决这个问题? 或者,也许,我应该如何构建我的while块以给出确切的等式?

使用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 != y2以及y1 == y2可能会失败。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM