У меня есть набор значений x и y, которые я хотел бы подогнать вокруг полиномиальной кривой. Функция должна иметь форму до полинома 9-го порядка;matlab optimization toolbox - polyomial fitting
y = a(1)*X.^1 + a(2)*X.^2 + a(3)*X.^3 + a(4)*X.^4 + a(5)*X.^5 + a(6)*X.^6 + a(7)*X.^7 + a(8)*X.^8 + a(9)*X.^9;
где а (п) мои коэффициенты.
Есть две проблемы, которые у меня есть. Эта кривая может не всегда иметь форму полинома 9-го порядка. Это может быть 3-й порядок, 6-й порядок или что-то еще (UP TO max 9-й порядок).
Я не уверен, как установить это с помощью инструментария оптимизации. Есть идеи?
Во-вторых, могу ли я установить ограничение, чтобы рассчитанные значения y всегда были постоянными?
Большое спасибо,
Текущий код ниже.
Функция;
function F = polyfun(a,redCO2)
F = a(1)*redCO2.^1 + a(2)*redCO2.^2 + a(3)*redCO2.^3 + a(4)*redCO2.^4 + a(5)*redCO2.^5 + a(6)*redCO2.^6 + a(7)*redCO2.^7 + a(8)*redCO2.^8 + a(9)*redCO2.^9;
F = @(a) polyfun(a,X);
a0 = [100, 100, 100, 100, 100, 100, 100, 100, 100]; % Starting guess
a = lsqcurvefit(@polyfun,a0,X,y);
Извинения, код функции должен прочитать X, где он говорит redCO2 – user3491279
Если у вас есть доступ к нему, кривой фитинг инструментарий будет, вероятно, быть лучшим инструментом для использования для того, что вы пытаетесь сделать. – MrAzzaman