Хотите оценить полиномиальное уравнение - PullRequest
0 голосов
/ 11 апреля 2020

В данном случае это массив, который служит коэффициентами и градусами, первое значение которого не имеет степени.

double[] arr = { 12, 2, 3 ,4};

Затем я создал метод для печати вышеуказанного массива в терминах полиномиального уравнения. Он выдает выходные данные в виде строки следующим образом:

2x^2 + 3x^3 + 4x^4 + 12

Я хочу функцию, которая принимает аргумент x, а затем решает приведенный выше полином относительно значения x. Как я могу это сделать? Любая помощь будет оценена!

Ответы [ 2 ]

1 голос
/ 11 апреля 2020

Чтобы оценить это, вы можете просто сложить значения мощности с коэффициентами. Используя LINQ, это одна строка:

double result = arr.Select((c,i) => c * Math.Pow(x, i)).Sum(); 

Здесь i - индекс вашего массива, он начинается с нуля, поэтому x^0 = 1 * 12 == 12 et c.

Вы также можете сделать это без LINQ следующим образом:

    List<string> debug = new List<string>();
    double y = 1.0;
    result = 0.0;
    for (int i = 0; i < arr.Length; i++)
    {
        debug.Add($"{arr[i]} * x^{i}"); 
        result = result + arr[i] * y;
        y = y * x;
    }

    Console.WriteLine(string.Join(" + ", debug));
    Console.WriteLine(result);

Что для x = 3 выходов:

  12 * x^0 + 2 * x^1 + 3 * x^2 + 4 * x^3
  153

Тот же результат, что и у LINQ.

0 голосов
/ 14 апреля 2020

Это то, что я создал:

for (int i = 1; i < degree.Length; i++)
        {
            result_first += degree[i] * Math.Pow(x, degree[i]);
        }
        result_first += degree[0];

Отлично работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...