Application Center - Maplesoft

App Preview:

Global Population from 1804 to 2015

You can switch back to the summary page by clicking here.

Learn about Maple
Download Application




 

February 2016

 

                                 Global Population from 1804 to 2015

 

                                         Univ.-Prof. Dr.-Ing. habil. Josef  BETTEN

                                                   RWTH Aachen University

                          Mathematical Models in Materials Science and Continuum Mechanics

                                                             Augustinerbach 4-20

                                                        D-52056  A a c h e n ,  Germany

 

                                                        <betten@mmw.rwth-aachen.de>

 

Abstract

 

This worsheet is concerned with the development of  the global population during the period of  1804 - 2015. In 1804 or 2015 the population is 10^9  or  7.4*10^9, respectively. The given data has been interpolated by the cubic spline function.

Several nonlinear model functions to data have been suggested and tested by using error norms.

The arguments in the approximation functions are given by:

 

restart:

tau(xi):=(xi-1804)/211; tau(1804):=0; tau(2015):=7.4;

tau(xi) := xi/211-1804/211

tau(1804) := 0

tau(2015) := 7.4

(1)

 

Cubic Spline Interpolation

 

restart:

with(Statistics):

DATA:=   [1804,1],[1922,2],[1955,3],[1974,4],[1987,5],        [1999,6],[2010,7],[2015,7.4];

DATA := [1804, 1], [1922, 2], [1955, 3], [1974, 4], [1987, 5], [1999, 6], [2010, 7], [2015, 7.4]

(2)

X:=array([1804,1922,1955,1974,1987,1999,2010,2015]);

X := Vector[row](8, {(1) = 1804, (2) = 1922, (3) = 1955, (4) = 1974, (5) = 1987, (6) = 1999, (7) = 2010, (8) = 2015})

(3)

whattype(X);

symbol

(4)

Y:=array([seq(i,i=1..7),7.4]);

Y := Vector[row](8, {(1) = 1, (2) = 2, (3) = 3, (4) = 4, (5) = 5, (6) = 6, (7) = 7, (8) = 7.4})

(5)

whattype(Y);

symbol

(6)

with(CurveFitting):

Sp(x):=Spline([DATA],x,degree=3):

alias(th=thickness,co=color):

p[1]:=plot([DATA],x=1800..2016,0..8,th=3,co=black, style=point,symbol=cross,symbolsize=45,axes=boxed,                  title="Global Population * 10^9"):

p[2]:=plot(Sp(x),x=1800..2016,th=3,co=black):

p[3]:=plots[textplot]([1870,5,`Cubic Spline Interpolation`]):

plots[display](seq(p[k],k=1..3));

 

Approximation  y(x):  Three Parameter Single Exponential Groth

 

f:=(t,a,b,c) -> a + b*exp(c*(t-1804)/211);

f := proc (t, a, b, c) options operator, arrow; a+b*exp((1/211)*(c*(t-1804))) end proc

(7)

 

y:=unapply(evalf(NonlinearFit(f(t,a,b,c),X,Y,t)),t);

y := proc (t) options operator, arrow; HFloat(0.7806675003372452)+HFloat(0.1574997854294215)*exp(HFloat(0.017816644051606798)*t-HFloat(32.14122586909866)) end proc

(8)

y(x):=simplify(subs(t=x,y(t)));

y(x) := .780667500337245+.157499785429422*exp(0.178166440516068e-1*x-32.1412258690987)

(9)

y(1804):=evalf(subs(x=1804,y(x)));

y(1804) := .938167285766667

(10)

y(1804)[data]:=1;

y(1804)[data] := 1

(11)

y(2015):=evalf(subs(x=2015,y(x)));

y(2015) := 7.54038238103267

(12)

y(2015)[data]:=7.4;

y(2015)[data] := 7.4

(13)

 

alias(th=thickness,co=color):

p[1]:=plot([DATA],x=1800..2016,0..8,axes=boxed, th=3,co=black,style=point,symbol=cross,symbolsize=45):

