【发布时间】:2014-10-28 21:04:10
【问题描述】:
我有一组 x 和 y 值,我想在其周围拟合一条多项式曲线。该函数应采用最多 9 次多项式的形式;
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;
其中 a(n) 是我的系数。
我有两个问题。该曲线可能并不总是采用 9 阶多项式的形式。它可能是 3 阶、6 阶或其他(最多 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
-
如果您可以访问它,曲线拟合工具箱可能会是您尝试做的更好的工具。
标签: matlab optimization constraints curve polynomials