美文网首页
[数学建模第四讲] 拟合算法

[数学建模第四讲] 拟合算法

作者: 茶酒qqq | 来源:发表于2020-02-05 20:19 被阅读0次
image.png

拟合算法

差值函数:曲线一定经过给出的样本点

而拟合问题的目标是寻求一个完整的函数,使得该曲线在某种准则下与所有的数据点最为接近,即曲线的拟合度最好(最小化损失函数)

样本点个数n>30时,称为大样本,一般用拟合。

如何定义拟合的曲线和和真实曲线最接近

最小二乘法:拟合的值与真实值的差的平方和最小时的k和b

image.png

数学表达:

image.png
则L为损失函数/残差平方和 易求得 image.png

MATLAB函数求拟合函数

形状像一次线性函数的:

  • 先做散点图,把现有的数据画出来
  • 然后如果形状类似一次线性函数,那么先假设y=kx+b形式的函数。
  • 利用已知的x,y求出k和b,然后画图把两个数据都展示出来
  • 再求出SSE误差平方和,判断是否可以
%% 求拟合函数
clc;clear
load data1
n=size(x,1);
xlabel('x的值')
ylabel('y的值')
k=(n * sum(x .* y) - sum(y) * sum(x))/(n * sum(x .* x) - sum(x) * sum(x))
b=(sum(x .* x) * sum(y) - sum(x) * sum(x .* y))/(n * sum(x .* x) - sum(x) * sum(x))
% k =
% 
%     2.0948
% b =
% 
%    -1.0548
    
% 画图
plot(x,y,'o');
hold on
grid on

f=@(x)k*x+b; % 匿名函数
fplot(f,[min(x),max(x)])
legend('样本数据','拟合函数','location','SouthEast')

% 评价拟合函数
y_hat=k*x+b;
SST=sum((y-mean(y)) .^ 2) % 总体平方和
SSE=sum((y-y_hat) .^ 2) % 误差平方和
SSR=sum((y_hat - mean(y)) .^ 2) % 回归平方和

R_2=SSR/SST % 拟合优度
% SST =
% 
%   156.8863
% 
% 
% SSE =
% 
%     5.7281
% 
% 
% SSR =
% 
%   151.1583
% 
% 
% R_2 =
% 
%     0.9635

第二种方法:

利用cftool作图。

  • 多选择几个模式比较
  • 多项式逼近选择维度看看
  • 作出表格,写出结论

相关文章

网友评论

      本文标题:[数学建模第四讲] 拟合算法

      本文链接:https://www.haomeiwen.com/subject/hklexhtx.html