Полином, который интерполирует функцию f в точках, используя Java - PullRequest
2 голосов
/ 12 февраля 2011

у меня есть значения

x = 0   =>   y = 0
x = 1   =>   y = 1
x = 3   =>   y = 27
x = 4   =>   y = 64

Я хочу создать полиномиальную функцию, используя JAVA для создания функции x ^ 3. Программа должна создать функцию и отобразить ее, и если я даю какие-либо значения, она должна вычислить интерполированные значения. Я создал функцию, которая только что сгенерировала значения, используя Aitken, но она не создала функцию, и действительно трудно понять, как выполнить функцию. Потому что я не знаю, как поставить значение X как X в Java-программе.

Ответы [ 3 ]

2 голосов
/ 07 апреля 2011

У меня та же проблема с вами, и наконец-то есть решение.Достаточно взглянуть на API Apache Commons Math.Вы можете использовать как метод Лагранжа, так и метод Ньютона для вычисления коэффициента каждой полиномиальной степени.

Вы можете загрузить файл .jar API здесь и документацию здесь .

1 голос
/ 12 февраля 2011

Предположим, у вас есть 4 пары (x, y) точек. Рассмотрим уравнение a0 + a1 * x + a2 * x ^ 2 + a3 * x ^ 3 = y. Положите 4 пары (x, y), и вы получите 4 линейных уравнения в 4 переменных. Используйте решатель матриц или напишите свое решение для (a0 ... a3). Теперь у вас есть метод интерполяции (double x) {return a0 * x + a1 * x * x + a2 * x ^ 2 + a3 * x ^ 3; }. Надеюсь, это поможет.

0 голосов
/ 12 февраля 2011

У меня есть значения x = 0 => y = 0 x = 1 => y = 1 x = 2 => y = 27 x = 3 => y = 64

Это странный способ перечисления очков.

Жаль, что они не являются частью y = x ^ 3. Это:

(x, y) = {(0,0), (1,1), (2, 8), (3, 27), (4, 64), (5, 125) ...}

UPDATE:

Я бы сформулировал ваш вопрос по-другому. Ваш «примерный» набор баллов неверен и вводит в заблуждение. Звучит так, будто вы действительно говорите: «У меня есть произвольный набор точек, и я бы хотел добавить к ним функцию».

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

Но все это зависит от знания заранее, какую функцию вы хотите.

Попросить компьютер определить оптимальную для вас форму и значения коэффициентов - непростая задача.

Вы, конечно, можете использовать интерполяцию Лагранжа между точками, но все же, возможно, не стоит говорить вам, какова «лучшая» функция для представления ваших точек. Он принимает полиномиальные формы, поэтому смешивание с другими функциями не является частью метода. Это может дать вам очень хорошее представление для sin (x), но оно не скажет вам, что функция синуса будет легче понять, чем полиномиальное приближение.

...