p[2]:=plot(Sp(x),x=1800..2016,th=3,co=black,                        title="Global Population * 10^9"):

p[3]:=plot(y(x),x=1800..2016,th=2,co=black):

p[4]:=plots[textplot]({[1870,7,`Cubic Spline Interpolation`],  [1870,6,`Nonlinear Regression`],[1870,5,`Approximation  y(x)`]}):

plots[display](seq(p[k],k=1..4));

 

The  L[2]  error norm between the cubic spline interpolation and the approximation  y(x)  can be expressed as:

 

L[2]:=                                                   sqrt((1/211)*Int((SPLINE-ypsilon(x))^2,x=1804..2015))= evalf(sqrt((1/211)*int((Sp(x)-y(x))^2,x=1804..2015)));

L[2] := (1/211)*(211^(1/2)*(Int((SPLINE-ypsilon(x))^2, x = 1804 .. 2015))^(1/2)) = 0.7131679787e-1

(14)

 

The  l[2]  error norm  of  the approximation  y(x)  with respect to the data is given by:

 

with(linalg):

for i from 1 to 8 do              v[i]:=evalf(subs(x=DATA[i][1],y(x))-DATA[i][2]) od:

V:=vector([seq(v[i],i=1..8)]);

V := Vector[row](8, {(1) = -0.618327142333333e-1, (2) = 0.698816095127985e-1, (3) = .101630229137681, (4) = 0.366637806652945e-1, (5) = -.114706301969693, (6) = -.136267597200296, (7) = -0.357518828930905e-1, (8) = .140382381032667})

(15)

l[2]:=                                      (1/sqrt(number_of_points))*Norm(V,2)=                evalf((1/sqrt(8))*norm(V,2));

l[2] := Norm(V, 2)/number_of_points^(1/2) = 0.955846901570484e-1

(16)

 

The above approximation  y(x)  could be improved by introducing the model function  z(x) , where the boundary conditions  z(1804) = 1  and  z(2015) = 7.4  are apriori fulfilled exactly.

 

z(x):= 1-(6.4/(exp(d)-1))*(1-exp(d*(x-1804)/211));

 

z(x) := 1-6.4*(1-exp(d*(x-1804)/211))/(exp(d)-1)

(17)

z(x):=evalf(NonlinearFit(z(x),X,Y,x));

z(x) := .835636845976257+.164363154023743*exp(0.174755092048838e-1*x-31.5258186056104)

(18)

z(1804):=simplify(subs(x=1804,z(x)));

z(1804) := 1.

(19)

z(1804)[data]:=1;

z(1804)[data] := 1

(20)

z(2015):=simplify(subs(x=2015,z(x)));

z(2015) := 7.399999999

(21)

z(2015)[data]:=7.4;

z(2015)[data] := 7.4

(22)

 

Note:  With  Digits = default we arrive at the exact boundary conditions.

 

alias(th=thickness,co=color):

p[1]:=plot([DATA],x=1800..2016,0..8,axes=boxed, th=3,co=black,style=point,symbol=cross,symbolsize=45):

p[2]:=plot(Sp(x),x=1800..2016,th=3,co=black,                        title="Global Population  *10^9"):

p[3]:=plot(z(x),x=1800..2016,th=2,co=black):

p[4]:=plots[textplot]({[1870,7,`Cubic Spline Interpolation`],  [1870,6,`Nonlinear Regression`],                           [1870,5,`Approximation  z(x)`]}):

plots[display](seq(p[k],k=1..4));

 

The  M[2]  error norm  between the spline interpolation and the approximation  z(x)  can be expressed as:

 

M[2]:=                                                   sqrt((1/211)*Int((SPLINE -Z(xi))^2,xi=1804..2015))=  evalf(sqrt((1/211)*int((Sp(x)-z(x))^2,x=1804..2015)));

M[2] := (1/211)*(211^(1/2)*(Int((SPLINE-Z(xi))^2, xi = 1804 .. 2015))^(1/2)) = .1149950158

