Написание полинома в мажорном виде в Java - PullRequest
1 голос
/ 26 февраля 2020

Итак, у меня есть массив коэффициентов комплексных чисел. Таким образом, если c = a + ib, коэффициент будет сохранен как (a, b). Мой массив называется Coeff [i]. Я хотел бы написать функцию, которая будет принимать переменную, скажем, z, и оценивать полином. Но дело в том, что я не хочу использовать функцию Math.Pow. Я бы хотел оценить полином следующим образом:

enter image description here

У меня есть попытался записать полиномы степени 1,2,3,4, и по этому я заметил закономерность (я имею в виду, что это отчасти очевидно). Но тогда я не мог придумать способ написать это так. Если бы кто-нибудь мог помочь, это было бы замечательно.

Может быть, я должен установить al oop, который будет начинаться с самого высокого индекса и суммировать полином отнутри?

Я думаю, что должен настроить al oop с этим, но я не уверен, как именно: enter image description here

1 Ответ

1 голос
/ 26 февраля 2020

То, что вы описываете, называется Метод Хормера для оценки полиномов. Вы можете оценить, начав с члена высшего порядка, затем многократно умножить его на z, а затем добавить следующий член высшего порядка, повторить промывание. Это выглядит примерно так:

Complex eval(Complex z, Complex coeff[]) {
  Complex eval = 0;

  for (int i = coeff.length-1; i > 0; i--) {
    eval += Complex.add(coeff[i], Complex.mul(eval, z));
  }

  return eval + coeff[0];
}

Вам необходимо выполнить некоторую проверку входных данных (т.е. убедиться, что массив не пустой), и это предполагает, что у вас есть класс для управления комплексными числами (я не помню, есть ли стандартный). Кроме того, я не проверял это, поэтому возьмите его с крошкой соли, но это общая идея.

...