Matlab实现最小二乘法

最小二乘法

最小二乘法是数学建模中“预测类”题目中最常见的拟合算法之一。

最小二乘法的“几何解释”

在这里插入图片描述

求解“最小二乘法”

在这里插入图片描述

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)]);

实例应用

题目:

题目

代码实现:
%拟合算法 作业

load data.mat;

[n,m]=size(data);

%计算“斜率”和“截距”
k=((n*sum(data(:,1).*data(:,2)))-sum(data(:,2)*sum(data(:,1))))/((n*sum(data(:,1).^2))-(sum(data(:,1))).^2);
b=((sum(data(:,1).^2)*sum(data(:,2)))-(sum(data(:,1))*sum(data(:,1).*data(:,2))))/((n*sum(data(:,1).^2))-(sum(data(:,1))).^2);

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

%拟合值
nhdata(:,1)=data(:,1);
nhdata(:,2)=data(:,1).*k+b;

%计算  总体平方和 SST
SST=sum((data(:,2)-mean(data(:,2))).^2);

%计算  误差平方和 SSE
SSE=sum((data(:,2)-nhdata(:,2)).^2);

%计算  回归平方和 SSR
SSR=sum((nhdata(:,2)-mean(data(:,2))).^2);

%拟合优度
R=SSR/SST;



%画图
fplot(y,[2,8]);
hold on;
xlabel(['拟合优度:',num2str(R)]);
plot(data(:,1),data(:,2),'o');
grid on;
原始数据图:

原始数据

拟合后的数据:

拟合后的数据

Matlab中的“工具箱实现”

Step1. 打开“拟合工具箱”
在这里插入图片描述
Step2. 选择要拟合的数据
在这里插入图片描述
Step3.选择“拟合方式”
在这里插入图片描述

  • 10
    点赞
  • 133
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Rayme629

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

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

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

打赏作者

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

抵扣说明:

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

余额充值