(23)

 

The  m[2]  error norm  of  the approximation  z(x)  with respect to the data is given by:

 

with(linalg):

for i from 1 to 8 do              w[i]:=evalf(subs(x=DATA[i][1],z(x))-DATA[i][2]) od:

W:=vector([seq(w[i],i=1..8)]);

W := Vector[row](8, {(1) = 0., (2) = .127949205857758, (3) = .136133288978813, (4) = 0.420714970464786e-1, (5) = -.140102365694109, (6) = -.201179753302434, (7) = -.149233220736058, (8) = -0.8060458967e-9})

(24)

m[2]:=                                      (1/sqrt(number_of_points))*Norm(W,2)=               evalf((1/sqrt(8))*norm(W,2));

m[2] := Norm(W, 2)/number_of_points^(1/2) = .121986578478900

(25)

 

Exponential Groth Multiplied with  [(t-1804)/211]^2  is the next Example.

 

h:=(t,a)->1+(6.4/exp(a))*(((t-1804)/211)^2)*exp(a*(t-1804)/211);

h := proc (t, a) options operator, arrow; 1+6.4*(((1/211)*t-1804/211)^2)*exp((1/211)*(a*(t-1804)))/exp(a) end proc

(26)

 

r:=unapply(evalf(NonlinearFit(h(t,a),X,Y,t)),t);

r := proc (t) options operator, arrow; 1.+HFloat(1.3540749879373957)*(0.4739336493e-2*t-8.549763033)^2*exp(HFloat(0.007361039975759111)*t-HFloat(13.279316116269438)) end proc

(27)

r(x):=subs(t=x,r(t));

r(x) := 1.+1.35407498793740*(0.4739336493e-2*x-8.549763033)^2*exp(0.736103997575911e-2*x-13.2793161162694)

(28)

r(1804):=evalf(subs(x=1804,r(x)));

r(1804) := 1.

(29)

r(1804)[data]:=1;

r(1804)[data] := 1

(30)

r(2015):=evalf(subs(x=2015,r(x)));

r(2015) := 7.39999999975997

(31)

r(2015)[data]:=7.4;

r(2015)[data] := 7.4

(32)

 

alias(th=thickness,co=color):

p[1]:=plot([DATA],x=1800..2016,0..8,axes=boxed, th=3,co=black,style=point,symbol=cross,symbolsize=45):

p[2]:=plot(Sp(x),x=1800..2015,th=3,co=black,                        title="Global Population  *10^9"):

p[3]:=plot(r(x),x=1800..2016,th=2,co=black):

p[4]:=plots[textplot]({[1870,7,`Cubic Spline Interpolation`],   [1870,6,`Nonlinear Regression`],[1870,5,`Approximation  r(x)`]}):

plots[display](seq(p[k],k=1..4));

 

The  N[2]  error norm  between the cubic spline interpolation and the approximation  r(x)  can be expressed as:

 

N[2]:=                                                   sqrt((1/211)*Int((SPLINE - R(xi)),xi=1804..2015))=                                                                 evalf(sqrt((1/211)*int((Sp(x)-r(x))^2,x=1804..2015)));

 

N[2] := (1/211)*(211^(1/2)*(Int(SPLINE-R(xi), xi = 1804 .. 2015))^(1/2)) = 0.6618117457e-1

(33)

 

The  n[2]  error norm  of  the approximation  r(x)  with respect to the data is given by:

 

with(linalg):

for i from 1 to 8 do              q[i]:=evalf(subs(x=DATA[i][1],r(x))-DATA[i][2]) od:

Q:=vector([seq(q[i],i=1..8)]);

Q := Vector[row](8, {(1) = 0., (2) = 0.941833345058884e-2, (3) = .107450662525681, (4) = 0.721448291481095e-1, (5) = -0.825344101343100e-1, (6) = -.141138248878021, (7) = -.120164049584496, (8) = -0.2400337706e-9})

(34)

