newnot Subroutine

subroutine newnot(break, coef, l, k, brknew, lnew, coefg)

************80

! NEWNOT returns LNEW+1 knots which are equidistributed on (A,B).

Discussion:

The knots are equidistributed on (A,B) = ( BREAK(1), BREAK(L+1) ) 
with respect to a certain monotone function G related to the K-th root of 
the K-th derivative of the piecewise polynomial function F whose 
piecewise polynomial representation is contained in BREAK, COEF, L, K.

Method:

The K-th derivative of the given piecewise polynomial function F does 
not exist, except perhaps as a linear combination of delta functions.

Nevertheless, we construct a piecewise constant function H with 
breakpoint sequence BREAK which is approximately proportional 
to abs ( d**K(F) ).

Specifically, on (BREAK(I), BREAK(I+1)),

      abs(jump at BREAK(I) of PC)     abs(jump at BREAK(I+1) of PC)
  H = ---------------------------  +  ----------------------------
      BREAK(I+1) - BREAK(I-1)         BREAK(I+2) - BREAK(I)

with PC the piecewise constant (K-1)st derivative of F.

Then, the piecewise linear function G is constructed as

  G(X) = integral ( A <= Y <= X )  H(Y)**(1/K) dY,

and its piecewise polynomial coefficients are stored in COEFG.

Then BRKNEW is determined by

  BRKNEW(I) = A + G**(-1)((I-1)*STEP), for I = 1:LNEW+1,

where STEP = G(B) / LNEW and (A,B) = ( BREAK(1), BREAK(L+1) ).

In the event that PC = d**(K-1)(F) is constant in ( A, B ) and
therefore H = 0 identically, BRKNEW is chosen uniformly spaced.

If IPRINT is set positive, then the piecewise polynomial coefficients
of G will be printed out.

Modified:

14 February 2007

Author:

Carl DeBoor

Reference:

Carl DeBoor,
A Practical Guide to Splines,
Springer, 2001,
ISBN: 0387953663,
LC: QA1.A647.v27.

Parameters:

Input, real ( kind = 8 ) BREAK(L+1), real ( kind = 8 ) COEF(K,L), 
integer ( kind = 4 ) L, integer K, the piecewise polynomial representation
of a certain function F of order K.  Specifically,
  d**(k-1) F(X) = COEF(K,I) for BREAK(I) <= X < BREAK(I+1).

Input, integer ( kind = 4 ) LNEW, the number of intervals into which the 
interval (A,B) is to be divided by the new breakpoint sequence BRKNEW.

Output, real ( kind = 8 ) BRKNEW(LNEW+1), the new breakpoint sequence.

Output, real ( kind = 8 ) COEFG(2,L), the coefficient part of the piecewise
polynomial representation BREAK, COEFG, L, 2 for the monotone piecewise 
linear function G with respect to which BRKNEW will be equidistributed.

Arguments

Type IntentOptional Attributes Name
real(kind=8) :: break(l+1)
real(kind=8) :: coef(k,l)
integer(kind=4) :: l
integer(kind=4) :: k
real(kind=8) :: brknew(lnew+1)
integer(kind=4) :: lnew
real(kind=8) :: coefg(2,l)

Calls

proc~~newnot~2~~CallsGraph proc~newnot~2 newnot evnnot evnnot proc~newnot~2->evnnot