预测美国人口

用最温和的阶多项式是推断数据的这个例子显示的是有风险的,不可靠的。

这个例子是不是MATLAB®老。它开始作为一个练习对于数学计算的计算机方法通过福赛斯,Malcolm和Moler,由Prentice霍尔于1977年出版。

现在,MATLAB使得它更容易改变的参数和看到的结果,但基本数学原理是不变的。

创建和绘制与美国人口普查数据两个向量1910至2000年。

% 时间间隔T =(1910:10:2000)';%人口P = [91.972 105.711 123.203 131.669 150.697...179.323 203.212 226.505 249.633 281.422]';情节%图(T,P,“博”);轴([1910 2020 0 400]);标题(“美国1910年至2000年的人口”);ylabel('百万');

什么是您在2010年的人口猜测?

p
p =10×191.9720 105.7110 123.2030 131.6690 150.6970 179.3230 203.2120 226.5050 249.6330 281.4220

用多项式拟合数据Ť并用它在推算人口T = 2010。通过求解涉及一个11×11 Vandermonde矩阵方程的线性系统,包含元素作为标度的时​​间权力获得在多项式的系数,A(I,J)= S(I)^(N-j)的

N =长度(T);S =(叔1950)/ 50;A =零(N);A(:,结束)= 1;对于。J = N-1:-1:1个A(:,J)= S * A(:,J + 1);结束

获取系数C对于次多项式d适合数据p通过解方程涉及最后一个线性系统d + 1的Vandermonde矩阵的列:

A(:,N-d:N)×C〜= P

  • 如果d <10比未知数然后更多的方程存在,和最小二乘解是适当的。

  • 如果d == 10,那么你就可以准确地解方程和多项式实际上插入数据。

在这两种情况下,使用反斜杠运营商解决系统。对于三次拟合的系数为:

C = A(:,N-3:N)\ p
C =4×1-5.7042 27.9064 103.1528 155.1017

现在评估在每年1910至2010年的多项式得出结果。

V =(1910:2020)';X =(V-1950)/ 50;W =(二零一零年至1950年)/ 50;Y = polyval(C,X);Z = polyval(C,W);保持图(V,Y,“K-”);图(2010年,Z,'KS');文本(2010,Z + 15,num2str(Z));保持

比较三次拟合与四次。请注意,外插点是非常不同的。

C = A(:,N-4:N)\磷;Y = polyval(C,X);Z = polyval(C,W);保持图(V,Y,“K-”);图(2010年,Z,'KS');文本(2010,Z-15,num2str(Z));保持

随着程度的增加,外推变得更加不稳定。

CLA图(T,P,“博”)保持轴([1910 2020 0 400])的颜色= HSV(8);标签= {'数据'};对于d = 1:8 [Q,R] = QR(A(:,N-d:N));R = R(1:d + 1,:);Q = Q(:,1:d + 1);C = r \(Q'* P);%同C = A(:,N-d:N)\磷;Y = polyval(C,X);Z = polyval(C,11);图(V,Y,'颜色',颜色(d,:));标签{端+ 1} = [“度=”int2str(d)];结束传说(标签,'位置''西北')保持

也可以看看