n[2]:=                                      (1/sqrt(number_of_points))*Norm(Q,2)=                 evalf((1/sqrt(8))*norm(Q,2));

n[2] := Norm(Q, 2)/number_of_points^(1/2) = 0.851546821888804e-1

(35)

 

The calculated  error norms  { L[2], l[2] },   { M[2], m[2] },  and  { N[2], n[2] }  show that, respectively, the approximations  y(x),  z(x),  and  r(x)  are suitable model functions to the given data.

 

Note:  In this worksheet we have  evaluated  the approximations  using floating-point arithmetik  (evalf)  with  high precision, with  Digits = default. For  Digits < ten,  e.g. equal to four, we arrive at nicer looking formulae. However, the results, e.g. the calculated  error norms or the boundary conditions  could be wrong! Let's show some examples:

 

y(x)[DIGITS=4]:=evalf(y(x),4);

y(x)[DIGITS = 4] := .7807+.1575*exp(0.1782e-1*x-32.14)

(36)

y(1804)[DIGITS=4]:=evalf(subs(x=1804,y(x)[DIGITS=4]),4);

y(1804)[DIGITS = 4] := .9398

(37)

y(1804)[data]:=1;

y(1804)[data] := 1

(38)

y(2015)[DIGITS=4]:=evalf(subs(x=2015,y(x)[DIGITS=4]),4);

y(2015)[DIGITS = 4] := 7.613

(39)

y(2015)[data]:=7.4;

y(2015)[data] := 7.4

(40)

L[2][DIGITS=4]:=               sqrt((1/211)*Int((SPLINE-APPROX)^2,x=1804..2015))= evalf(sqrt((1/211)*int((Sp(x)-y(x)[DIGITS=4])^2,x=1804..2015)),4);

L[2][DIGITS = 4] := (1/211)*(211^(1/2)*(Int((SPLINE-APPROX)^2, x = 1804 .. 2015))^(1/2)) = 0.7450e-1

(41)

L[2][DIGITS=default]:=0.07131679787;

L[2][DIGITS = default] := 0.7131679787e-1

(42)

with(linalg):

for i from 1 to 8 do   v_[i]:=evalf(subs(x=DATA[i][1],y(x)[DIGITS=4])-DATA[i][2]) od:

V_:=vector([seq(v_[i],i=1..8)]);

V_ := Vector[row](8, {(1) = -0.606492162e-1, (2) = 0.79849967e-1, (3) = .119809215, (4) = 0.62362583e-1, (5) = -0.82137447e-1, (6) = -0.95736570e-1, (7) = 0.13777423e-1, (8) = .194637721})

(43)

l[2][DIGITS=4]:=                           (1/sqrt(number_of_points))*Norm(V_,2)=            evalf((1/sqrt(8))*norm(V_,2),4);

l[2][DIGITS = 4] := Norm(V_, 2)/number_of_points^(1/2) = .1014

(44)

l[2][DIGITS=default]:=0.0955846901570484;

l[2][DIGITS = default] := 0.955846901570484e-1

(45)

 

The next example is concerned with  z(x):

 

z(x)[DIGITS=4]:=evalf(z(x),4);

z(x)[DIGITS = 4] := .8356+.1644*exp(0.1748e-1*x-31.53)

(46)

z(1804)[DIGITS=4]:=evalf(subs(x=1804,z(x)[DIGITS=4]));

z(1804)[DIGITS = 4] := 1.000645713

(47)

z(1804)[data]:=1;

z(1804)[data] := 1

(48)

z(2015)[DIGITS=4]:=evalf(subs(x=2015,z(x)[DIGITS=4]));

z(2015)[DIGITS = 4] := 7.433472203

(49)

z(2015)[data]:=7.4;

z(2015)[data] := 7.4

(50)

M[2][DIGITS=4]:=               sqrt((1/211)*Int((SPLINE-APPROX)^2,x=1804..2015))= evalf(sqrt((1/211)*int((Sp(x)-z(x)[DIGITS=4])^2,x=1804..2015)),4);

