************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.
Type | Intent | Optional | 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) |