Как я могу использовать следующую формулу для определения значения переменной?

Как я могу использовать следующую формулу для определения значения переменной?

Прежде чем кто-то скажет, что это не по теме, я не нахожусь в 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;, но, очевидно, в этом случае математическая формула немного сложнее, поэтому я здесь, чтобы спросите, как я могу использовать вышеуказанное в С#

Ссылка на тему: https://math.stackexchange.com/questions/985704/what-is-the-formula-to-generate-this-number-sequence-1-7-14-30


person Community    schedule 22.10.2014    source источник
comment
Первый комментарий к этому посту не ответил на ваш вопрос? возможно, попробуйте an=1,33*n^3−7,5*n^2+19,166*n−12. Похоже, он уже передал вам необходимые значения для A, B, C и D.   -  person Kevin    schedule 22.10.2014
comment
Я не знаю, как использовать это в С#, поэтому мой вопрос здесь. Если да, не могли бы вы привести пример C#   -  person    schedule 22.10.2014
comment
Это простая арифметика. Вас смущает оператор ^? Это возведение в степень. Для этого вы можете использовать Math.Pow в C#.   -  person Kevin    schedule 22.10.2014
comment
Я не уверен, что понимаю, данная формула не будет давать целые числа (если вы не округлите числа), поэтому я не знаю, соответствует ли она вашим потребностям. Сколько из этих чисел вам нужно? Судя по вашему посту, четырех будет достаточно.   -  person Patrice Gahide    schedule 22.10.2014
comment
Кевин, в C#, если я но a перед другой буквой, ожидается, что ai или an будут самой переменной   -  person    schedule 22.10.2014
comment
Вы спрашиваете, как создать переменную? int an = whatever;.   -  person Kevin    schedule 22.10.2014
comment
Когда он указывает, он предлагает имя новой переменной. Я предположил, что это означает, что операция должна быть выполнена на выходе правой части форума.   -  person    schedule 22.10.2014
comment
an — это просто энное число в последовательности a.   -  person Patrice Gahide    schedule 22.10.2014
comment
Если ваш вопрос звучит так: Можете ли вы перевести эту формулу на C#?, тогда мой: Что вы пробовали?.   -  person CodeCaster    schedule 22.10.2014
comment
У вас есть ответы, но вы уверены, что не используете кувалду, чтобы расколоть орех? Вы уверены, что на самом деле вам нужен не просто массив с заранее заготовленными числами в [1,7,14,30]?   -  person Jamiec    schedule 22.10.2014
comment
Кроме того, следующие числа в этой последовательности (63 120 211), похоже, не имеют никакого значения. 63 это 2 месяца? 120 3 месяца?   -  person Jamiec    schedule 22.10.2014


Ответы (3)


Вы можете использовать это уравнение в 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

person Jamiec    schedule 22.10.2014
comment
Я думаю, вам нужно сначала кубировать это n. - person Kevin; 22.10.2014
comment
+1 за ссылку на rextester.com, отличный сайт, раньше не знал. - person Dom84; 22.10.2014
comment
Я подозреваю, что для больших индексов полученные округленные числа будут медленно отходить от правильной последовательности. Но какова правильная последовательность? Его нельзя вывести только из четырех чисел, не так ли? закономерность не очевидна. Кажется, это что-то недельное. - person Patrice Gahide; 22.10.2014
comment
@PatriceGahide - я полностью согласен. Это тупой способ создания некоторой «странной» последовательности. Я подозреваю, что ОП действительно хочет массив со значениями [1,7,14,30] в нем. - person Jamiec; 22.10.2014
comment
Это 1 день, 1 неделя, 2 недели, 4 недели и т.д. - person ; 22.10.2014
comment
@Jamiec Это была моя первая мысль, но он не ответил на мой вопрос. - person Patrice Gahide; 22.10.2014
comment
@CheckLater Определите и т. д. Пожалуйста, дайте еще три или четыре числа. Это действительно неясно. Я не думаю, что вам нужна такая сложная формула. - person Patrice Gahide; 22.10.2014
comment
@CheckLater - если это все, храните свои числа в массиве - нет абсолютно никакой необходимости вычислять эту последовательность, если вы ее уже знаете! - person Jamiec; 22.10.2014
comment
Например, как 30 равно четырем неделям, тогда как 14 равно двум, а 63 равно 9(?)? Вы должны определить неделю. - person Patrice Gahide; 22.10.2014

Попробуй это:

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

person blfuentes    schedule 22.10.2014
comment
Хороший ответ. Вы знаете, что Console.WriteLine имеет перегрузку, которая делает то же самое, что и String.Format? Так что последняя строка может быть просто Console.WriteLine("{0} ",value). - person Jamiec; 22.10.2014

Вам не нужно округлять числа, просто используйте правильный расчет следующим образом:

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

Проверьте .net здесь.

Вопрос в том, зачем вам это вычислять? Вам нужно только 4 значения из последовательности или больше?

person avidenic    schedule 22.10.2014