美国人口预测
这个例子表明,使用多项式推断数据的温和程度是危险的和不可靠的。
以上这个例子是MATLAB®。它开始作为练习计算机数学计算的方法活力四射,马尔科姆和硅藻土,普伦蒂斯·霍尔出版社于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
并用它来推断人口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));持有从
比较立方符合四次。请注意,外推点是非常不同的。
c = (: 4 n: n) \ p;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);标签= {“数据”};为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)];结束传奇(标签,“位置”,“西北”)举行从