拟合算法

拟合算法

拟合算法是数学建模中常用的算法之一,被用于解决“预测类问题”。

插值和拟合的区别:

在插值算法中,得到的多项式f(x)要经过所有的样本点,但如果样本点太多,那么会导致这个多项式次数的过高,会造成“龙格现象(Runge phenomenon)”。

尽管我们可以选择“分段”的方法来避免“龙格现象(Runge phenomenon)”,但是更多时候我们更倾向于得到一个确定的曲线,尽管这条曲线不能经过每一个样本点,但只要保证误差足够小即可,这就是“拟合的思想”。

我们在拟合算法中使用“最小二乘法”
最小二乘法的几何解释:


在这里插入图片描述

最小二乘法的数学语言阐述:

在这里插入图片描述
在Matlab中有“拟合工具箱”,可以实现“最小二乘法”等拟合算法,也可以通过代码实现。

代码实现:
%拟合算法

%最小二乘法

%确定数据矩阵

c=input('请依次输入数据矩阵的各个元素:');

[a,b]=size(c);

%计算拟合得到的“斜率”和“截距”
k=((a*sum(c(:,1).*c(:,2)))-(sum(c(:,2)).*sum(c(:,1))))/((a*sum(c(:,1).^2))-(sum(c(:,1)).^2));
b=(((sum(c(:,1).^2))*sum(c(:,2)))-(sum(c(:,1)*sum(c(:,1).*c(:,2)))))/((a*sum(c(:,1).^2))-(sum(c(:,1)).^2));

%隐式方程
y=@(x)k*x+b;

%拟合数据
nhc(:,1)=c(:,1);
nhc(:,2)=c(:,1).*k+b;

%y的平均值
avey=mean(c(:,2));

%计算“总体平方和” SST
SST=sum((c(:,2)-avey).^2);

%计算“误差平方和” SSE
SSE=sum((c(:,2)-nhc(:,2)).^2);

%计算“回归平方和” SSR
SSR=sum((nhc(:,2)-avey).^2);

%计算“拟合优度” R
R=SSR/SST;

%取“适当区间”
x_min=min(c(:,1))-1;
x_max=max(c(:,1))+1;

%画图
fplot(y,[x_min ,x_max]);
hold on;
plot(c(:,1),c(:,2),'o');
grid on;
xlabel(['拟合优度:',num2str(R)]);
“工具箱”实现:

在这里插入图片描述

但是,通过拟合得到的数据,与真实数据总是会有“误差”。

在这里插入图片描述

拟合算法中“线性函数”的说明:

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rayme629

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值