Естественные науки

Где (на каком сайте) можно найти такой онлайн-калькулятор, который находит коэффициенты многочлена по данным значениям?

В общем виде: дана конечная последовательность чисел: a(1); a(2); a(3); ...; a(n).
Требуется найти такой приведённый многочлен n-й cтепени:
P(x) = x^n + b(1)x^(n-1) + b(2)x^(n-2) + .+ b(n),
что его значения в точках 1; 2; 3; ...n равны, соответственно, заданным членам последовательности, т. е.
P(1) = a(1); P(2) = a(2); P(3) = a(3); ..; P(n) = a(n),
т. е. по заданным числам a(1); a(2); a(3); ...a(n) вычислить коэффициенты многочлена b(1); b(2); b(3); ...b(n).
Уточню, что нужен именно приведённый многочлен, т. е. такой, у которого старший коэффициент равен 1.

Это похоже на интерполяционный многочлен Лагранжа, только там это многочлен (n-1)-й степени, необязательно приведённый, а аргументы многочлена - произвольные числа, необязательно последовательные натуральные.

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

Вот простой пример, чтобы было совсем понятно, что именно требуется. Даны два числа: 2 и 5. Составить приведённый многочлен P(x), такой, что P(1) = 2; P(2) = 5.
Решение: так как дано 2 числа, то ищем многочлен 2-й степени: P(x) = x^2 + ax + b. Подставляя сюда данные из условия, получаем систему: 1^2 + a*1 + b = 2; 2^2 + a*2 + b = 5, или в упрощённом виде a + b = 1; 2a + b = 1. Решаем и получаем a = 0; b = 1, значит, искомый многочлен имеет вид: P(1) x^2 + 1. Действительно, P(1) = 1^2 + 1 = 1 + 1 = 2; P(2) = 2^2 + 1 =4 + 1 = 5.

Вот нужно то же самое, только для произвольного количества произвольных чисел, рассчитываемое на калькуляторе (на котором, разумеется, можно было бы ввести этот пример и выполнить проверку). Где такой калькулятор можно найти?
Шолпан ***
Шолпан ***
51 262
Вряд ли есть такие "онлайн калькуляторы".
А вот каким нибудь Octave запросто.
Вот решение для чисел 1,5

polyfit([1,2],[2,5] - [1,2].^2,1)
ans =

-0 1

а вот например, для 9, 4, 7
polyfit([1,2,3],[9,4,7] - [1,2,3].^3,2)
ans =

-2.0000 -6.0000 16.0000

P(x) = x^3 - 2x^2 - 6x + 16
P(1) = 1-2-6+16 = 9
P(2) = 8-8-12+16 = 4
P(3) = 27-18-18+16 = 7
Олеся Гуменюк
Олеся Гуменюк
25 107
Лучший ответ
Шолпан *** Да, это, похоже, то, что нужно. Спасибо.
Excel в помощь.
"Найти значения коэффициентов" называется - построить аппроксимирующий многочлен. Тупо вбиваете в один столбик все значения х, в другой столбик, соседний, - все соответствующие значения у. Потом выделяете оба столбика и строите график у (х), в панели "Диаграммы" (Charts) этот вид графика обозначен отдельными точками.
Когда график построен, надо на нём нажать правой кнопкой и выбрать из выпавшего меню опцию Trendline (фиг её знает, как она в русской версии Экселя называется), и там можно выбрать тип аппроксимации "Полином" и задать степень полинома. Вуаля.
Не забудьте только напомнить Экселю, чтоб он отобразил на графике уравнение полинома.

Насчёт приведённости многочлена - не факт, что в произвольном случае это вообще возможно.
Серега Нет
Серега Нет
90 574
Юля Макаренко Автору нужно не регрессионное уравнение, а интерполяционное, причем весьма специфическое.
Юля Макаренко Касательно приведенности многочлена: в общем случае факт, что это возможно, поскольку ранг матрицы системы совпадает с рангом расширенной матрицы.
Попробуйте поискать по возможностям Wolfram Alpha
Дашa Работягова
Дашa Работягова
17 431
Кратко, поскольку времени нет. Задача сводится к поиску интерполяционного многочлена Лагранжа с произвольным коэффициентом при старшей степени, но степенью на единицу ниже искомого. Как это понять? Выпишите систему для поиска коэффициентов и перенесите свободные члены, которые образуются при возведении аргумента в старшую степень, влево. Получится стандартная система для поиска интерполяционного многочлена Лагранжа степени (n-1). Правая часть - не столбец (а_1,...a_n), а уже измененный столбец с перенесенными свободными членами (а_1-1, а_2-2^n и т. д.) (проверьте!)

Дальше можно пользоваться любым ресурсом, который может это делать, например, тем же wolframalpha.com

Команда interpolating polynomial.

Например, для вашей задачи (изменю данные), если P(1)=2, P(2)=6
следует ввести https://www.wolframalpha.com/input/?i=interpolating+polynomial+calculator&assumption={"F",+"InterpolatingPolynomialCalculator",+"data"}+->"{2-1,+6-2^2}"

(Или копируйте сами всю гиперссылку полностью, или вводите команду interpolating polynomial calculator { 2-1, 6-2^2} - в фигурных скобках полный набор "поправленных" (на старшую степень) аргументов.

(Это формат команды для данных, заданных, как у вас, в последовательных натуральных точках 1, 2, 3..)

На выходе мы получаем многочлен x.
Это добавок к старшей степени (у нас она вторая).

Итоговый интерполяционный многочлен (приведенный) будет P(x)=x^2+x

Проверяем. P(1)=2, P(2)=6.

Детали разгребайте сами.

------

PS Собссно, как я сейчас вижу, ответ Άνθρωπος содержит буквально то же, я только сразу не осознала, синтаксис Octave мне незнаком.
Kanat 101
Kanat 101
2 101
WolframAlpha умеет рассчитывать интерполяционный многочлен Лагранжа. Частный случай многочлена Лагранжа, более подходящий для арифметической прогрессии точек, называется интерполяционным многочленом Ньютона. Wolfram понимает и кортокий синтаксис для Ньютона.
"interpolating polynomial 1, 4, 9, 16"
Вам нужно построить Ньютона или Лагранжа для последовательности точек.

(1, P(1) - 1), (2, P(2) - 2^n), (3, P(3) - 3^n) и так далее, где P(1) и так далее - значения в заданных точках. Вычесть n-е степени предлагаю руками или автоматизировать отдельно.

Для громоздких решений таких систем придуман определитель Вандермонда.
Meryem Tarolg
Meryem Tarolg
396

Похожие вопросы