数学建模学习笔记(清风)——拟合算法

目录

基础部分:

插值算法的局限性:

拟合算法适用范围:

步骤:

注意事项:

matlab相关代码:最小二乘法(推荐使用matlab曲线拟合工具cftool)

matlab学习部分:

基础部分:

插值算法的局限性:

        有很多点的时候,分段函数会非常复杂

拟合算法适用范围:

        已知很多点,去找一个简单的函数拟合数据

步骤:

        1、确定拟合曲线

        2、利用最小二乘或者cftool工具计算出拟合函数

        3、对拟合进行评价(利用R^2,或者SSE)

注意事项:

        对于线性函数的理解,针对参数为线性

matlab相关代码:最小二乘法(推荐使用matlab曲线拟合工具cftool

plot(x, y, 'x');

xlable('x')

ylable('y')

n = size(x, 1);

k = (n*sum(x.*y)-sum(x)*sum(y))/(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))

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

matlab学习部分:

xlable函数用法:xlable('x轴的标签')

ylable函数用法:ylable('y轴的标签')

hold on命令:继续在已有的图象上画图

grid on命令:显示网格线

fplot函数的用法:

        f = 2@(x) k*x+b;

        fplot(函数的因变量, [定义域]);   用于画匿名一元函数的图像

randi函数用法:生成均匀分布的随机整数

randi(max, r, c); 定义一个最小值和最大值分别为1和max的r行c列随机整数矩阵

randi([a, b], r, c); 定义一个最小值和最大值分别为a和b的r行c列随机整数矩阵

rand函数用法:生成0-1均匀分布的随机数

        rand(r, c); 定义一个最小值和最大值分别为0和1的r行c列的随机矩阵

        a + (b-a) * rand(r, c); 定义一个最小值和最大值分别为a和b的r行c列的随机矩阵

normrnd函数用法:

        normrnd(均值x, 标准差s, r, c); 生成一个均值为x,标准差为s的正态分布随机矩阵

roundn函数用法:

        roundn(a, k); 将第k位上四舍五入,k = 0对应个位,整数向左,负数向右

你可能感兴趣的:(数学建模,算法,matlab,开发语言)