M[2][DIGITS = 4] := (1/211)*(211^(1/2)*(Int((SPLINE-APPROX)^2, x = 1804 .. 2015))^(1/2)) = .1131

(51)

M[2][DIGITS=default]:=0.1149950158;

M[2][DIGITS = default] := .1149950158

(52)

 

Another example has been concerned with the approximation  r(x):

 

r(x)[DIGITS=4]:=evalf(r(x),4);

r(x)[DIGITS = 4] := 1.+1.354*(0.4739e-2*x-8.550)^2*exp(0.7361e-2*x-13.28)

(53)

r(1804)[DIGITS=4]:=evalf(subs(x=1804,r(x)[DIGITS=4]),4);

r(1804)[DIGITS = 4] := 1.

(54)

r(1804)[data]:=1;

r(1804)[data] := 1

(55)

r(2015)[DIGITS=4]:=evalf(subs(x=2015,r(x)[DIGITS=4]),4);

r(2015)[DIGITS = 4] := 7.365

(56)

r(2015)[data]:=7.4;

r(2015)[data] := 7.4

(57)

N[2][DIGITS=4]:=               sqrt((1/211)*Int((SPLINE-APPROX)^2,x=1804..2015))= evalf(sqrt((1/211)*int((Sp(x)-r(x)[DIGITS=4])^2,x=1804..2015)),4);

N[2][DIGITS = 4] := (1/211)*(211^(1/2)*(Int((SPLINE-APPROX)^2, x = 1804 .. 2015))^(1/2)) = .1196

(58)

N[2][DIGITS=10]:=0.06809235434;

N[2][DIGITS = 10] := 0.6809235434e-1

(59)

with(linalg):

for i from 1 to 8 do q_[i]:=evalf(subs(x=DATA[i][1],r(x)[DIGITS=4])-DATA[i][2],4) od:

Q_:=vector([seq(q_[i],i=1..8)]);

Q_ := Vector[row](8, {(1) = 0.1354e-5, (2) = 0.6e-2, (3) = .100, (4) = 0.62e-1, (5) = -0.81e-1, (6) = -.182, (7) = -.116, (8) = -0.35e-1})

(60)

n[2][DIGITS=4]:=                           (1/sqrt(number_of_points))*Norm(Q_,2)=             evalf((1/sqrt(8))*norm(Q_,2),4);

n[2][DIGITS = 4] := Norm(Q_, 2)/number_of_points^(1/2) = 0.9233e-1

(61)

n[2][DIGITS=default]:=0.0913215202892018;

n[2][DIGITS = default] := 0.913215202892018e-1

(62)

 

 

The above comparisons show that there are some differences between   Digits = 4  and  Digits = 10  =  default!   

 

 

 

Appendix

 

In the following the development of  the global population from  t = 1500  to  2015  has been calculated.

 

restart:

with(Statistics):

DATA:=                                                                                                          [1500,0.5],[1750,0.60],[1800,0.70],[1850,0.90], [1900,1.50],[1950,2.75],[1960,3.20],[1970,3.68], [1980,4.44],[1990,5.31],[2000,6.13],[2005,6.52],          [2010,6.93],[2015,7.4];

DATA := [1500, .5], [1750, .60], [1800, .70], [1850, .90], [1900, 1.50], [1950, 2.75], [1960, 3.20], [1970, 3.68], [1980, 4.44], [1990, 5.31], [2000, 6.13], [2005, 6.52], [2010, 6.93], [2015, 7.4]

(63)

X:=array([1500,1750,1800,1850,1900,1950, 1960,1970,1980,1990,1000,2005,2010,2015]);

X := Vector[row](14, {(1) = 1500, (2) = 1750, (3) = 1800, (4) = 1850, (5) = 1900, (6) = 1950, (7) = 1960, (8) = 1970, (9) = 1980, (10) = 1990, (11) = 1000, (12) = 2005, (13) = 2010, (14) = 2015})

(64)

whattype(X);

symbol

(65)

