目录
拟合算法定义
拟合好坏
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.在现在这个文件中调用这个函数得到参数的拟合值和预测的效果
如有疑问,欢迎指出。欢迎大家购买清风老师的数学建模课程。



