哪位大佬可以帮忙解答,matlab如何做这道题?
【求解答案】拟合函数的表达式为
y=0.87283237x²-2.64547206x+1.82466281
【求解思路及解决方案】该题可以最小二乘求得拟合函数的系数。
1、假设给出的数据,符合抛物线回归函数,即 y=b1x²+b2x+b3
2、根据已知x变量序列,创建一个新的X变量矩阵和Y变量矩阵,即
3、用matlab的regress多重线性回归函数,求出抛物线回归函数的系数,即
[b,bint,r,rint,stats] = regress(Y,X)
这里,b—系数,bint—b的置信区间,r—残值向量,rint—r的置信区间,stats—检查统计量(1,回归方程的置信度;2,F统计量;3、与F统计量相应的p值)
4、用plot绘图函数,绘制试验值的散点图和拟合函数曲线
5、用xlabel和ylabel函数,标注坐标轴的名称
6、用legend函数,标注图例的名称
【matlab代码及解】
x=[-3,-2,0,3,4]';
y=[18,10,2,2,5]';
n=length(x);
X=[x.^2 x ones(n,1)];
Y=y;
[b,bint,r,rint,stats] = regress(y,X)
disp('拟合函数表达式:')
fprintf('y=%12.8fx^2 %12.8fx +%12.8f\n',b(1),b(2),b(3));
fprintf('相关系数 R^2=%12.8f\n',stats(1));
x1=-3:0.1:4;
y1=b(1)*x1.^2+b(2)*x1+b(3);
figure(1)
plot(x,y,'k*')
hold on
plot(x1,y1,'r-')
legend('试验值','拟合值')
xlabel('x');ylabel('y(x)')
【本题另一种解法】线性代数的最小二乘解
【本题相关知识点】
1、最小范数解。最小范数解用于求解,方程个数不大于未知量个数的方程组。
2、最小二乘解。最小二乘解用于求解,方程未知量个数不大于方程个数的方程组。
最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差(真实目标对象与拟合目标对象的差)的平方和寻找数据的最佳函数匹配。 利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。
最小二乘法还可用于曲线拟合。对于平面中的这n个点,可以使用无数条曲线来拟合。要求样本回归函数尽可能好地拟合这组值。综合起来看,这条直线处于样本数据的中心位置最合理。选择最佳拟合曲线的标准可以确定为:使总的拟合误差(即总残差)达到最小。
最小二乘法也是一种优化方法,求得目标函数的最优值。并且也可以用于曲线拟合,来解决回归问题。回归学习最常用的损失函数是平方损失函数,在此情况下,回归问题可以用著名的最小二乘法来解决。