Как я могу сделать многочлен все-в-одном из многочлена?
Я не знаком с экспертом по математике. поэтому я не знаю с чего начать.
У меня есть такая статья. Я просто следую этому описанию статьи. Но это не легко для меня.
Но я не уверен, как сделать только одно полиномиальное уравнение (или что-то подобное) из 4 полиномиальных уравнений. Разве это может быть возможным способом?
Если да, не могли бы вы помочь мне, как получить полином (или что-то вроде уравнения)? Если нет, дайте мне знать причину почему?
ОБНОВИТЬ
I'd like to try as following
clear all ;
clc
ab = (H' * H)\H' * y;
y2 = H*ab;
Finally I can get some numbers like this.
So, is this meaning?
As you can see the red curve line, something wrong.
What did I miss anythings?
1 ответ
Вся статья гласит: "Вы можете объединить несколько наборов данных в один, чтобы получить один многочлен".
Вы также можете пойти в другом направлении: разделите ваш набор данных на части и получите столько отдельных, сколько пожелаете. (Это называется n-кратной проверкой.)
Вы начинаете с набора из n точек (х, у). (Сохраняйте это простым, имея только одну независимую переменную x и одну зависимую переменную y.)
Ваш первый шаг должен состоять в том, чтобы построить данные, посмотреть на них и подумать о том, какие отношения между ними хорошо объяснят.
Ваш следующий шаг должен принять некоторую форму для отношений между ними. Людям нравятся многочлены, потому что их легко понять и с ними работать, но возможны и другие, более сложные отношения.
Один полином может быть:
y = c0 + c1*x + c2*x^2 + c3*x^3
Это ваши общие отношения между зависимой переменной y и независимой переменной x.
У вас есть n точек (х, у). Ваша функция не может пройти через каждую точку. В приведенном мной примере есть только четыре коэффициента. Как вы рассчитываете коэффициенты для n >> 4?
Вот где вступают матриц. У вас есть n уравнений:
y(1) = c0 + c1*x(1) + c2*x(1)^2 + c3*x(1)^3
....
y(n) = c0 + c1*x(n) + c2*x(n)^2 + c3*x(n)^3
Вы можете написать это в виде матрицы:
у = Н * с
где штрих обозначает "транспонировать".
Предварительно умножьте обе стороны на транспонирование (X):
транспонировать (X) * y = транспонировать (H) * H * c
Выполните стандартную инверсию матрицы или разложение LU, чтобы найти неизвестный вектор коэффициентов c. Эти конкретные коэффициенты минимизируют сумму квадратов разностей между функцией, оцененной в каждой точке x, и вашим фактическим значением y.
Обновить:
Я не знаю, откуда эта фиксация с этими полиномами.
Твой у вектор? Неправильно. Ваша матрица H? Опять не так.
Если вы должны настаивать на использовании этих полиномов, вот что я бы порекомендовал: у вас есть диапазон значений x на вашем графике. Допустим, у вас есть 100 значений x, равномерно распределенных между 0 и вашим максимальным значением. Это те значения, которые нужно включить в вашу матрицу H.
Используйте полиномы, чтобы синтезировать наборы значений y, по одному на каждый полином.
Объедините их все в одну большую задачу и решите для нового набора коэффициентов. Если вы хотите полином 3-го порядка, у вас будет только четыре коэффициента и одно уравнение. Он будет представлять наилучшее приближение наименьших квадратов всех синтезированных данных, которые вы создали с помощью четырех полиномов.