主要内容

美国人口预测

这个例子表明,使用多项式推断数据的温和程度是危险的和不可靠的。

以上这个例子是MATLAB®。它开始作为练习计算机数学计算的方法活力四射,马尔科姆和硅藻土,普伦蒂斯·霍尔出版社于1977年出版。

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

创建两个向量和情节,从1910年到2000年美国人口普查数据。

%的时间间隔t = (1910:10:2000)”;%的人口p = [91.972 105.711 123.203 131.669 150.697179.323 203.212 226.505 249.633 281.422];%的阴谋情节(t, p,“波”);轴((1910 2020 0 400));标题(美国1910 - 2000的人口);ylabel (“数百万”);

图包含一个坐标轴对象。坐标轴对象与标题美国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并用它来推断人口t = 2010。获得多项式的系数通过求解一个线性方程组范德蒙矩阵,涉及一个每组11行11列元素力量的比例,(i, j) = s (i) ^ (n-j)

n =长度(t);s = (t - 1950) / 50;一个= 0 (n);(:,结束)= 1;j = n - 1: 1:1 (:, j) = s。* (:, j + 1);结束

得到的系数c一个多项式的学位d符合的数据p通过求解一个线性方程组,包括最后一个d + 1范德蒙矩阵的列:

(一天::n) * c ~ = p

  • 如果d < 10方程,然后比未知的存在,和一个最小二乘的解决方案是合适的。

  • 如果d = = 10,那么你完全可以解决方程和多项式实际上篡改数据。

在这两种情况下,使用反斜杠符来解决系统。立方合适的系数:

c = (:, n: n) \ p
c =4×1-5.7042 27.9064 103.1528 155.1017

现在计算多项式在从1910年到2010年每年和策划的结果。

v = (1910:2020) ';x = (v - 1950) / 50;50 w = (2010 - 1950) /;y = polyval (c、x);z = polyval (c w);持有情节(v, y,“k -”);情节(2010 z,“ks”);文本(2010 z + 15, num2str (z));持有

图包含一个坐标轴对象。坐标轴对象与标题美国1910 - 2000年,人口ylabel数百万包含4线类型的对象,文本。一个或多个行显示的值只使用标记

比较立方符合四次。请注意,外推点是非常不同的。

c = (: 4 n: n) \ p;y = polyval (c、x);z = polyval (c w);持有情节(v, y,“k -”);情节(2010 z,“ks”);文本(2010年,z-15 num2str (z));持有

图包含一个坐标轴对象。坐标轴对象与标题美国1910 - 2000年,人口ylabel数百万包含7线类型的对象,文本。一个或多个行显示的值只使用标记

随着学历的增加,外推变得更加不稳定。

cla情节(t, p,“波”)举行轴([1910 2020 0 400])颜色= hsv (8);标签= {“数据”};qr d = 1:8 (Q, R) =((一天::n));R = R (1: d + 1,);Q = Q (: 1: d + 1);c = R \ (Q * p);% c =一样(一天::n) \ p;y = polyval (c、x);z = polyval (c, 11);情节(v, y,“颜色”、颜色(d,:));结束标签{+ 1}= (的程度= 'int2str (d)];结束传奇(标签,“位置”,“西北”)举行

图包含一个坐标轴对象。坐标轴对象包含9线类型的对象。一个或多个行显示的值只使用这些对象标记表示数据,程度= 1,学历= 2,= 3,度= 4,度= 5,度= 6,度= 7,度= 8。

另请参阅