Horiz:=[0, 115, 207, 299, 409.4, 455.4, 570.4, 662.4, 731.4, 823.4, 938.4, 1053.4, 1168.4, 1283.4, 1375.4, 1490.4, 1674.4, 1789.4, 1904.4, 2019.4, 2134.4, 2249.4, 2364.4, 2479.4, 2594.4, 2709.4, 2824.4, 2939.4, 3169.4, 3514.4, 3698.4, 3813.4, 3997.4, 4227.4, 4342.4, 4457.4, 4549.4, 4629.9, 4721.9, 4951.9, 5043.9, 5273.9, 5503.9, 5618.9, 5848.9, 6009.9, 6469.9, 6929.9, 7389.9, 7619.9, 8079.9, 8539.9, 8999.9, 9183.9]; Vert:=[0.125, 0.10417, 0.08333, .04167, .001, 0.09375, 0.1510417, 0.10417, 0.09375, 0.072917, 0.072917, 0.08333, 0.0885417, 0.08333, 0.10417, 0.072917, 0.078125, 0.10417, 0.10417, 0.0677083, 0.08333, 0.0625, 0.0677083, 0.08333, 0.08333, 0.0625, 0.0260417, 0.03125, 0.0260417, 0.04167, 0.052083, 0.046875, 0.052083, 0.052083, 0.072917, 0.0989583, 0.1197917, 0.08333, 0.0677083, 0.052083, 0.052083, 0.03125, 0.052083, 0.10417, 0.10417, 0.08333, 0.0260417, 0.03125, 0.03125, 0.04167, 0.04167, 0.04167, 0.0625, 0]; for i from 1 to 54 do VertH[i]:=Vert[i]/(sqrt(1+(Vert[i])^2)) od: VertHeight:=[seq(VertH[i],i=1..54)]; for i from 1 to 54 do HorizL[i]:=1/(sqrt(1+(Vert[i])^2)) od: HorizLen:=[seq(HorizL[i],i=1..54)]; readlib(spline): Height:=x->spline(Horiz,VertHeight,x,linear); Length:=x->spline(Horiz,HorizLen, x, linear); accumulate:=proc(l::list(numeric)) local rsum,i; global _lst; _lst:=l; rsum:=proc(i) global _lst; option remember; if i>1 then _lst[i]+procname(i-1) else _lst[1] fi end; readlib(forget)(rsum); [seq(rsum(i),i=1..nops(l))] end: S:=0: for i to nops(Horiz)-1 do S:=S,evalf(Int(Height(t),t=Horiz[i]..Horiz[i+1])) od: VertInt:=accumulate([S]): T:=0: for i to nops(Horiz)-1 do T:=T,evalf(Int(Length(t),t=Horiz[i]..Horiz[i+1])) od: HorizInt:=accumulate([T]): F:=x->spline(HorizInt,VertInt,x,linear): interface(plotdevice=ps,plotoutput=`hill-plot2.ps`); plot(F(t), t=0..9183.9);