栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

跟着清风学建模——拟合算法介绍及mathlab代码实现

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

跟着清风学建模——拟合算法介绍及mathlab代码实现

目录

拟合算法定义

拟合好坏

mathlab代码部分:

mathlab拟合工具使用


拟合算法定义

我们将随机的样本点为(xi,i),i=1,2,...,n,设置拟合曲线为y=kx+b。问题转为k和b值为什么的时候样本点和拟合曲线最接近。

第一种定义,

第二种定义

 

 我们往往使用第二种方法,第一种方法有绝对值,不容易求导,因此计算较为复杂。

为什么不用四次方?

(1)避免极端数据对拟合数据的影响

(2)最小二乘法得到的结果和极大似然法估计一样。

不用奇数次数:误差正负会相抵。

 

令L等于上式,先要找k,b使得L最小。

拟合好坏

评价拟合的好坏  用拟合优度

 

 

 拟合优度越接近1,说明误差平方和越接近0,误差越小说明拟合的越好。

(注:R2仅适用于线性函数(对参数线性))

mathlab代码部分:
clear;clc
load  data1 %加载文件
plot(x,y,'o')%简单画图
% 给x和y轴加上标签
xlabel('x的值')
ylabel('y的值')
n = size(x,1);%计算x的个数
k = (n*sum(x.*y)-sum(x)*sum(y))/(n*sum(x.*x)-sum(x)*sum(x))%计算k值
b = (sum(x.*x)*sum(y)-sum(x)*sum(x.*y))/(n*sum(x.*x)-sum(x)*sum(x))%计算b值
hold on % 继续在之前的图形上来画图形
grid on % 显示网格线

f=@(x) k*x+b;%使用匿名函数
fplot(f,[2.5,7]);%匿名函数画图
legend('样本数据','拟合函数','location','SouthEast')%标签

y_hat = k*x+b; % y的拟合值
SSR = sum((y_hat-mean(y)).^2)  % 回归平方和
SSE = sum((y_hat-y).^2) % 误差平方和
SST = sum((y-mean(y)).^2) % 总体平方和
SST-SSE-SSR   % 5.6843e-14  =   5.6843*10^-14   matlab浮点数计算的一个误差
R_2 = SSR / SST

mathlab拟合工具使用

 

保存图片 点击左上角文件如何点击generate code得到一个mathlab文件

1.此时左边的result一览得到了拟合结果
 2.依次点击拟合工具箱的菜单栏最左边的文件—Generate Code(导出代码到时候可以放在你的论文附录),可以得到一个未命名的脚本文件
3.在这个打开的脚本中按快捷键Ctrl+S,将这个文件保存到当前文件夹。
4.在现在这个文件中调用这个函数得到参数的拟合值和预测的效果


如有疑问,欢迎指出。欢迎大家购买清风老师的数学建模课程。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1001535.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号