From 40e5a5811c6ffce9b0974e93cdd927cbcf60c157 Mon Sep 17 00:00:00 2001 From: Joe Hunkeler Date: Tue, 11 Aug 2015 16:51:37 -0400 Subject: Repatch (from linux) of OSX IRAF --- math/deboor/progs/prog3.f | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 math/deboor/progs/prog3.f (limited to 'math/deboor/progs/prog3.f') diff --git a/math/deboor/progs/prog3.f b/math/deboor/progs/prog3.f new file mode 100644 index 00000000..337fe7ef --- /dev/null +++ b/math/deboor/progs/prog3.f @@ -0,0 +1,44 @@ +chapter ix. example comparing the b-representation of a cubic f with +c its values at knot averages. +c from * a practical guide to splines * by c. de boor +c + integer i,id,j,jj,n,nm4 + real bcoef(23),d(4),d0(4),dtip1,dtip2,f(23),t(27),tave(23),x +c the taylor coefficients at 0 for the polynomial f are + data d0 /-162.,99.,-18.,1./ +c +c set up knot sequence in the array t . + n = 13 + do 5 i=1,4 + t(i) = 0. + 5 t(n+i) = 10. + nm4 = n-4 + do 6 i=1,nm4 + 6 t(i+4) = float(i) +c + do 50 i=1,n +c use nested multiplication to get taylor coefficients d at +c t(i+2) from those at 0 . + do 20 j=1,4 + 20 d(j) = d0(j) + do 21 j=1,3 + id = 4 + do 21 jj=j,3 + id = id-1 + 21 d(id) = d(id) + d(id+1)*t(i+2) +c +c compute b-spline coefficients by formula (9). + dtip1 = t(i+2) - t(i+1) + dtip2 = t(i+3) - t(i+2) + bcoef(i) = d(1) + (d(2)*(dtip2-dtip1)-d(3)*dtip1*dtip2)/3. +c +c evaluate f at corresp. knot average. + tave(i) = (t(i+1) + t(i+2) + t(i+3))/3. + x = tave(i) + 50 f(i) = d0(1) + x*(d0(2) + x*(d0(3) + x*d0(4))) +c + print 650, (i,tave(i), f(i), bcoef(i),i=1,n) + 650 format(45h i tave(i) f at tave(i) bcoef(i)// + * (i3,f10.5,2f16.5)) + stop + end -- cgit