【问题标题】:How can I use the following formula to determine the value of a variable?如何使用以下公式确定变量的值?
【发布时间】:2014-10-22 12:08:49
【问题描述】:

如何使用以下公式确定变量的值?

在有人建议这是题外话之前,我不在 Stack-overflow 上确定要使用的公式。 我在这里是为了弄清楚如何通过 c# 使用公式。

背景:

我之前在math.stackexchange.com 上打开了一个帖子,所以那里的人可以帮助我生成一个论坛,它将创建以下序列:1、7、14、30。那里的一个名为“混血王子”的用户建议我使用下面的公式来生成这个序列

an=A*n^3+B*n^2+C*n+D 

我过去使用过 int、double 等,然后在循环中说 int i = i*7; 但显然在这种情况下,数学论坛要复杂一些,所以我在这里问我如何利用上面的 C#

链接到线程: https://math.stackexchange.com/questions/985704/what-is-the-formula-to-generate-this-number-sequence-1-7-14-30

【问题讨论】:

  • 该帖子的第一条评论没有回答您的问题吗? “也许试试 an=1.33*n^3−7.5*n^2+19.166*n−12”。看起来他已经把 A、B、C 和 D 所需的值交给了你。
  • 我不知道如何在 C# 中使用它,因此我的问题在这里。如果你这样做,你能举一个C#例子吗
  • 这只是简单的算术。您是否对^ 运算符感到困惑?那是幂。为此,您可以在 C# 中使用 Math.Pow。
  • 我不确定是否理解,给定的公式不会产生整数(除非您将数字四舍五入),所以我不知道它是否符合您的需求。你需要多少这些数字?从您的帖子看来,四个就足够了。
  • Kevin,在 C# 中,如果我在另一个字母前加上一个“a”,那么它期望“ai”或“an”本身就是一个变量

标签: c# math mathematical-optimization discrete-mathematics polynomial-math


【解决方案1】:

您可以像这样在 C# 中使用该等式:

public static double Calculate(double n)
{
    return (1.33*(n*n*n)) - (7.5 * (n*n)) + (19.16 * n) - 12;
}

并用

调用它
Console.WriteLine(Calculate(1)); 
Console.WriteLine(Calculate(2)); 
Console.WriteLine(Calculate(3)); 
Console.WriteLine(Calculate(4)); 

上面写着

0.99
6.96
13.89
29.76

如果您将每个结果四舍五入为整数,您需要哪个序列。

现场示例:http://rextester.com/TIU97590

【讨论】:

  • 我认为您需要先将其立方化 n。
  • +1 链接到 rextester.com,很棒的网站,以前不知道。
  • 我怀疑对于大型索引,生成的四舍五入数字会慢慢偏离正确的序列。但无论如何,“正确的顺序”是什么?它不能只从四个数字中推导出来,不是吗?图案不明显。这似乎与一周有关。
  • @PatriceGahide - 我完全同意。这是产生一些“奇怪”序列的钝器。我怀疑 OP 真正想要的是一个包含 [1,7,14,30] 值的数组。
  • 1天、1周、2周、4周等
【解决方案2】:

试试这个:

public static void PrintSerial(int _elements)
{
    for (int i = 1; i <= _elements; i++)
    {
        int value = (int)Math.Round(((1.33 * Math.Pow(i, 3)) -
                       (7.5 * Math.Pow(i, 2)) +
                       (19.166 * Math.Pow(i, 1)) - 12));
        Console.Write("{0} ", value);
    }
}

例如,您可以使用 PrintSerial(5); 来调用它。它将打印1 7 14 30 63

参考资料:

Math.Pow Math.Round

【讨论】:

  • 好答案,你知道Console.WriteLine 有一个与String.Format 相同的重载吗?所以最后一行可能只是Console.WriteLine("{0} ",value)。
【解决方案3】:

您不需要对数字进行四舍五入,只需像这样使用正确的计算:

((4.0/3.0)*Math.Pow(i, 3)) - (7.5 * Math.Pow(i, 2)) + ((115.0/6.0) * i) - 12);

检查.net fiddle here。

问题是,为什么需要计算这个?您是否只需要序列中的 4 个或更多值?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-18
    • 2019-12-02
    • 2020-02-29
    • 2016-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多