Y:=array([0.5,0.60,0.70,0.90,1.50,2.75,3.20,  3.68,4.44,5.31,6.13,6.52,6.93,7.4]);

Y := Vector[row](14, {(1) = .5, (2) = .60, (3) = .70, (4) = .90, (5) = 1.50, (6) = 2.75, (7) = 3.20, (8) = 3.68, (9) = 4.44, (10) = 5.31, (11) = 6.13, (12) = 6.52, (13) = 6.93, (14) = 7.4})

(66)

whattype(Y);

symbol

(67)

with(CurveFitting):

Sp(x):=Spline([DATA],x,degree=3):

alias(th=thickness,co=color):

p[1]:=plot([DATA],x=1500..2015,0..8,th=3,co=black, style=point,symbol=cross,symbolsize=45,axes=boxed,                  title="Global Population  * 10^9"):

p[2]:=plot(Sp(x),x=1500..2015,th=3,co=black):

p[3]:=plots[textplot]([1700,5,`Cubic Spline Interpolation`]):

plots[display](seq(p[k],k=1..3));

 

Exponential Growth with  factor  [(t-1000)/1015)^2]^2  as an example:

 

h:=(t,a) -> 0.5+(6.9/exp(a))*((t-1500)/515)^2*exp(a*(t-1500)/515);

 

h := proc (t, a) options operator, arrow; .5+6.9*(((1/515)*t-300/103)^2)*exp((1/515)*(a*(t-1500)))/exp(a) end proc

(68)

R:=unapply(evalf(NonlinearFit(h(t,a),X,Y,t)),t);

R := proc (t) options operator, arrow; .5+HFloat(0.011721142831017904)*(0.1941747573e-2*t-2.912621359)^2*exp(HFloat(0.012384237669925025)*t-HFloat(18.57635650488754)) end proc

(69)

R(x):=subs(t=x,R(t));

R(x) := .5+0.117211428310179e-1*(0.1941747573e-2*x-2.912621359)^2*exp(0.123842376699250e-1*x-18.5763565048875)

(70)

R(1500):=evalf(subs(x=1500,R(x)));

R(1500) := .500000000000000

(71)

R(1500)[data]:=0.5;

R(1500)[data] := .5

(72)

R(2015):=evalf(subs(x=2015,R(x)));

R(2015) := 7.40000001375334

(73)

R(2015)[data]:=7.4;

R(2015)[data] := 7.4

(74)

 

The boundary conditions are fulfilled exactly.

 

alias(th=thickness,co=color):

p[1]:=plot([DATA],x=1500..2015,0..8,axes=boxed,th=3, co=black,style=point,symbol=cross,symbolsize=45):

p[2]:=plot(Sp(x),x=1500..2015,th=3,                        co=black,title="Global Population  *10^9"):

p[3]:=plot(R(x),x=1500..2015,th=2,co=black):

p[4]:=plots[textplot]({[1700,6,`Cubic Spline Interpolation`],    [1700,5,`Nonlinear Regression`],[1700,4,`Approximation  R(x)`]}):

plots[display](seq(p[k],k=1..4));

 

The  L[2]  error norm  between the cubic spline interpolation and the approximation  R(x) can be expressed as:

 

L[2]:=                                                   sqrt((1/515)*Int((SPLINE -Approximation)^2,x=1500..2015))= evalf(sqrt((1/515)*int((Sp(x)-R(x))^2,x=1500..2015)));

L[2] := (1/515)*(515^(1/2)*(Int((SPLINE-Approximation)^2, x = 1500 .. 2015))^(1/2)) = 0.6103774163e-1

(75)

 

The  l[2]  error norm  of  the approximation  R(x)  with respect to the data is given by:

 

with(linalg):

for i from 1 to 14 do             q[i]:=evalf(subs(x=DATA[i][1],R(x))-DATA[i][2]) od:

Q:=vector([seq(q[i],i=1..14)]);

