# Cubic spline (piecewise third-order polynomial which passes through a set of control # points and can be derived there up to the 2nd order: we have smoothness at the points; # the second derivative is set to zero at the endpoints). Other examples here. x = c(1,3,4,5,7); y = c(5,20,29,20,20) Plane(0,8, 0,30); POINT(x,y, "blue") graph1( splinefun(x,y),1,7,"red") # extension of tracking outside the data graph1( splinefun(x,y),0,8,"brown") # Other example: x = c(20,50,80,110,140,170,200,230,260,290,320,350) y = c(13,13.5,12.5,10,9,7.5,6,5,6,7,11,15) Plane(0,400, 0,16); POINT(x,y, "blue") graph1( splinefun(x,y),20,350,"red") # Other example: the cross-sectional area of an artificial basin starting from some # depth measurements BF=4; HF=2 x = (0:10)*2 y = -c(0, 1.8, 2, 4, 4, 6, 4, 3.6, 3.4, 2.8, 0) PLANE(0,20, -7,0); POINT(x,y, "red") graph2( splinefun(x,y),0,20,"black"); POINT(x,y, "red") -integral(splinefun(x,y), 0,20) # for integration see here # 64.63108 I can assume that the area is 65 m^2 # Other example: hours of sunlight # hours of sunlight - Trondheim daylightT = c(4+45/60,7+17/60,10+13/60,13+29/60,16+41/60,19+43/60,20+21/60,17+44/60, 14+30/60,11+23/60,8+9/60,5+20/60) daylightT = c(daylightT,daylightT,4+45/60) days = 0:24 BF=5; HF=3 Grid(0,25, 0,22) gridHC(0:23, "grey60"); gridVC(0:25, "grey60") GridHC((0:4)*6, "grey30"); GridVC((0:4)*6, "grey30") graph2(splinefun(days,daylightT),0,24, "brown") abovey("hours of sunlight") underY("0",0); underY("6",6); underY("12",12); underY("18",18) underX("2010",6); underX("2011",18) # hours of sunlight - Genova daylightG = c(8+55/60,9+50/60,11+10/60,12+46/60,14+13/60,15+18/60,15+29/60,14+39/60, 13+14/60,11+44/60,10+13/60,9+6/60) daylightG = c(daylightG,daylightG,8+55/60) graph2(splinefun(days,daylightG),0,24, "black") # hours of sunlight - Melburne daylightM = c(14+44/60,14,12+56/60,11+41/60,10+33/60,9+43/60,9+35/60,10+12/60,11+16/60, 12+28/60,13+41/60,14+34/60) daylightM = c(daylightM,daylightM,14+44/60) graph2(splinefun(days,daylightM),0,24, "blue") text(25,15,"M",font=2,col="blue") text(25,9,"G",font=2,col="black") text(25,5,"T",font=2,col="brown")