一.拟合所需函数

这里我们主要考虑用多项式函数去进行曲线拟合

(1)polyfit 函数

功能: 求得结果为最小二乘法拟合的多项式系数。

格式:

p = polyfit(X,Y,n);

X,Y为进行拟合的样本数据,类型为矩阵。n为拟合的多项式次数,看散点图判断拟合次数。p为拟合后返回的多项式系数矩阵。

[p,s] = polyfit(X,Y,n);

返回两个结果,s为采样点的误差数据

[p,s,mu] = polyfit(X,Y,n);

返回三个结果,mu是一个二元向量,其中mu(1)是X的平均值即mean(X), mu(2)是X的标准差即std(X)。

(2)polyval 函数

功能: 求得在上面函数所得的p系数下,某一点预测的函数值。

格式:

polyval(p,15);

返回值为X=15时的函数值。

二.举例(预测人口)

(1)问题数据

某地区2010-2020人口数据:

x20102011201220132014201520162017201820192020
y3.95.37.29.612.917.123.231.438.650.263.0

(2)求解

我们先分步求解,后面有完整代码

【1】先查看散点图趋势

x=2010:1:2020;
y=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6, 50.2,63.0];
plot(x,y,'*');

在这里插入图片描述
【2】进行多项式函数拟合(这里可以尝试不同的次数择优选取)

p = polyfit(x,y,2);
plot(x,y,'*',x,polyval(p,x))

在这里插入图片描述

可以看到结果基本吻合

【3】可以继续进行预测未来的人口

polyval(p,2021)
ans =

   74.4776

(3)完整代码

x=2010:1:2020;
y=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6, 50.2,63.0];
p = polyfit(x,y,2);
plot(x,y,'*',x,polyval(p,x))
polyval(p,2021);

(4)注意点

我们在选取数据时,并不是数据越多越好。

在选取数据时,同时要考虑到实际情况,就比如说对人口预测,可能前10年发生了天灾人祸使得前十年的数据严重不符,那么这一阶段的数据就可以舍弃。

曲线拟合作用

预测趋势

总结规律

估算数据

Logo

长江两岸老火锅,共聚山城开发者!We Want You!

更多推荐