MATLAB曲线拟合;数据插值


> 人口增长预测问题。向量x和y表示从1790~2010年的每隔10年的某国人口普查数据,根据人口普查数据利用曲线拟合方法估计2016年和2020年的人口,并画出从1790~2010年人口数曲线图。


1. 插值的方法:

t=1790:10:2010;
p=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6, 50.2,63.0,76.0,92.0,105.7,122.8,131.7,150.7,179.3,203.2,226.5,248.7,281.4,308.7];
interp1(t, p, 2016)
interp1(t, p, 2020)
x=1790:1:2010;
y=interp1(t, p, x, 'spline'); %样条插值
plot(t, p, ':o', x, y, '-r')

2. 曲线拟合的方法

clc,clear,close all
t=1790:10:2010;
p=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6, 50.2,63.0,76.0,92.0,105.7,122.8,131.7,150.7,179.3,203.2,226.5,248.7,281.4,308.7];
P=polyfit(t, p, 2); %2次多项式拟合即可,否则出现过拟合
f=polyval(P,t);
subplot(3,1,1)
plot(t,f,'ro'); axis([1770 2020 0 319])
t1=1790:10:2016;
t2=1790:10:2020;
subplot(3,1,2)
f1=polyval(P,t1);
plot(t1,f1,'go'); axis([1770 2020 0 319])
disp("2016年的人口约为:")
disp(f1(:,length(f1)))
subplot(3,1,3);
f2=polyval(P,t2);
plot(t2,f2,'bo'); axis([1770 2021 0 350])
disp("2020年的人口约为:")
disp(f2(:,length(f2)))

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/wayne6515/article/details/106150594