Q := Vector[row](14, {(1) = 0.1172114283e-19, (2) = -0.389287176067251e-1, (3) = -0.366497382960533e-1, (4) = 0.129844679111111e-1, (5) = 0.193123738315393e-2, (6) = .105392376097047, (7) = 0.857232060100381e-1, (8) = .111562269769442, (9) = -0.542675383081299e-1, (10) = -.226822882193821, (11) = -.228696877736548, (12) = -.158168522563107, (13) = -0.696215832530589e-1, (14) = 0.1375333891e-7})

(76)

l[2]:=                                      (1/sqrt(number_of_points))*Norm(Q,2)=               evalf((1/sqrt(14))*norm(Q,2));

l[2] := Norm(Q, 2)/number_of_points^(1/2) = .110354438506378

(77)

 

Note:  The above approximation  R(x)  and the error norms   L[2],  l[2]  have been calculated with  "high precision" , that is,

with  Digits = default = 10. We should compare these results with  Digits = 4, for instance:

 

R(x)[DIGITS=4]:=evalf(R(x),4);

R(x)[DIGITS = 4] := .5+0.1172e-1*(0.1942e-2*x-2.913)^2*exp(0.1238e-1*x-18.58)

(78)

R(1500)[DIGITS=4]:=evalf(subs(x=1500,R(x)[DIGITS=4]),4);

R(1500)[DIGITS = 4] := .5

(79)

R(1500)[data]:=0.5;

R(1500)[data] := .5

(80)

R(2015)[DIGITS=4]:=evalf(subs(x=2015,R(x)[DIGITS=4]),4);

R(2015)[DIGITS = 4] := 7.346

(81)

R(2015)[data]:=7.4;

R(2015)[data] := 7.4

(82)

L[2][DIGITS=4]:=                sqrt((1/515)*Int((SPLINE-APPROX)^2,x=1500..2015))= evalf(sqrt((1/515)*int((Sp(x)-R(x)[DIGITS=4])^2,x=1500..2015)),4);

L[2][DIGITS = 4] := (1/515)*(515^(1/2)*(Int((SPLINE-APPROX)^2, x = 1500 .. 2015))^(1/2)) = 0.6967e-1

(83)

L[2][DIGITS=10]:=0.06103774163;

L[2][DIGITS = 10] := 0.6103774163e-1

(84)

with(linalg):

for i from 1 to 14 do  q_[i]:=evalf(subs(x=DATA[i][1],R(x)[DIGITS=4])-DATA[i][2]) od:

Q_:=vector([seq(q_[i],i=1..14)]);

Q_ := Vector[row](14, {(1) = 0., (2) = -0.3959059519e-1, (3) = -0.384543258e-1, (4) = 0.83355549e-2, (5) = -0.95572551e-2, (6) = 0.77891337e-1, (7) = 0.53081049e-1, (8) = 0.72855013e-1, (9) = -.100124690, (10) = -.281102785, (11) = -.292892263, (12) = -.227960091, (13) = -.145482063, (14) = -0.82441010e-1})

(85)

l[2][DIGITS=4]:=                           (1/sqrt(number_of_points))*Norm(Q_,2)=            evalf((1/sqrt(14))*norm(Q_,2),4);

l[2][DIGITS = 4] := Norm(Q_, 2)/number_of_points^(1/2) = .1394

(86)

l[2][DIGITS=10]:=0.148135737630170;

l[2][DIGITS = 10] := .148135737630170

(87)

 

We see, the comparisons show that there are some differences between  digits = 4  and  digits = default.

 

Prognosis  for future developments of  the global population *10^9  assuming the above approximation  R(x)  in the period from 2015  to  2050, too:

 

for i in [2015,2025,2035,2050] do                    R(i):=evalf(subs(t=i,R(t)),4) od;

R(2015) := 7.346

R(2025) := 8.527

R(2035) := 9.900

R(2050) := 12.50

(88)

 

We see, within a period of  only 35 years the global population increases by  5*10^9. In contrast: Within the period from 1800  to  1980 , i. e. within  180 years,  the global population has increased by  5*10^9, too.